🙋🏻♂️ I am a versatile, self-directed engineer with +3 years of professional experience and +16 years of overall software engineering experience.
❤️ I have a passion for software engineering that naturally drives me to help others, read and learn new things, write about what I learn, and put what I learn to action both in personal projects (see below) and at work.
👷🏻♂️ I have a proven record for designing, planning, leading, and developing complex projects, both greenfield projects as well as those involving major sweeping changes to critical, complex, interdependent legacy systems.
🚀 I consistently clear obstacles. If something is broken or lacking, I dive in to investigate, file a thorough ticket, and most of the time fix or implement the feature myself (see example issue and PR), and if what I need doesn’t exist yet, I will build it.
🐞 I love the thrill of the chase of debugging. This has led me to diagnose and address subtle and elusive bugs in all manner of previously-unfamiliar, complex, and diverse projects (see below), and all have been tremendous learning opportunities.
⚡ My thrill for debugging has allowed me to develop an acute ability to dive deep into unfamiliar projects and quickly make meaningful contributions (see below).
🧘🏻♂️ I am practical. I dive deep into niches like emacs, vim, and zsh (see extensive dotfiles), or state-of-the-art technologies like Rust, or perspective-expanding technologies like Haskell and Clojure—but I always remain grounded and pick the right tool for the job even if others may consider it boring. I always appreciate what each tool has to offer and its trade-offs.
👀 I keep up with the latest developments and constantly read and learn new things, preferring source material like documentation and manuals, if available. See my extensive notes and my recent reading list.
🔽 Click here to expand some of my varied open source contributions 🔽
See the full list here.
Infrastructure as Code
|TypeScript||I implemented native
Kubernetes Native Object Storage
|Go||I optimized listings of large HDFS directories with +1,500 files by 200x to aid a company merger. Learn more.|
Systems Programming Language
|Rust||I was an early Rust user since before 2014 and consistently helped to adapt Rust packages to breaking changes of syntax, semantics, and libraries. I reported compiler errors that I discovered by using bleeding-edge nightly features, and contributed a speedy fix in time for the 1.0 release. Learn more.|
|C++||I fixed elusive platform-specific bugs reported by Solaris users caused by non-portable signal handling due to non-POSIX compliant system calls. Learn more and more.|
Markdown C Library
|C||Early on Rust lacked a fully-featured Markdown library and I needed one for the static site generator I was writing (diecast), so I wrote idiomatic bindings to hoedown for Rust which exposed previously unknown edge cases in the C library through different combinations of feature flags. Learn more.|
Official reCAPTCHA WordPress Plugin
|PHP||Back in 2008 the lead engineer of the Carnegie Mellon University project reCAPTCHA asked if I would be interested in creating the official WordPress plugin for reCAPTCHA and I accepted. After over half a million installs, I transferred ownership to Google after they acquired reCAPTCHA. Learn more.|
Static Site Generator
|Haskell||I fixed a reported bug that appeared without any changes to code nor to the Hakyll library, something especially rare in Haskell. Learn more.|
AUR Package Helper
|Haskell||I implemented search-result count limiting. Learn more.|
Media Player Synchronizer
|Python||I contributed features to the synchronization algorithm and made Syncplay packageable on Linux, then created ArchLinux AUR packages for them. Learn more.|
|Rust||I kept it updated against the frequent breaking changes of pre-1.0 Rust.|
|C++||I fixed remote web UI seeking.|
File System Events
|Rust||I kept it updated against the frequent breaking changes of pre-1.0 Rust, as well as fixed general bugs and made certain optimizations.|
Rust Bindings to libgit2
|Rust||I increased C library binding coverage.|
Rust Bindings to Linux
|Rust||I adapted it to pre-1.0 breaking changes by interpreting Linux documentation for the correct kind of error to yield.|
I was computer illiterate until I was 11, when, while on the job with my dad (carpentry; real work, not just sitting around), during lunch, having nothing else to entertain me over the course of the many days I was there, I would flip through a “computer part ad magazine” (no content, just ads) that my dad got, and began to infer what parts were critical to a working computer and where to find them cheapest. I struck a deal with my dad to earn money to build our first computer.
I accomplished this soon after turning 12 and next I began to wonder how software applications were made: what caused a button to react to a click? Eventually, during one of my first few times on the Internet (itself a feat made possible by free AOL trials), I came across a post using words I had never heard before: Visual Studio, C++, source code, compiler. I was extremely intrigued and wanted to learn everything I could about “programming.”
get ripped off by Game Stop sell my video games quickly enough to buy used programming books, to my little brother’s horror.
I was computer illiterate before the age of 12. All of my life I had largely avoided computers, aside from specific instances in school when we were given time to work with them. This was the result of being warned and scolded away from them for fear that I break them since they were expensive.
In third grade, my teacher, school principal, and other faculty worked with my parents to get me into a coveted magnet school through my grades. This school was attended by mostly well-off kids, so it was normal to expect homework assignments with even one day turnaround times to be neatly typed and printed.
I was at a point in school where computers were a necessity. Without a computer, I had to go to the library to type up school assignments, which wasn’t always possible on the more frequent short-notice assignments. Otherwise I had to write my assignments in perfect inked cursive. I was forced to appease draconian requirements which demanded no mistakes at all—no white-out allowed.
I was the only student in my class at my well-off magnet school without a computer capable of producing neat computer-printed assignments. It was as if I was inconveniencing the teacher, rather than it being my inconvenience that I couldn’t afford a computer and had to endure the toil as a result: while other students could lazily type up assignments in a matter of minutes, I had to meticulously obsess over my writing.
This led to many late nights, many rewrites, and stress—because I always cared for doing things right in school. I was tired of it and embarrassed for not being “with the times.”
One of the times I was out on a construction job with my dad I noticed a computer ad magazine during lunch. Having nothing else to distract me, I began to read through it and—over the next few days on the job with no other form of entertainment—I naturally began to draw connections between prices and components. This gave me an idea of which parts were critical to a working computer and which weren’t, which were the best parts for the money, and which places had them the cheapest. This was important considering we previously couldn’t afford one.
Armed with this information, I struck a deal with my dad which consisted of me keeping my grades up in school and helping him out at work for a few months so that I may earn the money needed for a cheap, custom built computer.
Eventually when I was 12 I did earn and build my computer, but over time I grew bored when I didn’t think there was much more to learn about them beyond building one. I was always extremely curious though: what made a “window” react to a click? What put things together in a window and made it work the way it did?
During this time we didn’t have Internet most of the time except for the short breaths of air that I called free AOL trial periods, and even then I was rarely allowed to actually use it since it prevented phone calls from going through. On one of those rare opportunities I noticed an article on how to get started with “modding”—an unfamiliar term—the game that I loved to play offline: Star Wars: Jedi Outcast. The example was to write a mod to slow down the speed at which rockets from a rocket launcher traveled at. They used words I had never heard before such as Visual Studio, compiler, C++, source code, and so on.
I distinctly remember a part of the article that talked about editing some line in some “source code” that apparently had the literal effect of slowing down the rocket! Kids often wondered how games were made, and this article was nonchalantly talking about modifying an existing game I loved. This blew my mind. This was around the time that the Matrix sequels were in theatres (in 2003, I was 13), and so out of ignorance I naturally imagined that this article was explaining how to get into something similar to the Matrix of the game. I felt a deep urge to understand all of it.
I felt an intense desire to learn everything about “programming,” something I didn’t even know existed. I felt as though it was a secret ability or language which unlocked great power. I didn’t have access to YouTube, Wikipedia, role models, I didn’t even know anyone who programmed, not even parents of friends or anything like that. I was entirely on my own.
The only thing I could think to do, and did, was to sell my video games in order to buy used programming books, knowing full well Game Stop was ripping me off. I still remember my poor little brother lamenting me selling my video games to buy what looked to him like dry, boring books. I also remember making the innocent mistake of buying a C++ for Dummies book with a typo in the first code listing and being stumped for weeks.
Overall, however, I was on the fast track. I became a voracious reader and sold more and more of my video games to buy books, and when I sold all of the ones that I was willing to sell, I would find other ways of making money to buy more books.
This also made me realize that I could save a lot of money if I could get access to the Internet, so I began to the long process of convincing my parents that it was a necessary cost and one that would pay huge dividends.
Once I finally got access, I consumed anything and everything.