Archives for category: dev

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.


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:

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 for other options. I’ve not yet used either but the capabilities of GPUImage look particularly impressive and CoreImage looks amazing (for iOS5+ projects).

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:

Most of the credit this info belongs here:

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.


 [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:

Hi there!

Our official home on the web has moved to

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: