Sunday, July 14, 2013

Google Glass Development Follies

By occupation, I am not a developer, coder, or programmer . . . nor do I play one on TV. Yet I have developed applications, web sites and client applications in the past. I have to say that was the distant past (chronologically: FORTRAN 77, BASIC, HyperCard / HyperTalk, Visual Basic, SQL in Access, FileMaker Pro, RegEx, HTML 3.2, LotusScript and JavaScript) and so for well over a decade I have not done any programming. In fact, many would see my previous list of "languages" and declare that I was simply scripting, not really programming at all! Which is fine and I am inclined to agree. However, my point is that while I am not a skilled developer I do know what development is and generally how it is accomplished.

Further, as an IT Enterprise Architect, I "develop" applications for a living. Just not down to the level of code, just like a building architect or shopping mall developer rarely grabs a pneumatic nail gun or diamond-tipped tile saw to complete the project. Yet all architects need to know the materials available and how the tools operate to properly execute a well-designed building. Thus, when I was selected for the Google Glass Explorers program, since it was a new UX and platform, I thought I'd try my hand at designing a native application for Glass.

My app, I mused, would be something simple: a location-aware service for botanic gardens and parks that would provide geographically appropriate information cards that could give the wearer rich information about their surroundings. For example, at Rancho Santa Ana Botanic Garden near where I live the cards would appear when you are in the riparian zone on the mesa or in the palm oasis or in the wildflower meadow. A virtual reality tour of sorts.

A week after I got my Glass, I enthusiastically began. After a bit of research and reading the materials provided by Google, I began to setup my development environment. Mainstream Glass development involves hosting your service on the Google App Engine (GAE) and I set about to register for GAE, activate the API, and publish a sample application. I needed to select a language (FORTRAN 77 was not supported!) and at first I decided to go for the future and I selected Go, the new language for web applications invented by Google. The Go "Getting Started" tutorial provides a sample application and a step-by-step instruction and for the most part, I was able to follow and successfully deploy the application. The step-by-step lesson builds upon itself and when it got more complicated, my application in Go would not compile, but I had a working app up on the big bad internet, so I was feeling pretty good.

The next step was to try to get the Glass Quickstart application compiled and working on my GAE instance. This did not happen. The instructions left out some parts and did not clearly state where files or libraries should be located. After tinkering for several multi-hour sessions of the course of 3 days, I thought that possibly Go was too new of a language for me to tackle, with two few experts hanging out on the forums to help a newbie like myself. In looking at the activity on the various forums like GitHub and Stackoverflow (both new to me, sonny!), it seems that people were much more involved in Python. There was already another new Python Glass app on GitHub about counters, so this was encouraging.

So I plunged into Python. And like its reptilian namesake, my time, confidence and self-esteem were slowly squeezed to death. Not that Python, the language, itself had anything to do with it, but the development environment is not standardized all that well and the nature of the open source path is fraught with peril for the uninitiated. That said, there are a lot of tutorials, blogs, and books out there, but many times these resources begin with assumptions which lead to deployment errors. I tried again and again to get the Glass Quickstart for Python deployed, but error after error stopped me in my tracks. I was missing libraries, had the session.secret file in the wrong directory, etc. My being on Windows did not help matter either because developers today just don't do Windows (unless you're in .NET).