Software Portfolio

I’ve worked on a great variety of software over the years. Examples include:

Academic

I only spent a couple of months in grad school, but in that time I wrote a lot of MATLAB code (a bit more specifically, using MATLAB to numerically solve ill-posed inverse problems). Since then, I created a math library for Javascript which enabled support for complex numbers, and used that library to implement the Fast Fourier Transform in Javascript. I have also written some small bio-informatics tools, and created computer simulations for my own research.

Mapping

I have done a fair bit of work involving the use and manipulation of maps in software. In one example, my small team developed a tool to be used by sales organizations covering the same geographic region. The tool synced with their CRM to display the location of leads on a map, and allowed the sales representatives to toggle the status of those leads (ie. “visited”, “not in”, etc.) in order to collaboratively canvas the region. In another example, we built software which allowed a travel agent to easily create customized route maps for their clients, with a much simpler interface than existing mapping tools.

Encryption

I am not a cryptographic expert by any means, but have taken a great interest in cryptography and have had the opportunity to work on a few encryption projects. One project wrapped a graphical user interface around the popular GPG command-line encryption tool for email. Another aimed to create a “zero knowledge server” application for personal notes, similar to the popular Evernote application (complete with mobile access, offline sync, etc).

Digital Asset Management

I worked for the Canadian Air Force for several years, developing online training software. While there, I developed a digital asset management tool to catalog images, since no existing software met our requirements. The tool made it easy to keep track of, and search through, the thousands of images used in our courseware.

Mobile Applications

I’ve developed several mobile applications, using a variety of technologies. They have always been for business use, and almost always developed with cross-platform requirements in mind. Most recently, I lead the development of SiteDocs’ mobile applications for iPhone and Android. These are native applications (built on the Xamarin platform) with extensive offline sync capabilities.

General Utility Libraries

Anyone who’s developed a lot of software will invariably have developed many general-purpose tools and libraries. I’m proud of several, but probably the library I’m most proud of is the JSON parser I developed for IBM’s relatively obscure Net.Data programming language. The library is listed on the official JSON website.

Open Source

Although most of the software I develop ends up in proprietary systems, every now and then I have the privilege of being able to contribute to other peoples’ open source software, or release some of my own work under an open-source license. Here are some open-source things I’ve done, in the contexts of both work and play:

  • Complex number support and the digital signal processing module for numbers.js.
  • A Chrome extension for following HN users.
  • A really simple library for managing user accounts using a JSON file in Node.js applications (useful for situations where there aren’t a lot of users and the server is basically just swapping password auth for API keys).
  • A library for managing user accounts in CouchDB-based Node.js applications.
  • A utility and data access library for building encrypted Javascript applications on CouchDB.
  • A framework for building real-time, zero-knowledge (end-to-end encrypted) Javascript applications using the aforementioned libraries.
  • An application using said framework to perform cross-platform Evernote-style replication of personal notes with end-to-end encryption.
  • A jQuery plug-in allowing users to draw route maps (eg. travel plans) on a map with PNG output.
  • A tiny library for converting HTML into a subset of Markdown.
  • A purely browser-side client library for reading from and posting to Flickr.
  • A jQuery plugin presenting a user interface around the Flickr library, very useful for content management systems wishing to leverage Flickr for image management.
  • A (now defunct) little web application for tracking how penalties are applied on HN. It could be revived, just needs to be updated for the new API.
  • A website scraping tool to simplify the preservation of old content when re-building a website.
  • A neat little UI library for drawing a world map as SVG (in a browser) and then highlighting countries or regions programmatically.
  • An experiment around generating ECC key pairs from a user’s passphrase. (The same approach was later used in the miniLock file encryption tool.)
  • A JSON parsing library (now listed on the official json.org!) for Net.Data, an old scripting language for data access on IBM’s DB2.