Need help?

I'm available for remote short term contracting or consultancy work. Please check out my LinkedIn profile for more details on my experience.

Please feel free to use the form below to contact me.


This article is going to explain the process of setting up virtual hosts with node.js, using the Express framework. For this to work, you'll need to have node.js and express.js installed. You can quickly get node setup, by going to their main site - ...
jon | April 22, 2010 | Comments (1)
You’re probably wondering what I mean by a ‘Tin Can Approach’. Well, the major concept of the new Tin Can standard, is direct communication to an API; removing the dependancy of JavaScript. I'm going to be focusing more on the API aspect, and not so much the way the data is packaged....
jon | April 22, 2010 | Comments (0)
This is just a compilation of the commands that I use most when using Symfony 2, and I’ll continue to add to it as I find more interesting commands.

1. curl -s
jon | April 22, 2010 | Comments (1)

I’ve been contracting now for roughly 7 years, and in that time I’ve seen a lot - good and bad. This specific career choice is not for everyone, but if you’re interested in a challenge, it’ll live up to it.

What are some of the major pit falls of contracting? No stability? Well, that’s questionable. High expectations from the business? This is true, as a lot of clients will expect you to hit the ground running. You’re the expert, and you need to act like one - know your stuff. Getting the cold shoulder from full-time employees? This will happen a lot of the time, but it really depends on the person and what you’re doing exactly. And the worse thing - you might not get paid! These are the risks we take.

jon | April 22, 2010 | Comments (0)

I’m moving away from my usual topics, and thought I’d mention my latest project.

This is the first site I developed using the latest Symfony 2 framework, and the goal is to play around with some keyword phrases and see what kind of traffic I can muster up.

jon | April 22, 2010 | Comments (1)

Have you spent countless hours trying to figure out why your session data isn't persisting from page to page? Or maybe you've been trying to call a page using AJAX / XMLHttpRequest, and then set a session; but once navigating to the next page, the session was gone. The big question here is - what causes this?

jon | April 22, 2010 | Comments (0)

Prior to the 'pre-order' date (Sept. 14th), it was understood that the iPhone 5 could be purchased unlocked in-store. A few days after that date, Apple decided to change this at the last minute.

This is the first thing they said:

jon | April 22, 2010 | Comments (0)

About a week ago, I stumbled upon the Facebook plugin on another site - I found it fantastic. It takes the whole management aspect out of comments (for the most part). With my old comments system, the biggest pain in the butt for me has been deciphering through all the spam, and deleting it - this has pretty much gotten rid of that.

This not only saves you from writing your own comments solution, but it also gives you all the Facebook 'social' options.

jon | April 22, 2010 | Comments (1)

If you've been trying to install the APE Server on Mac OS X, then you probably noticed that you can't use the linux binary - it needs to be built from scratch. This may seem like a daunting task, but it's not that bad!

The first thing we have to do is check that we have all the dependencies. You will need Xcode installed, because we'll be using all the command line tools that come with it. The easiest way is just to download the latest from the app store, and install it. Alternatively, you can get only the essential compilers from pre-built binary packages - thanks to kennethreitz - available here:

jon | April 22, 2010 | Comments (245)

I've been thinking about doing this for awhile now, but it's involved a lot of procrastination on my part. As I'm sure there are many more people out there that have the same interest, I thought I'd write a quick article on my findings.

First and foremost, you're going to need some sort of 'project' experience - whether you worked on a project, or had any involvement with one. Here's a list of the experience 'flow' you'll need to get into each position:

jon | April 22, 2010 | Comments (3)

If you're like me and are faced with this decision, you really need to know the facts. Which one is better? Well, they both have their ups and downs. It also depends on the type of phone user you are. Do you tend to open apps and forget to close them? Play a lot of games? These are all questions that may determine the type of phone you need.

I'll start by going over the pros and cons for each of the phones.

jon | April 22, 2010 | Comments (1)

Have you been thinking of making a game, but are stuck on the server part? This is understandable, as servers can be quite daunting. Back in the old days, you'd have to worry about writing C code with sockets - scary stuff if you're not familiar with it.

Luckily, we now have something called Node.js - it allows us to create a simple server in a matter of minutes. In this article, I'll be showing you the very basics of creating a socket server.

jon | April 22, 2010 | Comments (0)

If you've found this article, you probably know what APE is; but for a quick recap, it means AJAX Push Engine. It's great if you want less overhead when transferring a lot of data back and forth - most likely for games, chat or any other interactive applications.

For more information, please check out

jon | April 22, 2010 | Comments (0)

If you're fairly new to the world of web programming, you might have stumbled upon a website called - this is actually the World Wide Web Consortium, and their goal is to develop web standards.

But why should you follow these standards? These are actually standards that are followed by most of the key players, namely Google. And why would this matter to you? Well, when their bots crawl your website (to index it in Google), it will look for certain markup (HTML code), which might gain you favor in their search results - we can also refer to this as SEO (search engine optimization).

jon | April 22, 2010 | Comments (1)

These are 2 of the best options for hosting your repositories on; and while I love them both, they do differ a bit. I'm going to go through the key features and why they each stand out more than the other (in their own way).

The first question that might come up, is why you would even want to use a hosted solution for your repository. In my opinion, the biggest benefit would be backup - you have another form of backup, just in-case something happens to your local repo.

jon | April 22, 2010 | Comments (0)

Do you really like Symfony2, but want to find out how to set it up to use git? That's pretty easy, and I can walk you through all the steps involved.

First, I'm going to assume that you already have a Symfony2 project setup and working. The only other thing you'll need is git installed. You can follow the steps on the following site, to get the most current git distribution set up.

jon | April 22, 2010 | Comments (0)

We all know that Views in Backbone are really Controllers in the MVC pattern; and to maximize our separation attempt, we should be using templates. This is luckily offered within the Underscore framework, amongst other things.

To begin, we'll start with the actual markup templates - these will be surrounded by script tags, and defined as a template type. And don't worry, I'll give you examples after explaining each part. Here's the first:

jon | April 22, 2010 | Comments (0)

If you've never used Backbone before, then I can understand your reluctance to change - it's sometimes tough to adopt new technologies, especially if it means changing most of your old code.

The fact is, that Backbone will not only save you a lot of time in the long run, but it'll also make your code easier to work with. This is especially beneficial if you work with others, or have to teach new-comers.

jon | April 22, 2010 | Comments (0)

If you’ve had the pleasure of building large applications with Backbone.js, then you probably stumbled into this problem. What happens to Views that are no longer being used? That’s the main question.

Let me give you a test scenario - what if you have your main container (a div), and that container will be populated by View content. Every time the user navigates to a new section, that main container’s content will be swapped with a new View. What happens to the old view? Well, it will be sitting there still. Can’t we just hide it, you say? Well, yeah, but then it’s still rendering all the events, based on Model changes (if it has Models bound to it).

jon | April 22, 2010 | Comments (0)

I was having this issue when I first upgraded to 11.04 from 10.10 yesterday. It was really odd, cause I was only running Chrome and Netbeans - didn't make much sense.

Anyways, I eventually figured out that it was something to do with OpenGL (with some help from others).

jon | April 22, 2010 | Comments (37)

The big question here is which technology to use, JSON vs XML. They both do a very good job, so what are the benefits of using one or the other? Well, I'm going to list the pros and cons of each, coming from a mobile point of view.

If's you're not too familiar with JSON and XML, I'll do a quick brief. They are basically used for defining and storing data (using meta data). This data can then be passed around - so when it travels from point A to B, the receiving end will know what each piece of information means (just to maintain a certain level of standardization).

jon | April 22, 2010 | Comments (2)

This article will take you through the process of creating a simple tag cloud using a jquery plugin, which was written by Adam Groves ( - thanks Adam!

Why even bother with a tag cloud? Well, it looks pretty cool if positioned properly, and it's something that people are used to seeing.

jon | April 22, 2010 | Comments (7)

If you're looking for a way to execute a bit of code before it actually runs the module/action, then you're in the right place. The first thing is that it's not actually called a preDispatch, as it is referred to in Zend. Having a Zend background myself, this got me a bit confused, as there was nothing linking the 2, when doing a search in Google.

The 2 main things we'll look at are the preExecute and the filters.

jon | April 22, 2010 | Comments (1)

If you're experiencing problems with you .APK package and need a way to unsign and resign it again, then you're in the right spot. I'll go through the simple process of unsigning an already signed .APK file.

And if you're curious - the APK is just a variant of JAR, and is pretty much identical. It's just named differently for Android. :)

jon | April 22, 2010 | Comments (2)

With the release of the long awaited HTC Desire HD also came an annoying issue, which has been plaguing quite a few people - some having better luck than others.

From my own personal experience, and from what I've read from others, the main problem starts when trying to make outgoing calls. Depending on the lighting conditions, the screen will go black and stay that way.

jon | April 22, 2010 | Comments (7)

Due to popular demand I've finally released a major update for the Model Release Pal Android App - this was also due to the fact that Easy Release just released a version for Android (they have quite a popular one for the iPhone).

I also wanted to apologise to all the people that are currently using my app, for not having this update out earlier.

jon | April 22, 2010 | Comments (1)

If you're struggling to decide which phone to get, then you're in a similar predicament that I was in not too long ago - the difference being, that I actually got to play around with each of these phones for a bit before actually deciding to stick with one.

Since the Samsung Galaxy S came out a few days before the iPhone 4, I decided to get it just to satisfy my gadget hunger. After playing around with the Galaxy S, I was quite impressed - the interface was real smooth, and transitioning through the different menues (desktops) was speedy - this is in comparison to my not so old old phone, the Nexus One.

jon | April 22, 2010 | Comments (2)

If you're new to Macs, or always wondered what the best IDEs were for PHP development, then this may be helpful.

I've compiled a list of my favourite IDEs, and added a brief description for each. These are purely my editors of choice, so if you've got a few others in mind that I've missed, please feel free to comment and maybe I can add them to the list.

jon | April 22, 2010 | Comments (4)

After procrastinating for so long, I finally got off my arse and released the Model Release Pal for Android - beta.

As an amateur photographer myself, I believe that this will an invaluable tool.

I've also decided to release it for free, as it's still in the beta phase and still not 100% sure if I want to charge for it in the future.

jon | April 22, 2010 | Comments (4)

I wanted to give a quick comparison of the specs on these phones, mainly because they interest me the most.

The thing that they all have in common, which obviously makes them great to begin with, is the fact that they all use the Android OS :)

Anyways, lets get down to the specs - I've placed them in a table format, for ease of reading and comparison.

jon | April 22, 2010 | Comments (3)

A very annoying issue that I've noticed with the NBAndroid Netbeans plugin, is that it doesn't know how to properly attach an external JAR file to an Android Project.

If you right-click on libraries (under your project folder), and click on 'Add JAR/Folder', it will add a reference to that library/JAR file, which it will recognize in the code (detect all the classes, etc). The problem lies when you try to compile the project - at that point, it doesn't actually add the JAR to the project, which in turn gives you errors when running.

jon | April 22, 2010 | Comments (4)

The Android market has been lacking in SEO applications (in comparison to the iPhone), but in the recent months, it really caught up. It doesn't have the same caliber of SEO apps, but at least it has a decent selection.

In this article, I'm going to run through each of the current Android SEO apps, and give a quick summary (and yes, I have tried them all).

jon | April 22, 2010 | Comments (103)