I'm a senior freelance iOS developer, available to work onsite in any location in the world (as well as remotely). I’m currently available for from January 2016 onwards.

You can read more about hiring me and how I work, or download my resume.


PORTFOLIO

2016: Pariti, iOS developer

Syncs with the user's bank accounts to provide them with an overview of their financial state. The app shows what is safe to spend each week, and notifies them if their balance is running low.

I initially provided 1 month of holiday cover for the lead developer, but remained for another month working with them to modernise the app architecture. I introduced the Functional Reactive+MVVM pattern to help simplify some complicated user interactions.

Swift, ReactiveKit, MVVM

Ian is an experienced iOS engineer and great guy to work with. During his time in Pariti, he worked very hard on improving the code base, particularly on the architectural side with the introduction of the MVVM pattern, Reactive programming, and Unit Testing. He is a responsible developer, pragmatic but also always looking for the best code standards to adopt.  It would be great to continue working together on the future.
— Matt Ford, Pariti CEO

2016: Knab, iOS lead developer

2016: Aruba Bank, iOS lead developer

Knab and Aruba Bank were the first releases to run on the BankingRight framework, described below: 

2016: BankingRight, iOS lead developer

A customer-facing banking product for iOS, Android and the web. I was the lead developer of the iOS app. We built reusable components which could be pieced together to create a complete app for each client. This meant building super-light and reusable ViewControllers, swappable ViewModels, etc, and having extension points for adding additional functionality per-additional client.

Responsibilities:

- Teaching idiomatic Swift development to an Objective-C focused team.

- Driving adoption of modern iOS best-practices: teaching Functional Reactive programming, how to use MVVM, the use of Swift Generics, Protocol Oriented Programming, Unit Testing.

- Building configurable View Controller components for a whitelabel product (the framework we built was deployed three times during the project, and is to be expanded to other applications).

- Assisted client in interviewing new candidates.

 

Swift, ReactiveKit, MVVM, Lead Developer

Ian was fundamental in defining the product based development approach for BankingRight. He introduced us with concepts such as Reactive Programming and MVVM that play a major role in the BankingRight architecture. His vast knowledge and ability to solve complex issues, while delivering sound a testable code, characterise him. It is a pleasure to work with him and I hope to do again in the future.
— Rogier Saarloos (Solution Architect - Virtual Affairs)

2016: Tacks

I've been working on a side-project named Tacks for several years and, though it's not faced fame and fortune (yet 😏), it has acted like a workbench on which to prototype and practise different and emerging techniques on the fast-moving and every-changing iOS platform: MVVM, then later MVVM-C (when we realised we needed some way to control navigation), ReactiveCocoa, ReactiveKit (much more handy), Protocol-Oriented Programming, Swift itself, the fastlane toolchain and so on.

I'll be launching 2.0 later this year.

 

Swift, ReactiveCocoa, ReactiveKit, MVVM


 

2015: Philips Health 

HealthKit app with wearable watch

I joined a small, expert development team (CodeKrafters) hired by Philips to work onsite and re-write the iOS part of a personal healthcare product. The app gathers health information from many data-points provided by the user (as well as from external Bluetooth devices) and offers support and coaching on what changes the user can make to live more healthily. I worked with HealthKit, as well as built a number of detailed bespoke transition animations (used to move between screens). I drove the adoption of the MVVM pattern within the project.

 

Objective-C, HealthKit

 
 

2014: iBeacon proof of concept for Triple

Six week technical proof-of-concept

Sometimes I’m approached to quickly prototype an idea to test viability. In this instance, I was asked to build a proof-of-concept chat client which used (brand-new, at the time) iBeacon technology to both broadcast and detect when other iPhones (with that app installed) were close, so that public, transient conversations could be had between people in a crowd.

The main challenge was getting it to work whilst the app was in the background, as well as implementing a reliable iBeacon stack. I used the ReactiveCocoa framework here to model the Bluetooth interactions declaratively, minimising the amount of application state I would need to juggle, thus simplifying the task and allowing me to successfully deliver the project in a very short timeframe.

I also wrote a simple backend API using Ruby on Rails which powered the chat feature.

 

Objective-C, ReactiveCocoa, iBeacons, Ruby on Rails


“It was a honor to work with you. I really liked the way we approached problems and solved them. You are a real senior in what you do.”
— Rogier Saarloos, Virtual Affairs

2014: MijnTele2 App for Virtual Affairs

Customer utility app for major Netherlands telecoms operator: Check your spending on calls and text messages, keep tabs on your data usage, and view your invoices.

 

Objective-C, MMRecord


2013: Songdrop

A beautiful app for streaming music and videos socially from around the web.

  • Compelling UI, which was a joy - and a challenge - to build, especially on iOS6
  • Synced playlists with API, containing content (music and videos) from many places around the web: YouTube, Soundcloud, Vimeo, etc.
  • Written in RubyMotion, which was a requirement of the client.
  • Party-jukebox feature, where users could all vote (on their own phones) on the next track to be played at the party.

RubyMotion, Ruby, Objective-C


2012: Audi Mileage Tracker for Zonica

Highest profile app to-date. Winner of "Best Company Car App" and "Highly Commended” at the Effective Mobile Marketing Awards 2012 

 

Objective-C


2012: iSurvey Inventory

For efficiently auditing the contents of a house

“The App looks unbelievable and is so user friendly, absolutely fantastic work!”
— Andy Wright - iSurvey-Inventory

I managed this entire project and worked directly with the client, even recording and producing demo videos of the app (with voiceover). iSurvey Inventory is a powerful, widely used iPhone app that allows estate agents to walk around a house and quickly audit it’s contents, recording any damage etc using the camera.

  • Fully editable database of pre-added items and metadata. 
  • Pushes data to server to generate a large (60 pages+) PDF containing the data and photos.
  • E-Commerce module for members to purchase ‘credits’ using SagePay on the website.
  • Operates both offline and online, syncing with the server so that team members can access the PDFs from the website.
  • Server-side code written in PHP using Zend Framework and Propel.

Objective-C, PHP, Zend Framework, Worldpay Checkout


Everything earlier than 2012 has scrolled off the bottom of time itself..