Dr. Gareth S. Bestor (@xiphware)
Location: Where do you live? Where do you work?
I live in a 1902 homestead (ex-sheep station) on 3ha tucked in the foothills of the Tararua Ranges, outside the Pahiatua township in the North Island of New Zealand. The area is deemed ‘summer safe’, which is code for it rains a lot.
Prior to moving (back) to New Zealand in 2012 I spent most of my adult life in the USA, first in graduate school at Madison, Wisconsin, then at IBM in upstate New York and finally Portland, Oregon, as a Senior Software Engineer in the IBM Linux Technology Center, writing open-source code for open standards. Upon returning to NZ I had to reinvent myself, and now I am the Senior Software Architect in a small private tech company - Master Business Systems (MBS) - developing mobile solutions for local government and related industry.
Tell us a fun fact or story about yourself!
When I was 11 years old my father, who was a philosopher [yes, really, they do exist!], took us on his sabbatical to the USA. Out of necessity I was enrolled into middle school, where I was very much the odd, gangly, geeky foreign kid with an indeterminant accent (“Australian?”) whom nobody could quite pigeon-hole. One day, in mathematics class, I made a mistake while writing a math problem (in pencil) and, lacking the necessary device to rectify aforementioned error, I (loudly) asked the pupil sitting beside me - who happened to be the school’s football quarterback, and #1 Jock - if I could “borrow his rubber”.
Suffice to say, there are some Anglo-English terms which have markedly different definitions in American-English. Is this particular case, my request was interpreted as something you should strictly never ask your peers for, and most certainly not something you should ever ask to ‘borrow’. Fortunately, my father’s sabbatical was only for a year, so I was spared the remaining 2 years of ignominy.
How did you first find out about ODK?
That’s a bit of a convoluted story, but here goes… My first mobile app was for iOS for displaying player and match statistics for the All Blacks - New Zealand’s national rugby team (I had an iPhone 4S and had pretty much learned Objective-C and Xcode back when these were still NeXTSTEP). The All Blacks database was maintained by MBS. Whilst pitching my rugby app to the MBS director, he mentioned offhand that they were struggling to develop a general-purpose framework for conducting mobile inspections out in the field. Always up for an challenge, I decided I’d take a stab at it. After looking at what standards existed for form-related APIs, I zeroed-in on XForms as being the most functionally expressive, platform agnostic, and mature. Then, looking for what, if any, XForms code had been written for iOS I found an old project from 2011 - ocRosa. It was buggy, incomplete, but I could parse some basic XForms with it, and after pairing it up to another open-source GUI library I had a working iOS prototype. MBS were intrigued. But ocRosa needed a thorough overhaul, which consequently lead me to find out what this javaRosa was all about that it was trying port. And javaRosa very quickly led me to the ODK Project... alea iacta est.
What are you using ODK for?
[As an iOS developer I’m somewhat an endangered species here, but in the spirit of full disclosure…] Unfortunately, being on the iOS platform means I can’t use ODK Collect or javaRosa. But other tools, like ODK Aggregate and the new Central backend, have been invaluable to me in quickly prototyping XForms client code and testing end-to-end workflows. For example, from my (iOS) client I could fill in forms, submit them (to an ODK Aggregate server) and have the results pop up live in a Google Earth window (by streaming submissions from Aggregate to another server and converting them to KML). This would have taken weeks to accomplish if I had to roll my own XForms stack.
Initially I hand wrote my XForms in XML, but as our project matured we identified the need to provide a more user-friendly interface to create inspection forms. We were able to exploit existing ODK tools to accomplish this, saving us from having to write an entire forms builder from scratch. Finally, we wanted to expose a REST-based API for our backend, so that users could retrieve inspection results to integrate into their own EMS systems. Fortunately, the ODK Central team have designed a very good REST API that we could mimic.
So although we are perhaps not using the core ODK tools - Collect, Aggregate, Briefcase, javaRosa, etc - directly in our XForms product, we have used them extensively for prototyping and continue to derive guidance and inspiration from the ODK project. And we do directly exploit some of the 3rd party tools available from the broader ODK ecosystem, e.g. KoboToolbox, pyxform, and Enketo.
What’s your favorite ODK feature?
Probably the fact that ODK still attempts to conform to, and indeed extend, the XForms ‘standard’ in a holistic manner. Arguably, ODK is the final say in XForms today; projects in a similar position often suffer when individuals’ personal preferences drive a ‘standard’ down a particular path. Fortunately, the ODK group has a wide breadth and depth of experts behind it, who actively solicit feedback and openly encourage critical review of any proposed changes. XForms is in good hands with ODK.
How did you get so involved in the community? What keeps you coming back & staying involved?
Much of my work in the IBM Linux Technology Center revolved around open standards, so I naturally have somewhat of a critical eye on the XForms standard, and in particular javaRosa/ODK’s implementation thereof. In trying to precisely implement the XForms standard myself, and at the same time maintain compatibility with the ODK ecosystem, whenever I found a discontinuity I would bring it up in the ODK Google group. Hélène’s (@LN) and Yaw’s (@yanokwa) unflinching patience with my constant badgering about apparent inconsistencies impressed me, as did their thoughtful, reflective and intelligent responses. This was clearly a community of passionate, intelligent individuals, based on merit, much as I’d grown to admire with the core Linux development community in my previous life.
As a consequence of having to code some of the lower-level details of implementing XForms natively on iOS, I found I had some insight into murkier waters of XForms, particularly XPath, which allowed me to intelligently answer some of the questions others were posting to the ODK Forum. This is probably where I first started actually contributing something useful back to the ODK community.
What advice would you give someone who’s just learned about ODK and is considering getting involved?
Learn more, and get involved - share what you’ve learned with others who are still learning! Please don’t be afraid to ask questions. You will find our community is open, friendly and encouraging. And when you finally feel comfortable enough that you have something to contribute back, e.g. answering another newbie’s question, please don’t hesitate.
What has been the greatest challenge for you in learning about ODK? (Either the software, the community, or both!)
Given my background in open standards, coming to grips with XForms, XPath, and the ODK APIs actually wasn’t a big challenge, which is perhaps where others initially struggle. But I was certainly helped by having decent online ODK documentation (and the fact I can decrypt W3C standards documents), and the openness of the ODK community when getting anything not explicitly obvious clarified. My greatest challenge has probably been trying to decipher how javaRosa accomplishes some of its magic; Java isn’t my first language, and javaRosa is now quite an old codebase. But I like learning new code, so it has been a fun challenge.
Let’s talk about goals: Do you have any ODK-related goals for yourself, your organization, or the overall ODK community?
One of my big personal goals is to perhaps someday get my code up to snuff to open-source an Objective-C/Swift library to support a native iPhone/iPad ODK client. I am a true believer that open-source makes the finest code, and that it is still possible to make a living off open-source code. The continued existence of Linux, and ODK, is proof of that.
For the ODK community as a whole, my hope is that it will continue to thrive and grow, and my goal is to help that endeavor in whatever capacity I may. It is a worthy investment with ample returns.
Finally, someday, I want to be a model for Levi’s too.