I'm a senior freelance iOS developer, based in Amsterdam, available to work remotely or onsite from any location in the world. I’m currently available from July 2018 onwards.

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

Specialities: I have a particular focus on Functional Reactive Swift (RxSwift and ReactiveCocoa), the architectural patterns they enable, as well as Realm & Core Data, CoreLocation, refactoring, simplifying and modernising old codebases, and teaching.


2017/8: Vhi Health Assistant, iOS Lead Developer

Vhi Health Assistant uses a video connection to connect patients face-to-face with an online doctor (pay as you go using Stripe), and so reliability, privacy and security were of paramount concern.

I built and led a team of six iOS developers. The entire management and development team was remote, distributed across 10 countries. Vhi had no prior mobile presence, yet starting this new project from scratch we were able to make two major releases during the year, to an audience of now tens of thousands of active users. It’s currently rated #1 in the “Medical” category of the Ireland iTunes App Store (June 2018).

Swift, RxSwift, MVVM, OpenTok, Stripe

Ian was not only able to deliver the project on time but he also managed to achieve incredibly high standards, while at the same time on-boarding and mentoring new team members and handling many client facing aspects. He is not only one of the most talented developers I have worked with but also understands the importance of good working systems, tools and repeatable processes.
— Brad Legge, Project Lead
Screen Shot 2018-06-22 at 22.59.14 cropped.png

2017: Tacks, (personal side-project)

Pinpoint the places you want to come back to. Tacks can quickly drop a pin by the places you find, allowing you to retrace your steps later.

I've been working on this app for several years and, though it's not faced fame and fortune (yet 😏), it has acted as a workbench on which to prototype and practise different and emerging techniques on the fast-moving and every-changing iOS platform, which I've then been able to use in my client projects. MVVM, then later MVVM-Coordinator (when we realised we needed some way to control navigation), ReactiveCocoa, ReactiveKit (much more handy), Protocol-Oriented Programming, Swift itself, the fastlane toolchain, automated UI testing and so on.

Swift, RxSwift, MVVM

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 one month of holiday cover for the lead developer, but remained for another month working with them to modernise the app architecture. I introduced and taught 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 2 (BankingRight), iOS Lead Developer

2016: Aruba Bank (BankingRight), 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.


- 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)


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, MVVM


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 



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

Projects prior to 2012

Zonica: Share The Match (iPhone)
For socially predicting football scores

Zonica: Enjoy Publishing magazine platform (iPad)
For publishing fullscreen magazine content on iPad

Zonica: Audi Concierge (iPad)
An enterprise-only app for Audi to use at car expo events

Gospelware: GCSEPod (iPhone)
For school children in the UK to browse GCSEPod's educational content (to help their with revision).

Walton Robinson Lettings (iPhone) - no longer available
To browse Walton Robinson's property listings

NYCCompass (iPhone) - no longer available

Stud-Lets (iPhone) - no longer available
My first app 😇 - For browsing the student properties listed by Stud-Lets