I'm a senior independent Swift and Objective-C developer. With experience dating back to "iPhone OS 3" (as it was then known), I've worked on a diverse portfolio of iOS projects (at least 20 to-date), including several that are well-known: recently a HealthKit app for Philips, and an award winning navigation app for Audi.
Originally from northern England, I'm currently travelling with my laptop, dividing my time between my side-project Tacks and working with clients around the world to bring their ideas to life.
I invest a tonne of time keeping myself up-to-date, and constantly seek to improve the way I write code, trialling new techniques in my own side-projects. Lately I have been integrating more functional techniques into my code, namely using ReactiveCocoa & ReactiveKit to reduce the complexity of managing state. I gave a talk on my research at CocoaHeadsNL in April 2015.
I write Unit Tests and employ Test Driven Development (when it's appropriate), to write reliable, well-structured code.
Please also see my work at github.com/iandundas
2015: Philips Health app with CodeKrafters
I joined a small, expert 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, developed a number of detailed bespoke transition animations (used to move between screens), introduced an abstraction for quickly building dynamic data-input screens, and drove the adoption of the MVVM pattern within the project.
2016: Tacks (independent)
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, and so on.
I'll be launching 2.0 later this summer.
2014: iBeacon proof-of-concept for Triple IT B.V.
Sometimes I’m approached to quickly prototype an idea to test its viability. In this instance, I was asked to build a proof-of-concept chat client which used iBeacon technology to both broadcast and detect when other users of that app 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.
2014: MijnTele2 app for Tele2, with Virtual Affairs B.V.
As part of relocating to The Netherlands, I worked for a year at local software company Virtual Affairs. Whilst here I rewrote Tele2’s iPhone app, and in the process developed a reusable architecture for API-centric iOS apps. I also standardised the build process under a continuous integration setup using Bamboo server. I migrated the rest of the mobile team from SVN to git, advocated for TDD, and gave a presentation for the company about the upcoming in changes iOS8.
Songdrop, written for iOS in RubyMotion whilst I was living in Hanoi, allows users at a party to vote (using their own phones) on the next track to be played. Tracks are loaded from a variety of sources, (YouTube, SoundCloud, Vimeo, etc) and the app needed to support background video playback without stopping (which was hard at the time). I used web-sockets to quickly propagate a user’s choice.
This is just a selection, for a more detailed list please see iandundas.co.uk/portfolio
Introduction to Functional Reactive Programming with ReactiveCocoa
I gave a presentation for CocoaheadsNL on the "Functional Reactive" paradigm and specifically how it can be used in ReactiveCococa. The video is online: iandundas.co.uk/speaking
Newcastle University: MSc — 2008-2009
Graduated with a Distinction.
I read ‘Systems Design of Internet Applications’ at Newcastle University: this included a period of 5 months spent at Arjuna Technologies (a distributed-computing research group) researching for my Masters thesis.
Thesis: ‘Dynamic Propagation Within a Federated Cloud’
Newcastle University: BSc (Hons) — 2005-2008
Graduated with a 2.1
I read Computer Science at Newcastle University, during which time I also worked for Newcastle Student Radio as the head of Web Technology and Development.
I’ve travelled widely, having visited 29 countries to-date. I’m an avid cook, as well as an amateur brewer. I enjoy keeping fit particularly mountain biking and swimming, and most importantly I’m a huge music lover: last.fm/user/innus.
I’m currently learning Dutch duolingo.com/iandundas
Prof. Santosh Shrivastava, +44 191 222 8038
School of Computing Science, Newcastle University, Newcastle upon Tyne, NE1 7RU