UK National, US Green Card holder, currently residing in San Francisco, California
+1 415 858 3260
iOS and Android app developer, architect and team lead.
I’m an experienced and flexible tech lead experienced in regularly shipping products to users, designing APIs, picking up and using new technologies quickly, working on both native (iOS and Android) and web backends. I’ve taken two startups from first employee to acquisition and can work well in both small and large teams.
- Swift & Objective-C: iOS development (both iPhone and iPad)
- Kotlin & Java: Android development (phones and tablets)
- Python: Back-end development with Django, gunicorn
August 2013 – Present: Eventbrite (Principal Mobile Developer)
Lead developer and mentor on the iOS Organizer app team.
I joined Eventbrite as a principal engineer on the native app team. I worked initially on the Android side where I rebuilt the Attendee and Organizer apps from the ground up. After that I moved to the iOS Organizer team, where I’ve improved the rate of feature development by a factor of four by removing or updating legacy code and establishing better architectural patterns.
I am currently responsible for defining the Organizer app’s architecture as well as doing feature development, and I actively mentor the other developers on my team through one to one meetings and code reviews. I also oversee two libraries that are shared between the apps – a networking layer and a set of common UI components.
As a principal developer I participate in our API design and architecture groups. I advise other teams on their REST endpoints, helping them make their APIs more consistent with the rest of Eventbrite, and help them avoid the pitfalls and common mistakes that I’ve seen in the past. I encourage teams to design their APIs before writing code, so this also means I can suggest very different approaches and implementations that will be more future-proof when needed. I’ve given internal talks on API design and best practices, and I’m regularly asked to provide advice when other teams have architecture problems.
November 2011 – August 2013: Lanyrd (CTO)
Lead developer and CTO from very early in the company’s life through acquisition.
Lanyrd was a conference directory website. Similar to a wiki, anyone could add conferences, sessions, photos, talk notes and slides. I was the senior backend developer on the Django-based application and associated services, scaling it as we grew rapidly. I was responsible for the design and development of the server software, as well as system administration of the production hardware.
I built the iOS and Android apps for Lanyrd, and the API that powered them. When finished, the the apps used a declarative server language to lay out all the screens and links between them, allowing us to ship many features to web, iOS and Android simultaneously without needing to do specific native development or go through app review while still using native platform controls.
I converted the Lanyrd deployment process from a fragile set of steps written on a notepad to a reliable, fast and fully automatic continuous deployment system triggered by a single button press. Lanyrd could be deployed in minutes, multiple times a day, by even non-technical employees, and new developers could provision their environments with a single shell command. This was a major contributor to our ability to ship features quickly.
Lanyrd was acquired by Eventbrite in August 2013 and I joined their native app development team.
April 2011 – November 2011: Philter Phactory (developer)
Philter Phactory’s product was a network of intelligent agents, deployed on Google App Engine (now Google Cloud). These agents had personalities, and periodically crawled the web looking for things that match their interests, then post text about the links to a personal WordPress blog. I was responsible for the majority of the development on this project, along with handling sysadmin and deployment tasks.
Nov 2009 – March 2011: Nokia HERE Maps (developer / architect)
As part of the HERE Maps team, I designed and developed a REST API back-end using Java, Spring, Restlet, OAuth and Hibernate, deployed to a Tomcat and Jetty container, communicating with a web front-end and a mobile application using JSON and XML. I was in charge of a team of four back-end developers and testers, responsible for scheduling, short-term planning, and both internal and external dependency management to ensure that the product shipped on time.
Nokia Berlin employed engineers from many countries, all speaking English as a second shared language, so I became adept at communicating using clear language that can be unambiguously understood by people of different cultures with different idioms and expectations.
Aug 2007 – Nov 2009: Dopplr (developer)
Dopplr was a popular travel focused social network.
I was the first engineering hire and remained as the main lead developer until the company was acquired by Nokia. During this time Dopplr grew from a closed beta product with a friends-only user list to a well-known web startup with a large user base. I was responsible for all aspects of architecture and development, including scaling the site from the initial prototype to running on multiple servers, including the use of message queues to defer long-running jobs, as well as a dedicated search server.
Dopplr was built using many technologies, including Ruby on Rails for the main server, MySQL for data storage, ActiveMQ as the back-end server and Solr/Lucene for search. It also used a variety of smaller local services, such as a Haskell-based Jabber server, all of which needed to communicate with each other. I also implemented Dopplr’s OAuth-based XML/JSON API for talking to third party services, and helped develop the Dopplr iPhone application, which used this API.
Aug 2003 – Aug 2007: Fotango (software developer)
Fotango was a bespoke software development company wholly owned by Canon Europe. While there, I had significant involvement in almost every deployed project, and spent a large amount of time assisting, mentoring and training the front-end team in the use of our frameworks and general good development practices.
We worked primarily in Perl, for stand-alone scripts, GUI applications (on Mac OS X and Linux), CGI, and full mod_perl applications. I gained extensive experience with many CPAN modules, including Template Toolkit, DBI, and XML::LibXML, and have contributed several modules to CPAN. I was an active member of the London Perl Mongers group, and have given talks on UTF-8 in Perl, Mac GUI applications, and other topics.
2000 – 2003: Other Technical Roles
Flame – a Mac OS services browser (https://movieos.org/code/flame/) – is available on the iOS and Mac app stores, and I maintain a list of other interesting or in-progress projects at movieos.org/code.
Sep 1997 – Jul 2000: Maths BSc (2:2 Honours), from Imperial College, University of London.
CV last updated 2020/03/29