The My Oyster iPhone application has had to be removed from the Apple AppStore due to a request by TranSys citing patent/trademark issues. A newly renamed version (with additional functionality) has been uploaded and awaiting review by Apple. We'll be back soon!
Sunday, 07 February 2010
Saturday, 06 February 2010
Prowl is an iPhone app that's usually used to extend Growl notifications from your Mac to the iPhone. By using the Prowl API you can extend the application to almost anything you like. So following in the footsteps of Log_Writer_Script here's Log_Writer_Prowl in use:
<?php
date_default_timezone_set( 'Europe/London' );
require_once( 'Zend/Log.php' );
require_once( 'Log_Writer_Prowl.php' );
$params = array(
'apikey' => 'my_api_key',
'application' => 'my_application_name',
);
$writer = new Log_Writer_Prowl( $params );
$logger = new Zend_Log( $writer );
$logger->log( 'Example of Zend_Log::DEBUG', Zend_Log::DEBUG );
Error levels have been re-written as below and I'll include an option later on allowing you to re-map these:
// We'll need to re-write the event priority
switch( $event['priority'] ) {
case 0: // Emergency
case 1: // Alert
$event['priority'] = 2; // Prowl Emergency
break;
case 2: // Critical
$event['priority'] = 1; // Prowl High
break;
case 3: // Error
$event['priority'] = 0; // Prowl Normal
break;
case 4: // Warn
$event['priority'] = -1; // Prowl Moderate
break;
case 5: // Notice
case 6: // Info
case 7: // Debug
$event['priority'] = -2; // Prowl Very Low
break;
}
Here's the source if you'd like Log_Writer_Prowl.phps
- PHP
- Some Zend Framework tips and tricks
- Keeping your HTML valid with Zend Framework, Tidy and Firebug
- Managing CSS and JavaScript files within a Zend Framework App. We've been doing a similar thing at work where all CSS/JS files are separated. Except we only send through controller/action specific JS/CSS when we need to rather than all the time.
- Matthew Weier O'Phinney talks about creating re-usable Zend_Application resource plugins
- Mac OS X
- Movist The Real Alternative to VLC for Mac
- Automount Samba (Windows) shares as needed
- Follow both sides of a threaded discussion in Mail
- Search Address Book from Terminal. Some interesting field names in the SQL there...
- iPhone
- TUAW talks about browser-based previews and URL tricks. They go over some URL formats you can use to link to the web-view of your AppStore application. Also included is some code to allow people to break out of your application to rate it.
- ManiacDev on howto create great looking UIButtons
- Rotate an Image or Button with Animation
- Finding the cause of performance issues in your programs details memory profiling on the Mac
- Bulletproof backups for MySQL
- SublimeVideo is an HTML5 Video Player that has no browser plugin or Flash dependencies. Future support for IE will be added by falling back to Flash
- 8 Chrome Extensions For Web Developers
- WordPress for Android is now available and is based on wpToGo where you can find the source. The "new comment notification" that Wordpress for Android offers is quite cool.
- James Padolsey has conjured up a useful utility allowing you to easily view the code behind the jQuery library. It's available here but more detail on the associated blog post
- cucumber nagios lets you describe how a system should work in natural language, and outputs whether it does in the Nagios plugin format
- Wufoo bill themselves as "the easiest way to collect information over the Internet" and this tutorial, The Quickest (and Best) Way to Create Forms: Wufoo should get you started. Could be useful in some projects.
- QUnit is developed by the jQuery team and a great way to test your JavaScript. You can get an introduction to it at How to Test your JavaScript Code with QUnit
Thursday, 04 February 2010
CouchDB seems to generating quite a bit of interest lately so I thought I'd have a peek and see what it had to offer. The preferred way of installing CouchDB on OS X is using MacPorts:
sudo port install couchdb ... trimmed output ... checking whether autoconf is recent enough... no configure: error: Autoconf 2.61a-341 or better is required.
An odd error as everything in my ports tree was updated. Googling for the error returned some results pointing to your current path being incorrect. I'd checked and the version of autoconf was 2.65 (my ~/.profile was fine) so it had to be something else. After a bit of hair pulling I discovered /opt/local/etc/macports/macports.conf which is what port uses for it's path. And what did I find in there?
BEFORE: binpath /Developer/usr/bin:/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin
And then running /Developer/usr/bin/autoconf --version resulted in "autoconf (GNU Autoconf) 2.61" which was what was causing the error. A quick change later as follows:
AFTER: binpath /opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/Developer/usr/bin
and CouchDB was merrily installing away.
Friday, 29 January 2010
- If you're looking to make iPhone friendly websites then you can't go wrong with jQTouch and this cheat sheet
- AppDailySales is a Python script to download iTunes Connect daily sales reports.
- I've not used anything other than the stock Zend_Db classes (and then only slightly) but this interesting post, Integrate Propel with the Zend Framework, by Mike seems to cover some useful bits in getting started. And if you're looking for a reason why to move away from Zend_Db then Why I Prefer Propel over Zend_Db_Table is worth a read.
- And of course on the other side of the coin we've got Doctrine with a nice introductory post, Zend Framework and Doctrine. Part 1, by Juozas
- Autoloading Doctrine and Doctrine entities from Zend Framework
- Monitoring iPhone web traffic (with Fiddler) - must see if there is an OSX way of doing this.
- iPhone
- Fun With UIButtons and Core Animation Layers details some cool effects you can create.
- 5 key-value coding approaches in Cocoa
- Resize/Scale of an Image
- NSLog(@"The value of the bool is %@\n", (theBool ? @"YES" : @"NO"));
- iPhone reachability checking
- iPhone Piracy Protection Code
- Component-based logging for Objective-C applications
- Mac OS X
- While searching in spotlight you can use Command+i to get info on whatever file is highlighted
- Invoking "Play in iTunes DJ" on a selection beginning with the currently-playing track adds the selection to the front of the iTunes DJ queue and makes that track the currently-playing iTunes DJ item, without interruption.
- I knew you could press the option key on the keyboard to bring up the boot menu but apparently the Apple remote control works too. See One way to access the Mac's boot menu
- Set time of deletion for files placed in the Trash
- Run full OS X installer for another drive without rebooting
- Delete large numbers of duplicate emails from Mail.app
- Modify default custom print settings in 10.5 and 10.6
- Explaining odd entries in 'df' output
- Format String for the iPhone NSDateFormatter has handy references of what you need to use to access the date/time parts.
- Automating AppViz Downloads
- Asteroid simple app for running scripts and recording the results
- Fabric, Django, Git, Apache, mod_wsgi, virtualenv and pip deployment
- Processing large files with sed and awk
- Scheduling Tasks with Cron Jobs - handy reference as a refresher. Afraid I'm not editing cron jobs often enough to memorise the order!
- An API for the Web: Learning YQL
- Macistrano is a Mac OS X client for Webistrano, a web-based user interface for managing Capistrano deployments. (With Growl support)
- Converting from Mercurial to Git
- 6 programming project mistakes you should avoid lists things that everyone should take care to avoid.
- PHP
- Writing a Zend_Auth_Adapter with Doctrine (Screencast)
- Create RESTful Applications Using The Zend Framework - parts 1 / 2
- Logging in Users using Doctrine and Zend_Auth (Screencast)
- Using Zend_Paginator with Twitter API and Zend_Cache
- Creating Usable Forms With Zend Framework
- List of cities by latitude
- Rails Magazine - fine articles on Ruby & Rails
Saturday, 23 January 2010
- jQuery Lint is a simple script you can download and use with jQuery. It works over the top of jQuery and diligently reports errors and any incorrect usage of jQuery. It will also, to some extent, offer guidance on best practices and performance concern
- Capture images from your iSight using the command line via ImageSnap
- How to Make All Browsers Render HTML5 Mark-up Correctly
- Getting Started with XSLT
- New Zend Debugger Toolbar Extension for Chrome
- Test Results on Memory Usage of Zend Framework and Doctrine with APC
Friday, 15 January 2010
- Mask a square image to have round corners in the iPhone SDK?
- iPhone Coding Recipe: Live Character Counter, Word filter, and 1337 Translator For A UITextField
- UITextField - A Complete API Overview
- C Conditional Operator aka Ternary Operator
- iPhone Memory Debugging with NSZombie and Instruments
- Rui Carmo always comes up with the neatest things:
- Merging folder trees when Finder lets you down
- A quick file sharing script using Python and bash
- PHP/Zend Framework bits:
- Redirecting email whilst developing
- Determining if a Zend Framework view helper exists
- Custom Zend_Application Resources
- Zend Framework on a shared host
- Getting Started with Zend_Test
- Module specific bootstrapping in the Zend Framework
- Quick Start to Zend_Application_Bootstrap
- Techniques for Mastering cURL
- Using CSS to filter blocks
- Mac OS X Tips:
- Uninstall applications installed from packages
- Show only exact duplicate tracks in iTunes
- Easily hide files or folders from users in the Finder
- Find files created or modified by an installer
- Enable write flag on Drop Box files via Folder Actions
- Remove time/date stamp from screen shot filenames
- Hide the GrowlTunes menu bar icon
- Manually schedule Software Update 'the OS X way' with launchd
- KeyRemap4MacBook the utility keyboard lovers have dreamed of
- 15 must-know jQuery 1.4 features
- SQL for Beginners: Part 3 - Database Relationships
- Simple table badges for iPhone development using TDBadgedCell
Saturday, 02 January 2010
The Apple iTunes App Store has been a runaway success, both in terms of the number of applications and sales, but fraught with it's PR disasters too. Of course those mainly hinge around the rejections that developers receive, something quite a few have experienced. But there's another dark side, one that's not often mentioned but hits many a developer, and has to do with the current "social, user-generated, 2.0 everything" culture. Comments and reviews.
Your parents told you not to say anything unless you had a something nice to say, but in the age of the Internet people who forget that can cause quite a bit of havoc. I'm not saying that at times it's not deserved, but only go on a tirade if you've exhausted all other avenues in trying to resolve an issue. Developers are people too and they've taken the time to write applications that they think will be useful to you. They get that warm gooey feeling inside when users connect with the application and find it useful. And guess what? They get a sad feeling when something breaks or does not work for the user - but they want to fix it. They just need to be given the chance, and that's where you come in.
Recently on Twitter two iPhone application developers whom I followed tweeted the following:
Michael McNeela - "iPhone developers: don't read your App Store reviews. 'Tis my conclusion after almost a year."
Vinny Coyne - "Here's a New Year resolution idea: I'll contact the developer for help before posting a one-star rant on the App Store. That'd be nice!"
And I feel exactly the same way. My recently released application, My Oyster, started off with a 5 star rating but has slowly gone down to 3 stars now. I've had my first 2 star review on the comments page with a person complaining that their journey history was not shown. Well how about contacting me, like I state all over the description, so that I can sort it out. All it would have taken was an email and we could have solved it within a few hours. But for whatever reason, no.
I've had about 5 people email me when they've had problems as been able to resolve all of the issues. Even had emails commenting how great the application was and what features they'd like to see in the future. So what's the problem? One issue bringing down the rating is Apple's insistence on asking users for a star rating when they're uninstalling an application. Er if you're removing it there's quite often a problem and it's ever so easy to touch the 1 star and submit that. And boom the rating slowly creeps down with no feedback available to the developer. Not entirely fair and it gets nobody anywhere.
Perhaps one day Apple will allow developers to respond to the comments left by users on the App Store but until then let's make a deal:
- I, as an application user, hereby swear that I'll contact the developer with any issues I experience.
- I, as the developer, promise to make it easy for users to get in touch and will respond to every query I get
and lastly, and probably the most importantly:
- If you like an application then leave a positive comment. It's human nature to complain but we so rarely mention the good things. So make sure everyone out there knows how awesome the game or utility was with your comments pushing the rating up.
Rui Carmo is going through an interesting "de-socialising" process and it's mostly ended in this post, De-Tweeting, where he details how he's pruning his twitter account. Before Rui made is scripts public I'd done a similar thing with a PHP script, twitter_archive_zend.php I'd written. Fill in lines 12 and 13 with your Twitter username and password and set your maximum tweets on line 9. Then run and you'll get a JSON file that'll be appended to later on.
Be warned that this uses the Zend_Service_Twitter library and I'm fairly certain there are horrible caching issues going on. I've run it a few times with no username / password and it's brought back results - definitely not correct.
Friday, 01 January 2010
- Pinging Feedburner using PHP and curl without XML-RPC
- 35 Google open-source projects that you probably don't know
- A sample iPhone application with complete unit tests
- An Engineer's Guide to Bandwidth from Yahoo! Developer Network Blog
- Improved Network Reachability code for the iPhone
- And another XCode tip - Precompiler Defines
- Creating a CSS layout from scratch as I need to improve my HTML/CSS skills and this tutorial looks handy (even if it's a bit old)
- Steven Van Bael is an Android developer and his blog features quite a few useful snippets. One in particular is Using the SimpleAdapter with a ListView in Android
- Listing of User Agent Strings
- Slicehost have a useful guide to setting up a Ubuntu Hardy Hero Slice
- More information on global variables in iPhone development in The Death of Global Variables
- Mercurial trac commit hook which I need to get setup at some stage
- How to really URL encode an NSString in Objective-C
- Super Cook recipe searching on a per-ingredient basis
- A recipe for Pepernoten - a traditional Netherlands cookie
- AppViz is a great Mac application to track and analyse your iPhone app sales
- AppSales Mobile allows iPhone developers to download and analyze their daily and weekly sales reports from iTunes Connect
- And for some Android bits 'n pieces:
- Executing a HTTP POST Request with HttpClient
- Prompt User Input with an AlertDialog
- Building a Generic Login Page
- How to build a service-enabled Android app
- Separating Lists with Headers in Android 0.9
- mobilevikingsandroid for Mobile Vikings users in Belgian allowing usage viewing
- betonthemove Betting application for use on a mobile phone
- One page CV
- Changing your iPhone application name
- Code to detected if your iPhone application has been cracked
- Demystifying NSApplication by recreating it
