The shape of software

The shape of software

November 8, 2021

Last week I shipped a redesign of my personal website, a project that started in September and took nearly two months of working nights and weekends to finish. Here's the beast of a pull request that brought it all together for the code-curious among you.

I think the only reason that it's worth talking about this redesign is because it's just so over the top, and so over engineered: User authentication, comment systems, email notifications, user preferences, daily digests, end-to-end continuous deployment, caching...a classic case of someone being too preoccupied asking themselves if they could that they didn't bother to ask if they should.

All of this work for a personal website that is, zoomed out, a handful of text files as blog posts, a handful of links as bookmarks, and some pretty CSS to make it feel like an app. Over-engineering things is fun!

But now: this website is my own little corner of the internet, where I know how everything works, and I know all of its little idiosyncrasies. Everything that I love about it is my fault. Everything that I hate about it is my fault. And I'm the only person on the planet who cares enough to tidy things up, to make it better, to shape it, evolve it, or...if it all becomes too much, I can burn it to the ground.

This is going to sound crazy but: the shape of my website sits in my mind like a physical thing. The codebase is a home, and I know what the walls feel like. There's a texture here, and you have to be careful for the splinters if you tread carelessly through that room over there. There are dark and dusty rooms where I'm afraid to go. There are details too small to notice from a distance, but become apparent once you step inside and look up close. There are beautiful parts that I'm proud of, and I think other people will like them, too.

And so I turn this home over in my mind, and daydream about how to smooth the edges, simplify it, and refine it. I'm picturing the next room I want to build, but I'm concerned about the state of disrepair of the pipes straining in the walls.

Is this place fit for living? No, not yet...

This right here — this turning over in my head an object where I know the thing, I can feel it, I can hate it and love it simultaneously — gets at the core of why I love building software at all. Code and pixels materialize in my head and create an invisible bridge between the physical and digital, a bridge to a place where I have superpowers. Anything is possible. And everything is disposable. This is exciting and deeply sad at the same time.

This home will soon crumble into dust...