Aaron Muir Hamilton

Senior Software Engineer with over 8 years of Experience

+1 313 240 2152 (Verizon)   +1 307 365 7527 (AT&T)     aaron@correspondwith.me

Work Experience

Various Open Source

, 2013 — Present | See Open Source below

WealthyPlanet

2018-10 — Present | Co-Founder, Lead Developer, VP R&D

Leading the software engineering practice and financial model development; I set cornerstones for every technical project, from our backend and data storage architecture, to each frontend application and webpage. I also co-developed the initial financial model, and managed/directed a full-time modeler thereafter.

The backend is written entirely in Clojure, and uses streams and futures to coordinate a system of command (strictly sequential, can mutate) and query (random access, can not mutate) reducers with embedded aggregates over immutable append-only logs. This system communicates with client applications through a custom resumable JSON RPC channel over WebSockets. Clients include numerous web applications written with Preact in TypeScript, administrative tools written in Javascript on Node.js, and also with some pages written with Next.js+React.

Hamilton Professional Services of Canada Incorporated

2017-04 — 2018-10 | Owner, Software Engineer

I created this corporation to house contracts I was taking, while looking for a new nine-to-five. I dealt in small and medium contracts across multiple languages (C, C++, Elixir, JavaScript) including:

  • Distributed stochastic simulation for casino games modeling on Google Compute Engine with NATS-based message passing.
  • Custom high-performance WebGL data visualization.
  • Straightforward, well-behaved business data entry and display applications.
  • An application merging a web interface with a Unity WebGL view; import tools and processes to bring a library of more than a hundred thousand geometry assets into the application, on contract.

Rangle.io

2014-08 — 2016-10 | Software Developer

Delivering state of the art web applications, ahead of schedule and under budget for multinational online retailers, financial services companies, and media syndicates. Working on the official Angular 2 debugging tool, Augury.

Core duties included:

  • Gathering and clarifying requirements.
  • Providing useful estimates to product owners and stakeholders.
  • Staying ahead of the game on adoption of productive techniques and frameworks.
  • Delivering well-tested software with a focus on quality and fitness for purpose.
  • Onboarding and training new talent.

Among other technologies, I used JavaScript, TypeScript, ES6, AngularJS, PhoneGap/Cordova + Ionic, React.js, Objective-C (iOS), Ramda, Express, and PostgreSQL in my time at Rangle.io

Open Source

Miscellaneous small libraries

  • grapheme-iterator (JavaScript) — A simple Unicode Extended Grapheme Cluster segmentation library for JavaScript, which is more memory and time efficient than the alternatives. I created this when I was writing my fuzzy search index and the corresponding display code, because availability of Unicode segmentation functions in browsers was (and still is) not quite ready.
  • je.suis/lbx (Clojure) — A relatively fast XML emitter for Clojure with a similar API to hiccup (HTML emitter). Unlike the other options in Clojure, je.suis/lbx reliably outputs minimal and simple UTF-8 XML; it emits self-closing tags for elements with no children, correctly escapes CDATA and comments (using the CDATA and COMMENT symbols), and minimally escapes text nodes by default (override with the noescape symbol).

Miscellaneous drive-by contributions

I have made modest contributions to a variety of public open source projects that I have used over the years, including:

This is nowhere near exhaustive, but my point is: I am well accustomed to making upstream contributions to open source projects in the course of work and leisure; and I am ready to do so across a variety of languages and disciplines.