C# and mobile geek, Xamarin MVP and Certified Mobile App developer, Microsoft MVP, blogger, speaker, author and technology enthusiast.
Reading, UK
I am an international C# geek who has spent time hanging around in finance, startups and mobile app development shops for the past 20 years in 4 different continents. I have been a Xamarin Certified Developer since April 2015, a Xamarin MVP since January 2016 and a Microsoft MVP since January 2017. When I'm not building mobile apps using Xamarin I can be found blogging, talking at meet ups and conferences, playing with iBeacons and creating open source projects in GitHub. I am one of the co-organisers of the Auckland Xamarin Meetup, as well as the author of Xamarin In Action, published by Manning. I am incredibly passionate about good, clean, well tested code. I am a huge fan of deleting code and replacing it with less code - one of my favourite sayings is 'the closest you can get to bug free code is code that isn't there'. I also have a great love of sharing knowledge with people who want to learn, be it mentoring and training enthusiastic junior developers, sharing knowledge of new technologies with people who want to discover awesome new things or organising user group meetings to bring together like-minded people. |
Books
Xamarin In Action, published by Manning
![]() |
Xamarin in Action teaches you how to build Xamarin apps on iOS and Android from scratch while maximizing code re-use. This layer-by-layer guide starts by showing you the MVVM design pattern and explaining how it increases code sharing. Next, you'll start building an app from the ground up. You'll learn all the different layers inside a well written Xamarin app and discover how most of your code can be shared between iOS and Android. You'll look at how this code sharing can be best designed to allow unit testing of your business layer as well as your UI logic. Then you'll dig in to code that can’t be shared, like user interface code that's device specific. Finally, you'll learn how to take your app from final code to a tested and deployed version on the relevant store. By the end, you'll be able to build a high quality production-ready Xamarin app on iOS and Android from scratch with a high level of code reuse. |
Technical review - Xamarin Mobile Application Development by Dan Hermes
I helped Dan with this book by reviewing the code samples and text, and providing code changes, bug fixes and improvement suggestions.
Meetups
Auckland Xamarin Meetup
I am one of the co-organisers of the Auckland Xamarin Meetup, we meet about every 6-8 weeks and host talks on a wide variety of Xamarin based topics. I have given talks at this meetup covering a review of the Evolve conference and UI testing.
We also hosted a Xamarin Dev Days, with over 80 attendees.
Other meetups
I am a regular speaker at other meetups, including giving at deeper dive into Xamarin for the North Shore .Net user group, and speaking about using iBeacons with Xamarin at multiple Xamarin or mobile meetups in the UK.
Conference Talks
Adding platform-specific magic to cross-platform Xamarin Forms apps (Slides)
Xamarin Forms is a fantastic abstraction on top of iOS, Android, Windows and Mac. It allows you to write one UI that is shared between platforms using the underlying UI controls native to each OS. The downside to this is the lowest-common-denominator model - only the features that are available on all platforms are provided out of the box. Luckily Xamarin provides a swathe of techniques to allow you to add platform specific tweaks.
This session looks at some of these techniques, from the small number of platform specifics provided out of the box by Xamarin, to writing effects and implementing your own custom renderers. Each technique will be demonstrated with a live coded example showing just how easy they are to get working.
Making your native apps even more cross-platform using MVVM at the Microsoft Cross-Platform Dev Summit 2017 in Vietnam (Slides)
This session looked at MVVM and how you could use it with native Xamarin apps to increase the amount of cross-platform testable code in your mobile apps.
Please bring me coffee - using iBeacons to seamlessly engage with apps - Xamarin included! at MS Ignite NZ 2016 (Slides)
This session introduces iBeacons and discusses how to use them to build context aware applications, and what types of problems those applications can solve. It looks at how you can notify an app when you are near an iBeacon and how you can use them to track indoor location. It also discusses the downsides, such as security concerns and problems around beacon deployments. As well as discussing the concepts it also contains a live coding Xamarin demo showing just how easy it is to beacon-enable your apps, with live demos of notifications and indoor location tracking.
Clicking on the real world with iBeacon and Eddystone at Xamarin Evolve 2016 (Slides)
Contextual awareness is a fast-growing trend in mobile development. In this session, I take you through a quick overview of beacon technology, including Apple's iBeacons and Google's Eddystone, before diving into some code. I even build a simple app live on stage to demonstrate how you can detect and wake up beacons, as well as detect user proximity to beacons.
Blogging
Expecting Someone Geekier
This is my own blog where I blog about a range of topics from technology to food (I am a great lover of both). The blog is hosted on Ghost.org using an open source theme that I have created.
Core Java Interview Questions - Technical tests
I was asked by Sam Atkinson, the creator of Core Java Interview Questions to write a guest blog about an area of interviewing developers that is important to me. My post was all about technical testing and the particular way I like to do it to help developers show off their skills in the way that is of most benefit to them.
Podcasts
The Jim and Tonic Show
A regular podcast where I interview other members of the Microsoft Cloud Developer Advocacy team.

Core Java Interview Questions episode 4
Due to the popularity of my blog post on technical testing, I was invited to join Sam for an episode of his Core Java Interview Questions Podcast. What was only meant to be a 20 minute discussion turned into a good hour of conversation all around how we like to perform technical testing of candidates, and was recorded in one take with no editing. Shortly after this episode was published the podcast briefly topped the Software How-To category on iTunes, above Hansleminutes and dotNetRocks.
Videos
Building iBeacon Apps with Xamarin
This is a tutorial video that explains the basics of iBeacon app development, then demonstrates with live code examples how to build your first iBeacon app.
Visual Studio Extensions
MvvmCross Template Pack for Visual Studio for Mac
This extension adds a new solution type to Visual Studio for Mac to allow you to create a single solution containing a core project, and iOS app and an Android app all using MvvmCross. I wrote about how to build this on my blog.
MvvmCross for Visual Studio
This extension adds a new solution type to Visual Studio to allow you to create a cross platform MvvmCross solution targeting iOS, Android, UWP and WPF.
Apps
Second Screen for Plex (Now removed from the app store)
This app is an add on for the Plex ecosystem - it connects to your running Plex server and shows you details about what is currently being watched, including cast and IMDB links.
It was built using Xamarin.Forms and uses two of my open source libraries - JimLib.Xamarin for the app framework and RestAndRelax for Plex for the Plex communication.
Open source projects
My open source projects on GitHub
I have created a number of open source projects and am continually contributing to these and creating more.
Some highlights include:
Forms Community Toolkit
A toolkit of effects, controls and other components for Xamarin Forms projects (contributor).
Stupendous Counter
A simple Xamarin.Android app that has an accompanying blogging series showing the creation of an entire mobile app from concept to execution.
JimLib
A portable class library implementation of a basic MVVM framework
JimLib.Xamarin
An extension of the JimLib MVVM framework designed to provide a basic application framework for Xamarin.Forms applications.
FauxGhost
A blog theme for Ghost.org that I use for my own blog.
Gists
Certifications and Awards
![]() |
Xamarin Certified Mobile DeveloperExpires April 2017 |
![]() |
Xamarin MVPAwarded January 2016 |
![]() |
Microsoft MVPAwarded January 2017 |
Education
![]() |
MChem in Computer Aided ChemistryAwarded June 1999 |
Employment History
EROAD (New Zealand)Mobile Application DeveloperFebruary 2016 - Current |
||
---|---|---|
Xamarin
Xamarin.Forms
Xamarin.Android
Xamarin.iOS
C#
UITest
Android
iOS
Mentorship
Video creation
Content creation
Blogging
|
Barclays (UK)Software Developer (contract)November 2014 - December 2015 |
||
---|---|---|
C#
WPF
Git
Code Review
MongoDB
Performance
F#
Evangelism
|
Sabbatical (Thailand)July 2014 - November 2014 |
||
---|---|---|
C#
Xamarin.Forms
Xamarin.iOS
Xamarin.Android
Node.js
REST
Git
MongoDB
OpenSource
|
Nephila Capital (Bermuda)Senior Software Developer (contract)November 2013 - June 2014 |
||
---|---|---|
C#
WPF
UI
Git
Jira
Agile
PowerShell
RequirementsAnalysis
|
CLSA (Hong Kong)IT Team LeadSeptember 2011 - October 2013 |
||
---|---|---|
C#
WPF
UI
RealTime
Jira
Agile
TeamCity
DevLead
|
HSBC (UK & Hong Kong)External Consultant (Contract)September 2007 - May 2011 |
||
---|---|---|
C#
WPF
WinForms
SQLServer
TeamCity
RemoteWorking
|
RBS (UK)Software Developer (Contract)February 2007 - September 2007 |
||
---|---|---|
C#
TestAutomation
|
Barclays (UK)Software Developer (contract)September 2005 - February 2007 |
||
---|---|---|
C++
Java
VBA
|
Nomura (UK)Software DeveloperMay 2004 - September 2005 |
||
---|---|---|
C++
VBA
|
IDBS (UK)Software DeveloperSeptember 1999 - May 2004 |
||
---|---|---|
C++
MFC
COM
TDD
Oracle
|