My interest is being a full-stack developer; being involved in everything from the overall direction of a project, to design, user experience, and the actual implementation. I have extensive experience with Django (8 years) and more recently have worked heavily with front-end tools such as React, Babel and the Flux architectural pattern.
I have a keen interest in graphic design, and I'm passionate about crafting great experiences for end-users. These influences all of my decisions as I work on a project, be they technical or aesthetic, and I'm always on the lookout for new ideas that can help better shape projects.
- Django Mediacat - React-powered media library app for Django
- Django Extra Views - Extra class-based views for Django.
- Django Oscar - Domain-driven E-commerce for Django.
Tools and Technologies
- Back-end: Django, Django REST Framework, Python
- Design & UX: Adobe Photoshop, Pen + Paper, Sketch
- Server Configuration:
- Tools: Git, ssh
Senior Front-end Developer (August 2015 - Present)
I joined Depop to redevelop the website into a 3rd platform (alongside iOS and Android) for our customers. I ended up using React (which I was already experienced with), along with Relay (a GraphQL client-side library) to build a high performance website using modern tools. GraphQL wasn't a technology we were already using, but I recognised it as the solution to many of the problems we were having. During the course of the development of the website, I designed new internal APIs to enable more efficient communication between services and the GraphQL server, these APIs are now being used for inter-service communication as well.
Prior to beginning work on the website, I also redeveloped our internal administration tools using React (previously Angular). This work served as a proving ground for GraphQL and Relay, as well as highlighting the need to develop more a more forward-thinking approach to our APIs in general.
Senior Application Developer (January 2013 - July 2015)
Part of a medium-sized development team at an exciting startup, my focus has been on the customer-facing onefinestay website, as well as some of the administration screens for website content creation. To begin with much of the complex functionality was build using Backbone, but my frustrations led me to try out React - which very quickly became the tool of choice for building all front-end functionality.
My biggest early project was building a media library for managing the (approx 120,000) images of our homes on the website, the first version was a Backbone app. Later I did a complete rewrite of it in React and we open-sourced it as Django Mediacat (https://github.com/onefinestay/django-mediacat). We've also been using it as a proving ground for new libraries and methodologies before we begin using them on the main onefinestay website. I also built React Daterange Picker (http://onefinestay.github.io/react-daterange-picker/) which we're gradually replacing all our legacy datepickers with. More recently we've been exploring server-side rendering with React which is looking very promising.
Other projects have included a bespoke CMS for our (now retired) online magazine, a tool for managing our geographic region data, our enquiry form, and several others.
Developer (April 2011 - December 2012)
As part of a large development team, I have primarily been responsible for the development of new e-commerce projects using Tangent's open source framework, Oscar, as well as maintaining a number of legacy Django websites for our clients.
The biggest project was Tata Landmark, an e-commerce site with approximately 10 million products at launch (mostly books). I led the development of the search and navigation functionality for the site.
Most recently I designed and built an WYSIWYG email campaign editor, using a combination of CoffeeScript, jQuery and require.js. I also built an image asset library using Knockout.js and Backbone.js as part of the same overall project. These are currently in use by the Labour Party.
Lead Developer (September 2010 - March 2011)
The first full-time developer for a new sports-based startup company. Responsible for turning the original prototype into a fully functional website, taking care of everything from front-end design to server-side coding (Python/Django) and server administration.
The work required heavy use of Google Maps, which was tightly integrated into various parts of the user experience. I made use of Knockout.js, which communicated with a RESTful web service written with Django using Tastypie.
Titan Entertainment Group
Web Developer (March 2007 - August 2010)
Part of a small team of developers responsible for developing and maintaining the company's websites, primarily focusing on the commercial website for Forbidden Planet. I led the development effort in migrating our older Java-based websites to Python and Django, as well as maintaing a smaller site based on Ruby on Rails.
I also investigated product recommendation algorithms based on K-Means Clustering with the aim of providing customer-specific product recommendations in the future.
- MEng. Computer Science (2.1) - University of Warwick, 2002–2006
- A-Levels: Maths (A), Further Maths (B), Physics (A)