I made a CMS

For many years, an idea has been floating in my head. What if I revamp my personal website—which for the past 10 years has been more of a landing page than anything meaningful—into more of a digital garden?

I recently bought a new Sony lens for taking photos of an owl family near my house in San Francisco, and have been lamenting not having a place where I could confidently house those photos. One day on the hill someone asked, “What do you do with them, do you post them on Instagram?” —Well, I don’t have an Instagram account anymore, so no. Glass is great and I post there from time-to-time, but it feels like a gallery where I’m among legends and not a place I can toss my amateur shots. For years, the photos I’ve taken have just been for me.

Similarly, every once in a while, I begrudgingly log in to LinkedIn. I’m immediately bombarded by my peers—and friends—slinging hot takes that would have lived on Twitter in a different life, this time dressed in a suit and tie so that the thoughts feel “professional.” It makes my skin crawl. Despite that, I believe that there are world, cultural, and industry events that warrant conversation. With the death of Twitter, the migration to Mastodon, to Threads, to Bluesky, I no longer feel the same sense of security housing these fleeting thoughts in one of the now numerous internet town squares.

And the same for all of my other whims over the years; where do I store the music I’m obsessed with? The lyrics I translate? The electronics projects I’m working on? My forays into music production?

And so, here we are.

***

Why build something of my own instead of using Astro or Hugo or Jekyll? (We don’t use Wordpress and we definitely don’t use Substack.) Put simply, I am allergic to people’s bad software decisions. I am able to build something that fits my own needs and can evolve with them, and so why shouldn’t I?

I’m calling this CMS “Geo” for the time being, and it was mostly built by Claude Code under heavy supervision by me. I feel very icky about that! But, it did get the job done and I am able to write this post without dealing with flat Markdown files and committing things to Git. It’s rudimentary and not very well considered and rife with bugs, but it’s mine.

If I ever have time, I will clean up (or even rewrite) the code and separate it out into its own repository for others to use, but if you’re curious in the meanwhile, you can find the repository on GitHub.

If you’d like to keep up with things I write and post, you can subscribe to updates in your favorite RSS reader (lol) at https://jedmund.com/rss.

Thanks for reading!