Hello, world

I have been toying with the idea of launching my own site/blog for awhile, and was recently pushed over the edge after discovering the concept of POSSE: publish on your own site, syndicate elsewhere. To me, the key benefits of POSSE are that you own your content and that you’re reducing your reliance on third-party services. If a site goes bankrupt or decides that you’re violating their terms of service, you lose whatever content they’re hosting. I like the idea of having a corner of the web that’s under my control, as well as having a space that establishes my identity/presence outside of any specific platform.

Owning your own site is also an objection to the platforms and information silos that have taken over the web. On top of the issues with content ownership, big platforms are increasingly using algorithms and dark patterns to shape user behavior, optimizing for engagement, KPIs, and CPM rather than the user experience. Reddit’s new design is a major offender. The JavaScript takes ages to load, algorithmic recommendations get mixed into the comments, mobile users get pushed into the official Reddit app… Reddit Incorporated’s motivations as a business are ruining Reddit the website, and I’m sure it will only get worse once they go public.

In his memoir, Permanent Record, Edward Snowden reminisces about his experience growing up online in the late 90s and early 2000s. The internet was a weird, wacky place back then. Tons of people had personal websites and communities congregated on forums and message boards. There weren’t any large-scale gatekeepers or moderators like the ones we have today. Through the lens of a whistleblower, Snowden examines how centralized platforms enabled the encroachment of the surveillance state. But looking at him as a child of the early internet, he comes off as nostalgic to me, yearning for a time when the web wasn’t so homogenous and sterile. By dipping my toes into the indie web, I’m hoping to experience that culture again, and maybe even help foster it a little.

Building this site

I knew from the start that I wanted to build this site using a static site generator. Static sites require minimal effort and minimal infrastructure, and I like being able to write posts using Markdown because I already use it for taking notes. I ended up using Jekyll because it’s optimized for blogging and it’s a mature project, meaning that I can lean on the established community and ecosystem for support. Also, it’s written in Ruby, so it’s nice to know that I can hack on it using my favorite language.

I did not want to use an off-the-shelf theme; the goal of this project is to have a space that’s uniquely mine, after all. I wrote my own HTML and CSS/SASS, using Flexbox for a responsive layout and not losing sleep over legacy browser support. (Besides, almost every browser these days is just a reskinned Chromium, right?) There are definitely things I need to implement or improve, such as code blocks and syntax highlighting, but I’m okay taking on that work as I need additional features.

Since I’m using Git for version control, I decided to use a Git provider that also offers static site hosting. I went with GitLab because they allow users on their free tier to use private repositories for their sites, unlike GitHub. All I had to do was add a GitLab CI config file to my project, and GitLab had a template for Jekyll projects that I could use. Be aware that in order to prevent abuse (e.g. cryptomining), GitLab requires you to verify your identity using a credit card before you can use their free CI runners. You may be able to avoid this by using your own runners, but that means managing your own infrastructure, which I don’t want to do. I’m also unsure if you can use custom runners on GitLab’s free tier. I ran into a few false starts because I had some invalid URLs in my templates, but all I had to do was run them through the relative_url Liquid filter and set baseurl in my Jekyll config. Then, I had to add some DNS records to use my custom domain, and GitLab handled getting a Let’s Encrypt SSL certificate. Between reading the documentation and setting the configuration up, it took me about an hour to get my site live on my custom domain, and changes take around two minutes to deploy.

What now?

I don’t think that I’ll be posting here super often, but as I document projects or write guides, I’m going to post them here and link to them rather than make a third-party site the home of the content. I might also experiment with writing opinion pieces on media like games and anime. I’m pretty sure this won’t be a personal blog where I talk about what’s happening in my life.

As we go into a new year, I’ll keep tabs on how this experiment goes so I can write a reflection at the end of 2022.