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.

The Shapes of Data: Tabular

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

01 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: Object

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

01 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: 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.

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.

01 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.

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.

The Shapes of Data

Data storage takes on several different "shapes", and knowing the shape of both the data you're trying to store and the shape of the database you're using can make a huge difference in the complexity of your project.

31 January 2025

tl;dr Dating all the way back to the earliest of databases, data has had a "shape" to it, a natural schematic form that defines the various "atoms" and "molecules" that the database understands naturally. Relational data, such as that described by SQL and relational databases, is only one such shape; the various "NoSQL" databases often offer a different shape, but it's not always the same. What's more, just because a database uses a non-relational shape doesn't mean it's a natural fit to your object-programming language's code. When it doesn't, you have an impedance mismatch, which has to be solved somewhere (usually to the detriment of your code and complexity budget).


Older posts are available in the archive.