A photo of me on a horse looking quite dapper

David Celis

A cowboy coder.

Follow me

Fifteen Years of Ru...ewriting My Website

A couple weeks ago, an internet friend/mutual of mine, Steve Klabnik, published a very timely blog post titled Ten Years of Ru...ewriting my website and, well, I was inspired. His post was timely for me because I was in the middle of rewriting my website too. Now that it’s live, I thought a similar post would be really fitting.

Steve’s post is cleverly titled to play on the fact that it was published on the tenth anniversary of his foray into Rust, but he mainly talks about how he rewrote his website to learn a new framework (Astro) and to use a language that he doesn’t frequently employ (TypeScript). Me, on the other hand? I’m mostly staying comfortable. You see, fifteen years ago, I was introduced to Ruby and Rails, and I’ve been working with them ever since. Fifteen years ago is also when I registered my first domain name (davidcelis dot com) so I could start hosting a personal site. All that to say: I’ve been rewriting this dang site for over fifteen years.

My first website was a WordPress blog hosted on NearlyFreeSpeech.NET so I could share some very amateur and very infrequent photography. During the next few years, as I got more involved in programming and was nearing my college graduation, I started to care more about my internet presence and having a more professional website I could share on my résumé. I played around with a second wordpress site centered more on myself than my photography, then a CNAME to my tumblr (easier to maintain), then a Jekyll blog powered by Octopress and, eventually, a simple, vanilla Jekyll blog.

Since then, I’ve rewritten and redesigned my Jekyll website every few years, and even switched from davidcelis dot com to my current Icelandic domain "hack". My website has never blown me away (I’m not a designer or even a very good frontend developer), but each time did get a little better. Today marks a brand new era for my website. After fifteen years, I’m right back where I started in my programming journey: Ruby on Rails.

Why Rails? Why not keep it a static site? Or why not, like Steve, take this as an opportunity to stretch my legs, leave my comfort zone, and learn something new? These are reasonable questions. Static sites perform better and are generally easier to maintain and update. You don’t need to worry about a server or PaaS for running a Ruby process indefinitely. You can just build a static site, push it to GitHub, and add a CNAME. And this is exactly what I had already been doing for years. So why change this and replace it with a Rails app? Steve rewrote his website to learn something new and, seemingly in the process, to reinvigorate his desire to write. I want to reinvigorate my desire to write too! But the biggest reason I’m rewriting my website is that Twitter is dying.

I know Twitter has completely dominated news cycles and online discussions for months now, so I won’t spend a ton of time on that. But Twitter has been an incredibly important part of my life for a long time. I signed up in early 2007 and I’ve used it ever since. Sure, I’ve used it to shitpost and spew random thoughts into a void for meaningless internet points, but I’ve also used it to make friends, build communities, and even find multiple jobs that strengthened my career. I’ve maintained and rewritten and redesigned this website a lot, but Twitter has always been my home on the internet. I loved Twitter, but I don’t love it anymore, and most of my friends are leaving or have already left.

At this point, I’ve made Mastodon the place where I post what I would’ve posted on Twitter, but it still doesn’t scratch the same itch. Federation is messy, and Mastodon lacks a lot of the exploration features that Twitter had. Then again, with how addictive social media can be, maybe it’s a good thing that Mastodon can’t scratch the same itch Twitter did. Maybe that itch was bad for me. I say I loved Twitter but, like a lot of people, I also really hated Twitter. It was a terrible place with terrible people and it made me care too much about things like likes and retweets.

Twitter’s collapse has made me realize that what I really want is to reclaim some control. Right now, Mastodon seems to be the place where most of my network is migrating. Maybe that will stay true for a while, and maybe it will change. Maybe some other centralized platform will grab wide-spread attention. Maybe people, including my own disparate groups of online friends, will fragment and coalesce across multiple networks. The future is uncertain, but I’m trying to carve out a space for myself that I can rely on, and where friends can find me regardless of where they themselves end up: my own website. And, after all this time, this is what brings me back to Rails.

You see, while it can be really easy to maintain and deploy a static site, it’s not that easy to publish new content to it. I was never a frequent blogger, but when I had some motivation for longform writing, I used to write at least a couple times a year. That turned into once every couple years. Then, after my last post in 2017, I lost steam entirely. Meanwhile, on Twitter, I’d post almost every single day, often multiple times a day. With Twitter dying, and with an uncertain future for that kind of social media, I wanted to refocus on my own space and refocus on ways to reclaim my own content. But I had a few important critera:

  1. It needs to be easy for me to post. With Twitter, it was so easy to have a thought, pull out my phone, instantly share it with my friends and followers, and feel like I was connecting with people. That’s a lot harder to do with a static site. I didn’t want to be fiddling around with complicated ways to publish short notes to a GitHub repository from my phone. Sharing photos would be even worse.
  2. I want to be able share all sorts of things: text, yes, but also photos, videos, links, and maybe even things like location-based check-ins.
  3. I want to reclaim control of my content while still being able to reach my friends. This means continuing to share my content on platforms like Mastodon (and, for now, Twitter) but treating my own website as the final source of truth, basically joining the IndieWeb.

For a bit, I tried out micro.blog, which gives you a static website but with a Twitter-like posting interface that lets you publish new posts and photos really quickly. It’s admittedly a great service that tackles those three requirements, but I’m really picky, and there were enough little ways in which it didn’t work in the way I wanted it to work, so I gave up on it pretty quickly. I also thought about keeping my Jekyll site, but it’s too hard to update a Jekyll site from a mobile device. I really didn’t want to have to do anything like fiddle with iOS shortcuts or complicated workflows that take text or photos from my phone and somehow put them in my website’s git repository. I just want to be able to pull out my phone, write something in Markdown, maybe add a photo or two (or four), hit "Send", and have it available to read on my website and a few other websites I’m using. And, of course, I want all of it to work in exactly the way that I want it to work.

For all those reasons, I ended up doing something I hadn’t done since running through my very first Rails tutorial fifteen years ago. I opened up my terminal, typed in rails new blog, and hit enter. And for the first time in recent memory, I feel excited about my website again. I feel excited about writing again.

Here’s to another fifteen years.