I’ve worked on a number of side projects over the years. This is a non-comprehensive list of most of them that I can recall. You can find my various public repositories on GitHub and my PHP packages on Packagist.

Pwned Passwords Validator for Laravel

The Pwned Password validator checks the user’s submitted password (in a registration or password change form) with the awesome HIBP Pwned Passwords service to see if it is a known pwned password. If the password has been pwned, it will fail validation, preventing the user from using that password in your app.

Find it on GitHub and Packagist.

My Habits

My Habits was a Pebble timeline app that was designed to help you start and maintain good habits. It allowed you to specify a number of different habits, on different schedules, and then sends you reminders in your timeline to encourage you to complete the habit.

Built with Laravel and PinPusher.


Poke! was a silly game built into the Pebble timeline, following on from Timeline Tag! It allowed you to challenge other players to a game of poke, pushing the poke between your Pebbles – with the challenge to keep it from expiring.

Built with Lumen and PinPusher.


Pebble Timeline Challenge Week 10 Winner!

8-A-Day was an prize winning Pebble Timeline app that reminded you to drink water throughout the day, and provides a summary at the end of the day of how much you drank.

Built with Lumen and PinPusher.

Timeline tag!

Timeline Tag! was a multiplayer game built within the Pebble Timeline. Tags silently appear in your timeline at random points, and you need to find them and send them to another player to get more points.

Built with Lumen and PinPusher.


PinPusher is a PHP wrapper for the Pebble Timeline API. It aims to provide an easy way to work the Timeline API, and support all of the available options.

Find it on GitHub & Packagist


WorkAide is a simple web application for small business owners and tradies to help manage some of the tasks that can often take a lot of time and effort to do manually, but can easily be done using the right application.

Built with Laravel and Bootstrap.

Write Your Own Adventure

Write Your Own Adventure, a Choose Your Own Adventurestory with a difference… When you come across a chapter that doesn’t exist, you get to write it yourself and continue the story as you see fit. So come on in and take a look around, and if you can’t find a storyline which interests you, then just maybe that means you should start writing your own!

Built with Laravel and Bootstrap.