Imposter Syndrome

My “travel” journal of coding practice and exploration. This blog is about my experiences with software engineering, both the painful and the enjoyable.

The intention here is less “tutorial” than “conversing about a topic I love”. There are already many tutorials out there and frankly it makes me uncomfortable to position myself as an authority - I am constantly aware of how much there is to learn for any given topic.

Writing software is delightful madness, personal obsession and an endless source of both frustration and joy. It is my hope that my writing here will both create a vehicle for deeper understanding for myself as well as spark conversation and connection with anyone who lands here and reads. Feel free to drop me a line at


Kotlin Comparable

By default, the order of elements will be in natural order - 5 is greater than 2, -4 is greater than -10, b is greater than a, etc.

Read More

React Router Auth and Typescript and Hooks

I recently transitioned a small app I built for my son to Typescript, to get some more practical “sandbox-y” experience with the language structures. The app is a tiny budgeting tool for kids (that mostly helps him see how much money he’s spent on Fortnite) and it only has a handful of views. It’s a React front end and a Firebase backend.

Read More

Group By

I recently came across a situation in javascript where I needed to do a “pivot” on some data, which amounted to needing the GROUP BY functionality in SQL, or groupBy which is provided as standard in multiple languages like Kotlin. Javascript doesn’t have that function out of the box and writing it ended up being an interesting little project to understand the nuances of that transformation. I’m going to step through it as simply as possible here to outline what I mean.

Read More

Unit Testing

If you are anything like me, you heard the phrase “unit testing” thrown around a lot before it meant anything real. And terms such as “unit testing”, “integration testing” and “functional testing” had little distinction. They all fell into the category of “should be doing but not on THIS project”. Most of my software experience at that point comprised of tight deadlines, unfamiliar technologies, poorly defined specifications or tight budgets that didn’t account for anything as fancy as “testing”.

Read More

Mise En Place

The benefits of mental clarity and organization on the quality of code can hardly be overstated. From the tools used to code to the mental processes employed to break a problem down, physical space and time, a clear idea of purpose and destination, it all factors into both the quality of the experience and the resulting code. Because coding itself can be so intellectually challenging, the lack of focus can be so disastrous as to make solving a problem impossible.

Read More

Hello, World

The beginning of a project for me, particularly a greenfield project where no legacy code exists, is both exciting and terrifying. The sense of potential and possibility is almost intoxicating. And, for those of us with control issues and aspirations of perfection, a blank page also represents code with no errors in it yet.

Read More