Hello!

Welcome to the blog. The traditional reverse-date-oriented feed of essays and such are below, but I've also started working on some material that kinda wants to be gathered together in a non-blog format--more like collections of written resources brought together. So, before wandering through the blog list, maybe you're looking for patterns reimagined or Speaker Tips? Or check out the "Sections" menu above for a list of some of my favorite blog posts over the years. Of course, the Archive has the complete chronological list, most-recent to oldest (2005!). Thanks for reading; at some point, I'll get comments (Disqus) turned on here again, but that's a TODO for now.

Synchronous Work, Asynchronous Work

We often talk about teams working "remote" or "in office", but leaving the discussion at that level misses some critical points of analysis--namely, that the real distinction is between "synchronous" and "asynchronous" work.

15 March 2025

tl;dr Over the last two years, we've seen a dramatic policy debate playing out on the feeds of LinkedIn: "WFH (Work From Home) vs RTO (Return to Office)". Nearly everyone has an opinion, and many (if not most) of them are held strongly. Some are held based on data, some on personal preference, and many are based on personal experience. Nearly all of them, however, focus on the wrong part of the debate: it's not really about "WFH vs RTO", but about "async vs sync".

Embrace Change (Not Perfection)

As software engineers, we understand that we can never get it right the first time in our projects. Yet we also spend an exceedingly long time thinking about how to take data in to treat it as perfect--why do we hold these two wildly different beliefs simultaneously?

13 March 2025

tl;dr Ever had one of those situations where you find that some data about your engagement with a company or institution is incorrect, go through the motions to correct it, only to discover it has mysteriously changed back to the original, incorrect, value? The other day I was driving with my wife back from some doctor's appointments and we were talking about some social media friends she has that were complaining about the same. It's the modern take on "tilting at windmills", yet it's so common we just accept it as an everyday part of modern life. It got me thinking about the problem from a software perspective, rather than a human or corporate perspective. And I think we, software developers, are partly to blame for the situation. Incorrect data, it seems, is impossible to correct in any system larger than a single database.

Debts, Tech and Otherwise

While people debate the validity of "tech debt", others are asking, "What other sorts of 'debt' do we have in software development and delivery?"

09 March 2025

tl;dr A colleague of mine, Scott Porad (CTO, VP Engineering) posted on LinkedIn, asking, "What are all the other kinds of debt like tech debt?" He listed out a few, then asked for others to weigh in, and the list grew... kinda long. And interesting. And made me think about the metaphor more deeply.

The Shapes of Data: Tabular

Tabular data is "flat", meaning we have multiple instances of uniformly-shaped entities with no deviations.

05 February 2025

tl;dr One of the "OG" data formats, the tabular data structure, aka "the flat file", is still today a handy and reasonable way of exchanging data in an automatable fashion without significant integration work required. Its shape is ideal for a multitude of data molecules that all share the exact same contents.

The Shapes of Data: Relational

Relationally-shaped data is characterized not by the tables, but by the database-native relationships between data elements, represented by sets and keys.

04 February 2025

tl;dr Relational data is, contrary to popular belief, characterized not by "tables", but by sets and relational variables (also known as "relvars"), and making use of a relational algebra and predicate calculus to make it easier to do set-oriented operations.

The Shapes of Data: Object

Object-shaped data is often characterized by one-way references between clusters of data grouped together by a few key concepts.

03 February 2025

tl;dr Objects, despite being the most common tool form of mainstream programming languages, are often not as well-understood as a data concept as one might think. In an object data model, entities are defined as unions of state and behavior (and behavior is often of much less concern to the data modeler) that in turn can be related to other objects through a variety of mechanisms (type, ownership, association, and so on).

The Shapes of Data: Hierarchical

Document data, more formally known as hierarchical data, is data which coalesces naturally into singular, mostly-standalone entities.

02 February 2025

tl;dr Hierarchically-shaped data is characterized around strictly acyclic data that are arranged in a parent-child relationship, starting from a single well-known root data node. The relationship between nodes is explicit, with the roles of parent and child clearly delineated, but the actual association between parent and child is typically implicit and immutable.

The Shapes of Data: Associative

Key-value, or associative, shaped data is the simplest of the shapes to understand, which makes it both powerful and deeply unuseful.

01 February 2025

tl;dr The shape of data that's associative, or the key-value data store, is a style of single-dimensional, making the key the biggest part of the shape.

Reflections on an Involuntary Sabbatical

In which I discuss what I've learned about myself, technology, and our industry over the last three years of "involuntary sabbatical" (aka "looking for a new gig").

31 January 2025

At the end of 2021, my time at Rocket Mortgage came to an (amicable) end; the things they had asked me to do were done (more or less--there was more work to be done, but others could pick it up and run with it), and the next things I thought worth doing at Rocket were not things they were interested in. So, we parted ways, and I set back off into the wild blue yonder to find my next role. What followed was what I call my "involuntary sabbatical"--three years of job hunting and interviewing, a bizarre mix of freedom and frustration, and more than a few "false starts" that felt solid yet evaporated. It's been quite possibly the strangest time of my career thus far.


Older posts are available in the archive.