This is a non-exhaustive list of (mostly) open source work in roughly chronological order. Most of my production code is in Erlang, JavaScript, and Go, with application code in JavaScript, Objective-C, and C#. The theme that emerges is a focus on developer experience, and on pushing the envelope for edge compute.
Ruby on Rails
Apache CouchDB _users database
- Allow login information to be stored in a system database in Apache CouchDB, so users can be created and managed at scale.
- Signup and Login directly from Apache CouchDB’s Futon web admin UI
- Reader ACLs can be managed per database.
- Foundational API for “CouchApp” applications
Apache CouchDB show and list APIs
- Allow developers to inject JavaScript functions into the database definition, which can render JSON documents as HTML, XML, or any other string format for consumption by REST clients.
- Applications include providing RSS or ATOM feeds directly from the database, as well as hosting single-page “CouchApp” applications.
Apache CouchDB update API
- Developer provided JavaScript function stored in the database, allows applications to convert arbitrary PUT / POST data to JSON.
- Applications include pointing web hooks at the database, as well as updating some fields without passing the whole document over the network
Couchbase Mobile
- Chief architect for implementations of Apache CouchDB compatible databases on iOS and Android
- At first we actually got the Erlang VM running on the phone, but then rewrote it in Objective-C, Java and C#.
- Implemented initial version of geo query on iOS.
- Authored developer quick start docs
Couchbase Server document format
- Split document format into application JSON and database metadata. Allow arbitrary JSON documents instead of reserving key prefixes for metadata.
- We made the new API into a t-shirt.
PouchDB
- Initial sponsor of Dale Harvey's work at Couchbase
- Contributed core implementation and compatility patches
- I also wrote a from-scratch JavaScript implementation of a Couch compatible database for the browser, but it remains closed source and browser bug evolution suggests it'd be better to do it again than resurrect the old code.
Couchbase Sync Gateway
- Sync Function channel-based access control API allows access rights to be dynamically granted by application data updates and synced effeciently to clients from server indexes.
- Admin UI, including a simulator for previewing access control changes
Couchbase Lite Phonegap Plugin
- Scripts generate PhoneGap plugin from latest Couchbase Lite cross platform builds
- Plugin used by application developers to add local database support
Todo Lite Demo App
- Demo app to teach developers basics of Couchbase Mobile CRUD, Authentication, Query, and Sync APIs.
- Corresponds with documentation and other content.
- Implemented in PhoneGap, iOS, Android, and C#
IoT Demo for Intel Developer Forum 2015
- Worked with Couchbase engineers to use a 3D printed GE jet turbine model with handcrank and optical RPM sensor as the driver for an airplane takeoff simulator.
- Research implemention of new edge compute capabilities: distributed materialized map reduce with filtered sync, so only relevant data is synchronized to other devices and handsets, while the full data stream is stored locally.
- In the demo app, this corresponds to red / yellow / green: is the engine RPM fast enough to reach takeoff velocity by the end of the runway?
- C# code not open but the Golang server implementation of materialized reduce is here.