Aaron Muir Hamilton
Senior Software Engineer with over 8 years of Experience+1 313 240 2152 (Verizon) +1 307 365 7527 (AT&T) email@example.com
Various Open Source, 2013 — Present | See Open Source below
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.
Hamilton Professional Services of Canada Incorporated
2017-04 — 2018-10 | Owner, Software Engineer
- 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.
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.
Simple full text search
Recently, I had use for a simple full-text search index that returned quality results for inexact queries full of typos, is mergeable, and which produces identical indexes regardless of insertion order. I also needed it to be simple enough that I could reimplement it for multiple platform targets, with similar or identical results.
Here's what I came up with:
- in Rust: indexrs
- in Kotlin: hotfuzz
- in Swift: SchroedingerKit
- in Clojure [lite version, different treatment of non-BMP Unicode]: je.suis/un-petit-index
It works well in the contexts I designed it for: it scales logarithmically with index string length, and linearly with key size, in ordinary natural language. For cases with a few thousand records, at a useful indexing depth, it produces good results in much less time than it takes to hear back from a search indexing server even on the same rack, and is much easier to maintain, integrate, and configure than a standalone search indexing server.
Miscellaneous small libraries
- 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
COMMENTsymbols), and minimally escapes text nodes by default (override with the
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:
- originating the current maintenance branch of Anthy, a Japanese input method — I did this in 2013 as a user of Anthy, because the upstream version had source and data files in a JIS encoding rather than UTF-8, and was throwing compiler warnings; I converted the source files to UTF-8 and fixed the compiler warnings and build issues. The authors of Anthy forked my Github repository and now maintain it at https://github.com/fujiwarat/anthy-unicode
- fixing ICC color profile loading and profile embedding for PNGs in the SANE command line utilities — I did this in 2017, as a user of SANE (scanner drivers and utilities) relying on color profiles of my scanner.
- fixing WebSocket connection upgrade detection in Aleph HTTP — This was causing issues with Firefox users accessing our WebSockets at WealthyPlanet.
- fixing font variant selection in the iBus input panel — I was an iBus (input method system) user, and I was frustrated that a Japanese input method window was displaying Taiwanese-variant fonts, the changes herein ask the library selecting the font to consider the advertised locale on the input method.
adding missing properties to Preact TypeScript defs — We had use for this event on
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.