My name is James

I’m a Web Developer based in London, I also like to ride bikes, and this year I'm chairman of the London Hardcourt Bicycle Polo Association.

I have an arts education, I particularly love to nerd-out about films, typography and design. I have a good eye for how products & services can be better.

Maybe we could work together?



A tile-flip memory game.
Note: Will not work on a touch device (yet)

Visuals are based on signage and computer terminals aboard the setting for Ridley Scott's 1979 Sci-Fi masterpiece, Alien.

I am a huge fan of this film and wanted this project to be an exercise in front-end, so kept the javascript logic as basic as possible (but please check out the code/readme). As well as jQuery and CSS animation techniques, I learnt about web font handling and layout, as well as adding sound to websites.

See the code


A Personal Restaurant MealTracker/Reviewer
Note: Will take a few seconds for server to spin-up on Heroku

This app was born out of frustration at forgetting what I had or hadn’t eaten at a particular restaurant, whether they did a good or a poor version of a dish I was fond of, or even if I’d tried a new dish and liked it or loathed it.

To help remind me I made an app that uses photos to track Restaurants, Dishes and Meals using the CRUD/RESTful concepts for all three resources.

I fell in love with Ruby on Rails during this project, and learnt a lot about relational DB’s. I pushed myself to make UX and forms dynamic using jQuery and AJAX and it was also the first time I’d used AWS and Carrierwave for image uploads. I wanted some automation and efficiency to this, so I tacked on Cloudinary for optimisation.

See the code

Hello Stranger

Event and Location based Chatrooms
Note: Code only, not currently deployed.

My idea for this came about during a very long talk at LRUG, where to keep themselves amused, students were texting each other, other attendees wanted to join in! ‘But why doesn’t this exist?’ I thought: 'We don’t talk to each other enough in this city, so could geo-specific and anonymous (for safety concerns) chatrooms fix this?'

Thankfully my idea was chosen for our group project, it ticked all the boxes of technologies we wanted to learn; WebSockets, Sessions, Authentication and Geolocation. We built the backend on Node.js using Express, and decided on Mongoose accessing a MongoDB as this was a new DB concept for me, integration of the Google Maps API was key, we also used Eventbrite’s API for fetching local event data, but I would like to add the feature of creating events on the go.

REFR (WIP/alpha)

Bike Polo Referee Tool
Note: Code only, not currently deployed.

For my final project at GA, I wanted to do something real world and also build something that fixes a genuine problem of the sports community I'm chairman of.

Bike Polo leagues are usually administered by a team of volunteers, who take game reports that come in over e-mail, SMS, or on our forum, and put this data into a spreadsheet. Reports are often late, they are missing data more often than not, and can be accused of being inaccurate; They’re nearly always written on the back of an envelope or napkin whilst said referee battles the elements, rowdy players and fans, and times the game on his phone with his other hand.

So to change this all up I have built a robust API that renders Games, Teams, Players and Game Events in JSON to different URL endpoints. To input match reports I’ve an alpha of a Ref App built in Angular, a technology I have chosen because I intend to wrap it in Ionic for mobile devices.

Eventually there will be another web front end that will render League Tables, alongside Team, Player and Fixture data, hopefully with some nifty D3 visualisation.