Jim Bennett
Xamarin Certified Developer
Xamarin MVP
Microsoft MVP
Jim Bennett
Xamarin Certified Developer Xamarin MVP Microsoft MVP

C# and mobile geek, Xamarin MVP and Certified Mobile App developer, Microsoft MVP, blogger, speaker, author and technology enthusiast.

  Auckland, New Zealand

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

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.

Xamarin In Action

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

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

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.


Extensions and Add-ins

MvvmCross Template Pack for Xamarin Studio

This add-in adds a new solution type to Xamarin Studio 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, Windows 8, Windows Phone 8 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

NuGet Packages

JimLib

A portable class library containing a set of handy utility classes.

PM> Install-Package JimBobBennett.JimLib  
JimLib.Xamarin

A Xamarin utility class library containing a set of handy utility classes.

PM> Install-Package JimBobBennett.JimLib.Xamarin  
RestAndRelax Plex Media Server API

An API for accessing Plex Media Servers and the connected clients.

PM> Install-Package JimBobBennett.RestAndRelaxForPlex  
MongoDb collection comparison tool

A .Net tool to compare 2 MongoDB collections.

PM> Install-Package JimBobBennett.MongoDbCompare  

Certifications and Awards

Xamarin Certified Mobile Developer

Expires April 2017

Xamarin MVP

Awarded January 2016

Microsoft MVP

Awarded January 2017

Education

MChem in Computer Aided Chemistry

Awarded June 1999

Employment History

EROAD Logo

EROAD (New Zealand)

Mobile Application Developer
February 2016 - Current
February 2016 - Current
Xamarin
Xamarin.Forms
Xamarin.Android
Xamarin.iOS
C#
UITest
Android
iOS
Mentorship

Barclays (UK)

Software Developer (contract)
November 2014 - December 2015
November 2014 - December 2015
C#
WPF
Git
Code Review
MongoDB
Performance
F#
Evangelism

Sabbatical (Thailand)

July 2014 - November 2014
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
November 2013 - June 2014
C#
WPF
UI
Git
Jira
Agile
PowerShell
RequirementsAnalysis

CLSA (Hong Kong)

IT Team Lead
September 2011 - October 2013
September 2011 - October 2013
C#
WPF
UI
RealTime
Jira
Agile
TeamCity
DevLead

HSBC (UK & Hong Kong)

External Consultant (Contract)
September 2007 - May 2011
September 2007 - May 2011
C#
WPF
WinForms
SQLServer
TeamCity
RemoteWorking

RBS (UK)

Software Developer (Contract)
February 2007 - September 2007
February 2007 - September 2007
C#
TestAutomation

Barclays (UK)

Software Developer (contract)
September 2005 - February 2007
September 2005 - February 2007
C++
Java
VBA

Nomura (UK)

Software Developer
May 2004 - September 2005
May 2004 - September 2005
C++
VBA

IDBS (UK)

Software Developer
September 1999 - May 2004
September 1999 - May 2004
C++
MFC
COM
TDD
Oracle