🙋🏻♂️ I am a versatile, self-directed engineer with +4 years of professional experience and +18 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
|I implemented native
.gitignore support to fix confusing and erratic behavior, and also added support for the AWS Lambda
WorkDir option. Learn more.
Kubernetes Native Object Storage
|I optimized listings of large HDFS directories with +1,500 files by 200x to aid a company merger. Learn more.
Systems Programming Language
|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.
|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
|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
|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
|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
|I implemented search-result count limiting. Learn more.
Media Player Synchronizer
|I contributed features to the synchronization algorithm and made Syncplay packageable on Linux, then created ArchLinux AUR packages for them. Learn more.
|I kept it updated against the frequent breaking changes of pre-1.0 Rust.
|I fixed remote web UI seeking.
File System Events
|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
|I increased C library binding coverage.
Rust Bindings to Linux
|I adapted it to pre-1.0 breaking changes by interpreting Linux documentation for the correct kind of error to yield.
I am a versatile software engineer with broad and reasonably deep experience in a variety of areas.
I would describe myself as being insatiably curious about a wide spectrum of software development. I am a voracious early-adopter but strive to remain practical by contrasting the pros and cons of any technology. This has taken me through all phases of the “bell curve meme” in many different instances of software development.
My boundless, cross-cutting interest in software development equips me with phenomenal debugging skills. I have dived into debugging using GDB to view raw memory of C FFI bindings for Rust, while also debugging problems like race conditions across multiple complex distributed systems. I have dived deep into building and contributing to esoteric vim and emacs packages, while also comfortably using JetBrains IDEs. I have built entire applications, back-end and front-end, in Clojure, and others in Haskell, Rust, Go, TypeScript, Scala, and more—but also appreciate the reliability and consistency of something like vanilla Java.
I was a very early adopter of Rust back in 2014, back when the language was amorphous and only loosely-defined through a patchwork of RFCs that one had to read regularly to keep abreast of the latest state of the language. I contributed to Rust, its nascent ecosystem of packages, learning material, and offered help on IRC and StackOverflow.
I was completely—and without exaggeration—computer illiterate when I began my journey into computer science back in 2001 when I was 11. All of my life I had largely avoided computers. This was the result of being warned and scolded away from them for fear that I break the very expensive devices.
I began before the glamorization of software development and subsequent proliferation of (and easy access to) readily available learning resources through websites like YouTube, Wikipedia, StackOverflow, and without access to anyone whom I could reach out to for help or mentorship—in fact, I had no Internet. I was only bootstrapped with my insatiable curiosity for what seemed to me to be an exotic foreign realm.
It is my perseverance through this trial-by-fire that fully equips me to never accept defeat by an unsolved problem, in the case of bugs it drives me incessantly to the root caus, even when there are absolutely no resources on the subject, even if it takes me through raw memory debugging in GDB or reading of third-party source code.
I had a night-and-day jump from computer-illiterate to building my own computer, which I earned through manual labor with my dad.
By the age of 12 (2002), I was selling my video games to buy used programming books. I struggled, especially when experiencing technical errata without any recourse, but I had a laser-focused determination that saw me through many books.
By the age of 15 (2005) I was building more sophisticated things like:
- a graphical application to recover music trapped in an iPod
- a system-tray app for taking screenshots
- an app that I later learned was like last.fm, complete with plugin DLLs for various music players (Windows Media Player, iTunes, WinAmp, etc.)
- WordPress blog CMS themes, mods, and plugins, including the official reCAPTCHA plugin commissioned at the time by Carnegie Mellon University, and subsequently credited in a physically-published book for my contribution
- phpBB2 forum mods
- a stand-alone video game built entirely upon the industry-standard Quake 3 Engine (id Tech 3), complete with a custom game updater and NSIS application installer
It was also in 2005 when an Australian friend showed me Ruby, Ruby on Rails, and Archlinux for the first time while essentially pair-programming over SSH and tmux—all tools which I quickly adopted at the time.
I grew up computer illiterate and without a computer in our family until the age of 11, when I somehow pieced together—from computer component ads—which parts were critical to a functioning computer and where to find them cheapest. This was 2001, before the modern, more mainstream gamer/streamer culture.
I felt compelled to do get a computer for two reasons: academic pressures and the desire for a better life.
In 3rd grade my teacher, school principal, and other school faculty worked with my parents to get me into a coveted, wait-listed magnet school for 4th and 5th grade thanks to my grades. The school was primarily attended by (very) well-off kids that were all assumed to have computers, so we would frequently receive homework assignments with one day turnaround times that were expected to be 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 and this wasn’t always possible on the more frequent short-notice assignments. Alternatively, I had to write my assignments in perfectly inked cursive. I was forced to appease draconian requirements which demanded no mistakes at all—the use of “white-out” was not allowed.
I was the only student in my class without a computer, so 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 tedious 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 (and neat handwriting!)—because I always cared for doing things right in school. I was tired of the toil and embarrassed for not being “with the times.”
I was also embarrassed to be unable to afford a computer along with many other things that my classmates and friends took for granted. This was the first time in my life that I became consciously aware of economic inequailty. This concept was driven home when a kid mocked me for living in an apartment complex rather than a single family house. This might seem like a pointless detail, “kids will be kids” after all, but these are often formative moments in one’s life.
A Better Life
I was used to going to work with my dad every so often since the age of 7-8. This was not “bring your child to work” day where the child plays video games in the corner, but actual work to the extent a kid reasonably could, often with long hours (e.g. 6am-11pm) and long commutes. During my vacations from school, this would sometimes entail multi-day work stints. It was not at all uncommon to hear half-joking comments about child labor and indentured servitude from uncomfortable clients.
One of the times that I was out on a multi-day construction job with my dad I noticed a computer ad magazine during lunch. Having nothing else to distract myself with, I began to read through it and over the next few days on the job 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 were optional, which were the best parts for the money, and which places had them the cheapest—even if I had no clue what the parts actually did.
It was at this point that I resolved myself to the idea that when I grew up I wanted to do something as far removed as possible from the manual labor that I was doing then. As much as I admired the skill and creativity that went into my father’s craft—a craft which , I did not see it in my future.
Although I hadn’t seen it yet, I aspired to job at a place like “Initech” in the movie Office Space: a “conventionally boring” office job with business attire, cubicles, and boring beige (at the time) computers
Despite the apparent blandness of such a job, my complete ignorance about computers and desire to make a better life for myself caused computers to seem alluringly exotic to me.
I was completely ignorant as to what kinds of jobs even entailed the use of computers, in fact I didn’t even know that something like “software development” existed.
I settled on the cheapest parts that I could find and struck a deal with my dad: I would keep my grades up and continue to help him with work, and he would eventually buy me the computer. Not unlike indentured servitude 🤡.
For a year or two after getting my computer we didn’t have Internet.
During that time, I would poke and prod my computer and its software to learn whatever I could. For example, I once found a favorite game’s media assets on the my file system and experimented with editing them in an image editor. Soon enough I had my own custom player skins without ever knowing that “skins” were even a concept.
But these dark years grew boring and I wanted more. I realized that I could get short breaths of air (Internet) by cycling through 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” the game that I loved to play offline: Star Wars: Jedi Outcast. I had no idea what modding was but I was intrigued. 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++, and source code.
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.
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.
My desire to read and learn more and more made me realize that I could save a lot of money if I could get access to the Internet, so I began the long process of convincing my parents that it was no longer a luxury but a necessity, and one that would pay huge dividends.
Once I finally got access, I consumed anything and everything.