Hi. I’m Chris.

I work as a senior software engineer at BorrowMyDoggy on both their web and iOS platforms. I also consult for a range of startups and companies around the world.

Recent Projects

BorrowMyDoggy: iOS Payments, Implementing IAP in a Week

When looking to integrate subscriptions into the BorrowMyDoggy iOS app, we knew it would be difficult. Apple's rules around subscriptions had previously led to the app being rejected for linking to the subscription page on our website, in that rejection we'd been instructed to use Apple's In App Payment technology.

IAP is an iOS only payment system, tightly linked to iTunes Connect and which poses a number of unique integration issues; no way to identify payments beyond the device, undocumented payment flows, and buggy third party libraries.

After a buggy first release we needed to ship a fix for an undocumented "Storekit Flow", which we'd identified after a number of users reported their subscription not registering. This involved re-implementing almost a month of work in less than a week as the solo developer on the project.

The new implmentation resolved the issue but highlighted just how important it is to ensure that third party libraries are following Apple's best practice guides, particularly around poorly documented features such as IAP.

Eventbrite: Brand Pages, Writing a Ruby Gem for the New API

The brand pages application conencts brands to their events, allowing them to share themes between across events organised by different Eventbrite accounts. Users include AMEX's Small Business Saturday, The NYC Beer Week, and Movember.

For this project we built and open sourced a gem to integrate with the brand new V3 Eventbrite API. Since the API was not yet publicly available there were no existing gems that could be repurposed and so as part of the initial project I worked with Eventbrite to work out which parts of the API we would need and should include in the initial release of the gem.

After a successful project, which was featured by the market place through which Eventbrite had found me (Crew.co: The story of Eventbrite), we then went on to fork the codebase and create a second related project targeting running event planners.

Alongside the creation of a Ruby Gem this project also presented interesting challenges around scaling Ruby file processing with CSV files tens of thousands of lines long being required by some of the event planners, this led to a re-implementation of the CSV creation code in order to lower the memory footprint and make the site more preformant.

InspireMore: WordPress Content Site, Scaling to Millions of Pageviews

InspireMore is a WordPress backed content site, aiming to do social good through sharing inspring stories. Starting in late 2014 the site quickly gained popularity and grew from hundreds to millions of pageviews in a few months.

Scaling WordPress is not impossible but is also certainly not easy, and although helped by CDNs, MySQL optimisation and plenty of hardware, it did provide a number of unique challenges.

One particular challenge was created by a site attempting to scrape non-existant URLs on the site for content and hitting thier 404 page thousands of times per second. On many sites this would not be an issue however, the default 404 page in the theme they'd chosen to start with ran no less than 10 database queries per request, causing the site to lock up and become unresponsive.

Once I was able to SSH into the InspireMore servers, replacing the 404 page with a static 404 file was a simple task, and allowed the site to quickly return to normal.