In March 2013 I joined TRAIL as their second developer, then quickly found myself as their only developer. TRAIL is a platform for teaching Internet literacy; their JobScout site is the first one out of the gate, designed specifically for job seekers. TRAIL completed in TechCrunch Disrupt SF 2013‘s “Startup Battlefield.”
While most of what’s visible on the site is a new design I implemented, a lot of the underlying code is still the original system. I’d started to rewrite the platform using Laravel 4, although this project is on hold as of early 2014. I’ve been refactoring the code as I can.
Nokia Point & Find
Point & Find was (one of) Nokia’s “Alternate Reality” projects, a downloadable application for some Nokia devices. Point & Find customers—business, tourist agencies, and the like—could create “worlds,” data sets combining images and and location metadata, that let P&F’s users get information about whatever they were looking at. If you’re thinking that sounds like the original Layar or Google Googles, you’re right.
I worked as a web developer on both the “Management Portal,” the back end system customers used to manage their worlds, and the consumer-facing landing site. We used a canonical LAMP stack with services built on the Symfony web framework as well as an in-house framework we inherited from Pixto, the company that became Point & Find. (Let’s tactfully describe that framework as “eccentric.”)
As Point & Find’s operations wound down, I worked as part of Nokia’s “Universal Search” team, developing on-device user interfaces in Qt QML. As far as I know that UI was never deployed, a casualty of Nokia’s shift away from Qt toward Windows Phone.
Fiji Island Escapes
The way I usually describe this project is: think of Hotels.com, but just for Fiji. Two guys with deep connections into the hotel and tourism industry on Fiji figured they could do a better job with the nuances involved in lodging and traveling there.
I did nearly all of the work on the site, both behind the scenes and in front: database design, front and back end implementation, interfacing with the payment gateway and the frustratingly API-free booking system, and most of the UX work (modeled on both the client’s design sketches and the work of a third-party graphic designer who came up with the logo and color scheme). I even ended up choosing the web host. I built it on a standard LAMP stack using the CakePHP framework, jQuery, and a Python script that synced our availability tables with the booking operator’s.
(As of 2013, the site appears to be offline.)
CAM is an SaaS application designed to manage process controls in an enterprise. A less buzzword-laden way to look at it is as a calendar-based task system on steroids: a manager can assign tasks that require proof of completion, anything from a “I did this” checkbox to a form they have to download and re-submit. Tasks can be recurring or fired off on-demand, and completing one task can in turn trigger another task. (After Bob has completed the TPS Report, it’s sent on to Emily, who uses it to order more staplers.) Managers get high-level views of all the tasks under them with the ability to drill down, and auditors get their own reports with downloadable supporting documentation.
We built CAM in CakePHP, which became an adventure after the good folks at CakePHP HQ decided that version 1.2 didn’t need to be backwards-compatible with version 1.1. The system used a mishmash of Prototype and YUI for Ajax bits. I implemented nearly all of the system, from front-end to back-end, using design specs from the executive at Illumant whose idea CAM was. As usual, it was a pretty canonical LAMP stack.
CAM PowerPoint Presentation (It’s what I have!)
Claw & Quill
Originally a social network for “everyday atheletes,” RivalZone featured both an iPhone app and a Flash-based web app for scheduling events—golfing, tennis, full-contact shuffleboard, whatever—with your friends, finding new people interested in the same sports you are, and keeping up to date with one another. I came on board after they were already most of the way through the development, to help update and enhance the service back end and implement the designer’s work on the landing sites.
Since then, RivalZone has pivoted multiple times, first to something similar to the first version but only for golf players, with the ability to find and “check in” to golf courses with the idea that the courses could run specials and deals, and then to something for tracking golf scores and allowing players to wager on games. For the first pivot I wrote a new back end in Python using Flask and SQLAlchemy, using RabbitMQ for a notification message queue—which was about 90% finished but never deployed. I departed the project around then; I know they’ve had multiple iterations since on different platforms.
I take pride in being an engineer who (mostly) likes writing documentation. I’ve authored/edited hardware manuals for Global Locate, edited training manuals for Yahoo as a subcontractor, and did some authoring work—along with content management—at Cisco. In addition, some of my other jobs have involved preparing white papers. Unfortunately, I have few samples, as the writing I did tended to be for internal use.
One bit of more consumer-targeted work you can still find of mine is a review of Nisus Writer Express written for “About This Particular Macintosh.” My Github repositories have some documentation as well.