I don’t tend to do much “publishable” work these days but here are some of my bigger projects.


Infinity (internally known as Clientbank) was written and is actively used as a Mortgage Broker back-office system.

I created Infinity because the company I was a Mortgage Adviser for bought a back-office solution (called Client Bank) in order to keep all client data we’d already spent years inputting in-house, rather than depend on an external developer that could disappear at any second. The idea was I would extend the system to better fit our needs but once we received it, the code was so abysmal that it was simply quicker, and easier, to write a solution from scratch rather than try to fix it.

Project Snapshot

  • PHP, MySQL, JQuery (inc AJAX), Bootstrap 3
  • Unlimited clients, mortgage, and protection products
  • Log client contact, and reviews
  • Product expiry tracking so clients can be advised on new products
  • Automatic address updates on completion of new mortgage
  • Search client, mortgage, protection, address




IllyStats was born out of intrigue while playing a browser game Illyriad (Illy for short). The Illy devs allowed you to download data direct from their database (exported to XML) every day. I wanted to see what kind of information I could pull from it so whipped up a very quick XML parser that calculated how many players were playing the game. The more I played with the data, the more it seemed like you could pull endless amounts of information from it, effectively allowing me to build a very basic couple of calculations into a full-blown website that was updated daily, and tracked 3 weeks of player/town/alliance changes.

Project Snapshot

  • PHP & MySQL
  • Over 700,000 new database entries every day (that’s nearly 15,000,000 in total) (21 days data)
  • Dynamic graphs of population changes, etc
  • Dynamic SVG generated from player data




@UK_News is a twitter bot that I wrote for fun. It read the BBC News RSS feeds every few minutes and posted the articles to twitter.

The system would try to post as much of a coherent tweet as possible, giving priority to the stories details, and linking to the original article. If the details were too long to post a full URL, the system would use an URL-shortener instead. The reason it didn’t use an URL-shortener every time is that I felt (and still do) that these services are often misused and can link to hostile sites, etc.

Project Snapshot

  • PHP & MySQL
  • Multiple RSS feeds sourced every minute, filtering out duplicate stories
  • 69.76% of posts contained a full summary of the topic, inclusive of a direct link (full or shortened)
  • 30.23% of posts contained a reduced summary and direct link (full or shortened)
  • 0.01% of all posts did not fit either of the above and were posted without a direct link to the topic