Programmer Bio
I learned to program as a child in the 90’s back in the era when PCs
came with sample games like QBASIC Nibbles
,
with included code for hobbyists and learners
to play around with. It was sheer luck that this random interest of mine
turned out to be a marketable, employable skill.
My personal story plays into the narrative of the driven young autodidact, usually male, usually socially awkward, who has that “genius” to be a “real programmer”, perhaps at the expense of other qualities. But this is not my take-away. Anyone can learn how to program, even if they don’t write a line of code – or even touch a computer – until arbitrarily late in life. And unlike other forms of math and logic, it is accessible even to young children, and should be taught in schools alongside other subjects.
I was very fortunate that my uncle and godfather encouraged me in programming from an early age, and also got me into Linux and open source software. I quickly developed an interest in operating systems and systems programming, running FreeBSD and trying to learn the Unix systems call API and the differences between the Unix flavors. I still feel most at home in systems programming languages, such as C; C++; and in our modern era, Rust (but more on that later).
After an embarrassing period where I got deeply into dynamically-typed OOP, Smalltalk, and Objective-C, I was introduced to functional programming and static typing at my university’s functional programming course (then called CS312 and in SML), and I quickly understood the benefits. My friends soon introduced me to Haskell, which I digested with enthusiasm. It is still my favorite GC’d language and applications programming language.
My career proceeded in the C++, systems side of things, as I worked as a low-latency programmer and later as an instructor at Tower Research Capital, but I never forgot my affection for Haskell and powerful static type systems. I excitedly embraced “modern C++” and C++11, and tried my best to use C++’s features to maximize safety and expressiveness.
My favorite part of my job at Tower was when I ran the technical training course for new programming hires, which I did for multiple iterations of that course. I covered topics like C++ template metaprogramming, network protocol design, and low-latency coding techniques. I really enjoyed instruction and got really good at explaining things and leading classes. I really miss teaching.
After Tower, I wanted to avoid finance and low-latency programming altogether, and took a job at Obsidian, one of the largest Haskell consultancy shops, to work on a mix of embedded C projects and Haskell projects in Reflex, Obsidian’s open-source framework for “Functional-Reactive Programming,” a revolutionary up-and-coming paradigm for GUI programming.
But my interests in strong typing and in systems programming could not fully be reconciled until I joined Savant Power, and discovered Rust. As I learned more about Rust, it overcame my initial skepticism, and it became clear to me that Rust was finally achieving what modern C++ had been striving for for so long: A high-performance systems programming language that was also type-safe, ergonomic, and composable.
And that is where I stand to this day: I believe that Rust is C++ done right.
Newsletter
Find out via e-mail when I make new posts!