I love Sublime Text, I love it a lot.

Often my general carelessness with json comma’s results in failures:

Error trying to parse project: Trailing comma before closing bracket in X.sublime-project:11:1

Failures aside it annoys me not to be able to copy/paste definitions from the start of the file to the end, to the middle and back again.

Thankfully there’s an easy solution. Add an extra (custom) property to the very end of your file and never move it.

sublime text config example to avoid parse failures

sublime text config example to avoid parse failures

I recommend the following key/value pair:

"dissolutioned_key": "I'm so useless... I want so desperately to matter. I'm not in control of anything. Would anybody even miss me if I was gone? ;("

Any other random key/value pair will do. But no other pair will be as awesome.


I’m collating a list, checking it twice, the only Apps on it are naughty… not nice.



Image processing on mobiles can be pretty performance intensive given the relatively low power of their CPU’s (as compared to desktops).

In order to get reasonable processing speeds for my application Bokeh Booth I decided to build some efficient UIImage extensions which make use of the vDSP routines in the iOS 4 and up Accelerate framework. This framework allows for efficient matrix based image processing on iPhone/iPad devices, even those without OpenGL shader support.

You can grab a copy of all my routines here: https://github.com/gdawg/uiimage-dsp

The github repository contains a UIImage Category with the dsp processing routines and an example app showing how to call the routines.

I’ve tried to make the routines as easy as possible to use, for example you can blur an image using code as simple as

UIImage* src = [UIImage imageNamed:@"image.png"];
UIImage* blurred = [src imageByApplyingGaussianBlur3x3];

At this stage the library is still very much in it’s infancy but there’s support for blur/sharpen/2pass Gaussian Blur/emboss functions with the potential for many more to come.

The two pass Gaussian filter is particularly fast compared to any trivial implementation in software.

The github repository contains an example project showing usage:

If you use the library anywhere I’d love to hear about it. Also if you have any bugfixes or ideas on improvements I’d love to hear them too!

email me


UPDATE (1/Mar/12): you may also want to check out CoreImage (if you’re only supporting iOS5+) and https://github.com/BradLarson/GPUImage for other options. I’ve not yet used either but the capabilities of GPUImage look particularly impressive and CoreImage looks amazing (for iOS5+ projects).

If you’re looking to implement “Pull to Refresh” style functionality in your iPhone project you could do worse than to take a look at


I’ve already made use of some of the code there and pointed one other on iphonedevsdk.com.

Good stuff Leah.

If (like me) you’re using Xcode 3.2.5 and see this error when trying to submit an app for approval It’s worth knowing that this seems to be the result of a bug introduced in this version of xcode.

There’s a great writeup at useyourloaf.com

In summary the workaround is:

  • Build and archive the app with Xcode
  • Use the organiser to export an IPA file
  • Run /Developer/Applications/Utilities/Application Loader and submit the app using this

I recently embarked on the challenge of getting scantool compiled under Ubuntu (10.10 – netbook edition) so that I could try out the OBD-II diagnostics on my car.

Since there were a few changes needed to make it work (and since it also relies on a compiled version of dzcomm) I thought it might be useful to others if I shared my updated/compiling version.

Follow the link below to download the source for both dzcomm and scantool 1.13, modified to compile under Ubuntu.

scantool – 1.13 source to compile for ubuntu 10.10

Please let me know if you find it useful or think anything needs updating.

The original source can be found here: http://sourceforge.net/projects/scantool/files/

Most of the credit this info belongs here: http://wiki.eeeuser.com/howto:scantool

Thanks to my android application twipaper I’m in a great position to judge this particular question.

Since the app already needs to be net-connected in order to download pictures I added flurry tracking to count views for pictures of Edward, Jacob… or Bella.

Edward vs Jacob - who do android users prefer?

Edward vs Jacob - who do android users prefer?

WOW! Edward wins hands down! 50% vs 30%.

I had hoped to produce an iPhone/Android users comparison but apple put the kibosh on this by refusing to release the iphone version of twipaper (copyright fears).

For those interested in the app search for “twipaper” on the android market.

twipaper - now in the Android MarketPlace

Problems with shouldAutorotateToInterfaceOrientation: when using OpenFeint 2.5.1?
read on!

After adding Openfeint to my BoxMaster game (currently pending app store approval) I noticed that iPad view rotation had stopped working.

This struck me as odd so I did a little digging to find the culprit!

It turns out that Openfenit adds a UIView (and associated UIViewController which does not support auto-rotation) to your root window to work around a particular menu bug. Thankfully this bug only manifests if your application does NOT use any view controllers.

The bottom line here is:
if your application already contains a view controller, you can safely remove this code.

Change: Openfeint.mm

 [self fixInCaseOfNoViewControllers];

to this:

 // disabled due to auto rotation issues, I promise that I already have a view controller    
 // [self fixInCaseOfNoViewControllers];

Doing so restored my applications rotation behaviour and all is well in the world.

Hope this helps someone out!

Some more related details here: http://openfeint.com/developers/forum/showthread.php?1407-Touch-no-longer-works-after-using-a-MPMediaPickerController

Hi there!

Our official home on the web has moved to http://mad-dog-software.com/

This blog will continue to exist but will become more technically focused with development articles and updates.

As always you can continue to follow us on twitter or facebook too: