I built a website

November 11, 2024

Ostensibly a statement that means little at a time when building websites has become commoditized, but it does hold a lot of meaning for me.

A website is just a bunch of HTML and CSS code that a web browser looks at and transforms to pixels on a screen. People have been building websites since the nineties, but they knew their HTML, their CSS, and a little bit of JavaScript; all the bells and whistles to publish on the web. For the ones that didn't, there was the WYSIWYG editors that took care of these languages so the creators can just focus on the design. Over the years, a bunch of abstraction layers were built on top of that flow to distance the creators of those websites from the code used to generate said websites. In the mid-2000s, we were thrown into the no-code revolution that birthed the likes of WordPress and Squarespace; just drag and drop to create and don't worry about what you send to the browser. That wasn't a bad evolution, it was in fact very good for the internet. Bloggers spun up their own WordPress blogs and newspapers began their slow but eventual transition to the online world.

For the regular folk like me that didn't want to deal with the increasing complexity of the no-code tools, there was the ultimate abstraction of them all, blogging platforms. I created tiny corners for my writing on these platforms. I tinkered with Blogger and medium, and others had tumblr and Greymatter. As a writer building your little corner on the web, you had to cede control of something with every abstraction. You'd first let go of the visual aspects of your website, you get some templates and elements, but that's it. Then you'd give up control over where your corner is setup; you want your own domain? too bad, you can't. Then you'd give up access control, readers can only visit that corner of yours if your platform allows it. Depending on where you as a writer were on the abstraction scale, there was always a tradeoff at play.

I was so far removed from what my corners were actually made of that none of them felt like they were mine. The newsletter ecosystem of today tries to eliminate several of those tradeoffs but is still very much an abstraction.

Curious as I am, I wanted to build my own corner from scratch, no templates, no middleman, just complete agency. I wanted to be as close to the metal as possible. Me, someone with no prior knowledge of web development, thought it would be a good idea to go under the hood and build. Thankfully in the year of intelligent agents (IAs from here on out) available at the click of a button, I didn't have to enroll in some 100-hour web development bootcamp to have "Hello World!" appear on a locally hosted webpage and create a calculator app for my final project. I thought I should start from the end, like holding a book and going straight to the index. I reverse engineered everything.

A necessary precursor is that I had already taught myself Python a few years ago, and by taught myself I mean I could copy someone else's code and get it to work, so the sight of code and attempting to decipher it did not scare me.

To start, I needed to learn about the tools to build my new space on the web. Those IAs are only as smart as what you bring to the conversation. They also need a lot of oversight and have default preferences that might not be to your liking. So I did the research, decided on my picks and shovels and went over to the IA to start the build.

" Build a website using svelte and sveltekit for my blog and fetch my content from Ghost, my CMS" I initially prompted

"Here's your website, you can use the following commands to run it"

"Oh thanks, IA, it works" I gleefully responded

The end.

Of course that's not what happened. The reality is that I had to test and debug, inspect elements of other websites to learn more, get into prolonged arguments with the IA that, and get sent down rabbit holes. Some requests would be resolved in seconds, others would take days. The farther you stray from the IA's defaults the cloudier the cloudier the picture gets and the less likely it is that your one-shot request gets resolved.

In the process I did end up getting a better understanding of web development, and yes, I probably have spaghetti code that needs to be cleaned up, much like the what the WYSISWYG editors would produce, but it makes up my own place on the web. And it still barely works, but it's a start.