This is the fifth post in our Xamarin Evolve 2014 “Speaker Spotlight” series, helping you get to know a little bit more about some of the amazing speakers who will be contributing at this year’s conference.
Paul Betts is a C# Hacker at GitHub, and the author of several open source .NET projects, including Refit, Splat! and Akavache. Paul graduated from The Ohio State University, and likes to spend his spare time hacking on open source software, playing guitar and bass, and in general is within ε of really awesome.
How long have you been doing mobile development?
My interest in mobile development started when iPhone first released their non-web SDK, but I really got started in mobile development when I added Xamarin support to ReactiveUI, which was about two years ago.
What are your favorite mobile apps and why?
My favorite app these days is Dropbox’s Mailbox. The usability designers who created that app are absolutely brilliant; while I don’t find it to be a particularly visually beautiful application (so much white everywhere!), using it is an absolute joy. If you’re building any kind of content-management/TODO app, study this thing like a graduate student.
What is your favorite platform to develop for and why?
THERE’S SO MUCH COOL STUFF YOU CAN DO ON ANDROID (WITH SOME WORK!) THAT YOU SIMPLY CANNOT DO ON iOS OR WP. WHILE IT’S SOMETIMES MORE FRUSTRATING TO WORK ON ANDROID, AND INVOLVES SOME PSYCHIC POWERS TO GET INTO THE HEAD OF THE GOOGLE ENGINEER THAT DESIGNED THE COMPONENT, THE SCENARIOS THAT ANDROID SUPPORTS ARE FAR MORE VARIED. ANDROID IS THE NEW RASPBERRY PI: YOU CAN INSTALL A TINY ANDROID DEVICE ANYWHERE!
What devices are you carrying around with you right now?
The devices I carry around with me are usually:
- An HTC One (M7) – It’s getting a little long in the tooth, but getting the Developer Edition meant that it was super hackable and easy to flash with the latest software, given a bit of adb and fastboot work. It’s a great device except for the camera.
- LG G Watch – I couldn’t wait until the Moto 360 came out – I’m excited to see if I can come up with a cool watch app!
- nVidia Shield – It’s an Android phone with a super-powered graphics chip and an HDMI out, bolted to a game controller. I use it to play old SNES games and write software for it.
What are your favorite open source libraries, and why?
My favorite libraries? The Xamarin ones I write, of course! I’ve got a lot of them:
The common theme around most of these libraries is that they let you write cross-platform code in a Portable Library, and the library handles the platform details. For example, ModernHttpClient brings the best platform-specific networking libraries to your app, but wraps them in a familiar HttpClient interface that works everywhere.
Separate from that, I love all of the great work that Jake Wharton does; he’s a great Android developer and a lot of my library ideas come from him.
What is your favorite line of code that you have ever written?
My favorite line of code I’ve ever written is here.
To explain it though, I need to back up. The goal of this class is to provide a mapped operation queue – i.e. you schedule a Task with a specific Key – Tasks with different keys run in parallel, and Tasks with the same key run sequentially.
The entire behavior of this class, this complex notion that would take pages and pages of buggy, unverifiable threading/locking code, is reduced to a single (relatively) beautiful statement in C# with Rx. What’s even cooler, is that the notion of scheduling priority (i.e. important operations should go to the head of the line), was added simply by changing a data structure, from using a normal Queue in a SemaphoreSubject, to using a PriorityQueue.