Whenever I feel most like a tech “imposter” (usually right before, or after a technical interview), it helps to remember just how many different things I’ve actually coded.

Here is a partial list of my significant coding contributions:

  • Mainframe Connect (1991/1992)

A Clipper/dBase UI running in DOS on x86 that screen-scraped an IBM 3270 mainframe financial controller, trapped function key interrupts in x86 assembly, and called the lu6.2 C library to interact with the financial controller/mainframe. This was intended to allow users to work with the mainframe systems, while drawing a more user-friendly UI, and allowing the use of function keys to provide non-mainframe actions, like context-sensitive help. This application was deployed to 550 bank branch offices with 5+ PCs in each branch. I received a special letter of commendation from the company board for this work, as it significantly improved the ability of our branch employees to do their jobs.

Programming languages: Clipper/dBase, C, x86 assembly

Performance constraints: DOS 640k memory limit, use of assembly language to access keyboard interrupts, screen-scraping mainframe screen via lu 6.2 C library.

  • Mortgage APR/compound interest calculator (1991/1992)

An application that created mortgage quotations for bank customers, using a successive approximations algorithm related explanation. This cut the mortgage quotation/application timeframe from 2+ days to 20 minutes, and could be conducted fully with the customer while in the office.

Programming languages: Clipper/dBase, C

Performance constraints: follow legally-approved algorithms for calculating APR/compound interest, fastest-possible calculation given commodity PC hardware, DOS 640k memory limit.

A multi-party micropayments system for allowing small payments for newspaper articles.

Programming languages: C

One of the very first “software as a service” applications (1997), Employease offered a browser-based interface for managing employee benefits, targeted at insurance brokers, but also providing the very first employee “self-service” interface for managing their own benefits. I was employee #10, and wrote much of the early code for the self-service system. This was originally written in the Netscape Livewire server-side Javascript language, and later replaced by Java servlets.

Programming languages: Javascript, Java

Performance constraints: latency of early Internet systems.

A framework for the Series 60 (Symbian) mobile phone, implementing support for the Liberty ID-WSF and Microsoft/IBM WS-STAR SOAP/XML specifications to allow the use of mobile-phone based privacy-preserving web services. This was deployed most recently to 3 million Nokia S60 phones as the basis for the Microsoft Windows Live Messenger Symbian port. I then ported portions of this also to Linux/D-BUS in C.

Programming languages: Java, C, Symbian C++

Performance constraints: memory on mobile phones, latency in early mobile networks, poor mobile support for cryptography algorithms.

  • Object capability-based web browser

Webkit-based multi-process web browser that separated memory per-URL for all internet resources (each URL handled by a separate OS process)

Programming languages: C

Performance constraints: separation of memory vs. collaboration between processes

  • OSH - Ovi “Shell”

A terminal shell for using the Nokia/HERE web services (e.g. mapping, routing, “tweeting”) from a CLI environment

Programming languages: Javascript

  • Implementing an OAuth 2 based system for authorizing access to Nokia/HERE APIs

Wrote Java servlet-based system for implementing OAuth access to our APIs (https://developer.here.com)

Programming languages: Java

Added support for W3C Timed Text to the ccextractor open source project, on behalf of ESPN (which needed this for Windows).

Programming languages: C

  • Lilith - a system for delivering video chunks out of order to better utilize massive bandwidth

Described for the Erlang Factory conference System used a Javascript client, websocket connections to a server which ran Erlang, and the Dynamo DB-based riak-core library to store and deliver video chunks.

Programming languages: Erlang, Javascript

  • Crypto Services

I was the lead engineer creating the prototypes for a suite of cryptographic services, and later led the team doing the development:

i) Java, Python and go-lang clients for a hardware key management system (utilizing an XML-based protocol)

Programming languages: Java, Python, go-lang

ii) Simple-signing service - a service for signing XML and JSON data using keys stored in hardware security modules (HSMs) and using PKCS11 APIs. This involved modifying two open-source libraries to add support for HSM-resident keys (xmlsec, latchset/jose) and maintaining internal forks of these repositories.

Programming languages: go-lang, C

  1. Cosmos SDK/Keystone low-s normalization, Adding secp256k1 to pkcs11 lib, example usage of capnproto and Keystone key-management for Cosmos for some recent contributions)

Implementing a distributed key management system for the Cosmos SDK - an SDK used in the creation of a number of blockchain-based systems, utilizing HSMs.

Programming languages: go-lang