About
Work Philosophy
Code design
Good code should be modular. Each chunk of code should be exposed only by its interfaces, and its implementation should resemble a black box. Code modules should be small and easy to understand as a single unit. Modules should be written in a way where improper usage should be caught at compile-time — nobody should ever be too surprised about what their code does when it runs. Use names that are long and specific, and put effort into consistent and purposeful naming. Document everything. Your code is never as self-documenting as you think.
I would also add, since I've started working, that engineering is a process driven by business logic and practical constraints, and strict adherence to perfect design can be difficult in practice. Bend the rules if necessary, but it should be intentional. A developer should always be aware of the limitations of their code.
Agent-driven engineering
I stopped writing code by hand at the start of 2026, and I'm still shocked it came as early as it did. Twelve months before that, I wrote the code and asked AI for snippets. Six months before that, I would let agents write parts of the code and spend hours manually debugging and tweaking the output to my liking. And in just a year's time, agents started writing everything and I was a prompt engineer.
Leaving coding behind has been a bittersweet experience. Even though I've never been the best at writing raw code, it's still a craft I've honed for many years. I have fond memories of hammering away at the keyboard to lay out plumbing for new functionality as fast as possible, or scanning hundreds of lines and logs to find that one dumb mistake that was breaking my code, or the beauty in figuring out how to implement a complicated piece of logic in an elegant way. I'm glad I was part of the last generation to have done this all on my own.
Authors of production code should still review the output line-by-line, but I feel that this approach is already on its way out. I see a new future with far less time looking at code, and far more time on planning and validation.
Testing
The ideals of TDD have often been trumpeted in the past, but rarely practiced the way it was preached. Now with agents writing most of the code, TDD has become the key to bridge the gap between intended functionality and the code you didn't write.
I believe that every test should be intentional, and should be decided by humans. Agents should be used to suggest tests, identify gaps in coverage, and write the tests and mocks themselves, but it's up to a human to decide which tests are written and why. With more and more of developer workflows being entirely performed by AI, decision over tests are the final and most important piece of agency for a human to ensure the quality of their code.
Education
I studied at Northeastern's Khoury College of Computer Sciences under Matthias Felleisen's HtDP curriculum, one of the best curriculums for teaching introductory computer science, and it continues to have a profound impact on how I design code.
HtDP was a deeply opinionated approach to teaching software engineering. Any two methods that shared more than a few lines of code needed a helper. Mutation was evil and should be avoided at all costs. Programs needed to be structured so that arbitrary new functionality can be added with no change to existing modules. Tests should strive to cover the entire set of possible inputs and outputs. Obviously, this is the ideological extreme — but the mentality it built was a good one, and I came out of my education with a few takeaways (see Code design).
I am extremely grateful to have had a deeply opinionated education, even if I didn't necessarily take away all the same opinions. Engineering is not a neutral process; to build large systems requires opinions, and difficult trade-offs, and some form of ideology, and Northeastern's education helped prepare me for that reality. Anyone who learned code from the perspective of "do whatever it takes to make it work" was done a disservice. The one thing that was hammered into our heads again and again by HtDP was writing code that did what it was supposed to and passed all the tests was only one of the concerns to be worried about. In a world where the act of coding doesn't matter so much anymore, the principles of good design have stuck with me more than anything else.
Like most students who learned the fundamentals of computer science at Northeastern, I'm completely outraged and opposed to the short-sighted decision in 2025, made under pressure from non-technical paper-pushers, to throw out HtDP and everything that made Northeastern's computer science curriculum special. Fundies I, Fundies II, and Object-Oriented Design were the foundational courses of my entire career as a software engineer, and future Khoury CCS students will be at a tremendous loss under the reshaped curriculum. You can read more in this op-ed in The Huntington News.
In addition to computer science, I also earned a degree in business administration with a concentration in entrepreneurship and minored in electrical engineering. Based on my time with the D'Amore-McKim School of Business, I think that skill in business administration is best gained through experience rather than trained. The electrical engineering minor was tacked on later for fun; I've never seen fun take the form of so much suffering before. My friends and I would sit around in classrooms late at night, filling up whiteboards with circuit diagrams and equations, taking turns standing up to take a crack at a problem until someone else pointed out a mistake. It was a blast, I really miss those days.
Hobbies
I like old computers, and old tech! I own a small collection of Compaq and HP iPAQ Pocket PCs, and I try to get them working again and write programs for them for fun. I own a small collection of old laptops rescued from recyclers, and I love to stock them full of era-appropriate software and play around with the technology of the time. I'm also involved in various software archive and restoration efforts. One of my latest projects has been to try to sideload apps on Windows RT, in an effort to give a better life to those old unfortunate tablets otherwise destined for the landfill.
Like every resident of the Pacific Northwest, I love the outdoors and everything you can do with it in the great Cascadian wilderness. I love cycling and I enjoy bikepacking as well — one of my favorite trips was a ride from my home in Bellevue all the way up to Vancouver, BC.
In my spare time, I also like to juggle (badly), and to play the piano accordion (badly).