How I set up swf.wtf in one morning

A mildly embarrassing account of how I built a personal website, bought a ridiculous domain, and somehow got email working before lunch.


I want to be upfront about something: I have owned stevenfry.ca for years and done absolutely nothing with it. Not a single post. Not a landing page. Not even a tasteful "under construction" GIF from 1997. It just sat there, silently judging me, auto-renewing every year like a gym membership I was too guilty to cancel.

So naturally, my solution was to buy a second domain.

The Domain

My initials are SWF. If you were born before 2010 you'll recognise that as the file extension for Adobe Flash — that beautiful, chaotic, now-dead technology that gave us browser games, skip intros, and at least 40% of our collective early internet trauma. I did not plan this. The universe simply provided.

swf.wtf was available. Of course it was. I bought it immediately before I could talk myself out of it. Seven dollars well spent. The .wtf TLD is doing a lot of heavy lifting here — it's playful, it's self-aware, and it perfectly captures my general relationship with technology: enthusiastic confusion.

The Website

I wanted something dark, terminal-flavoured, and fast — basically what my Fedora desktop looks like after an Omakub-style makeover. No frameworks, no build steps, no node_modules folder large enough to collapse into a black hole. Just HTML and CSS.

The whole thing is static files hosted on GitHub Pages, which is free and takes about four minutes to set up if you already have a GitHub account. Push your files to a repo, flip a switch in Settings, and you're live. It's embarrassingly easy and I'm annoyed it took me this long to do it.

The homepage has a blinking block cursor that follows your mouse around, which I am disproportionately proud of. It's about twelve lines of JavaScript and it makes the whole thing feel like a terminal. Sometimes the smallest details are the most satisfying.

Side note: there's also a Konami code easter egg on the homepage. ↑↑↓↓←→←→BA. I'm not going to tell you what it does. Go find out.

Connecting the Domain

This is the part where I confidently typed things into DNS records and then anxiously refreshed for twenty minutes to see if anything broke. The short version: you add four A records pointing at GitHub's servers, a CNAME record pointing www at your GitHub Pages URL, and a CNAME file in your repo telling GitHub which domain to expect. Then you wait.

I was on GoDaddy, which has a DNS interface that looks like it was designed by someone who has heard of user experience but disagrees with it philosophically. There was an existing www CNAME pointing at the wrong place, a "Parked" A record doing nothing useful, and approximately one too many things to delete before it all worked. But it did work. Within the hour, swf.wtf was resolving to my GitHub Pages site with HTTPS and everything. Very professional. Very me.

The Email

Look, steven@swf.wtf is objectively a great email address and I wasn't going to let it go to waste. The challenge: I did not want to pay for a full mailbox or learn how email servers work at any meaningful depth.

Enter ImprovMX — a free email forwarding service that takes about five minutes to configure. You add two MX records to your DNS, tell ImprovMX where to forward emails, and suddenly anything sent to your fancy domain lands in your regular inbox. It's like call forwarding but for your identity.

I also set up Gmail's "Send mail as" feature so I can reply from steven@swf.wtf without leaving Gmail. This required generating an App Password in Google, which is the kind of thing that sounds scary but is actually just a slightly longer password that you copy-paste once and never think about again. Total setup time: about ten minutes, including the two minutes I spent reading instructions I didn't need.

The Setup Guide

The whole reason this website exists is that I'd been tinkering with Fedora 43, trying to get it looking and feeling like Omakub — DHH's opinionated Ubuntu setup that I'm mildly obsessed with. Omakub doesn't run on Fedora, so I spent a while reverse-engineering what it does and finding Fedora-native equivalents for everything.

The result is an interactive checklist covering terminal setup, GNOME theming, app installations, and dotfiles. Every item has the relevant command you can copy straight to your terminal. It's the guide I wish had existed when I started. It's also, somewhat accidentally, the first real piece of content on this website.

Total Time: One Morning

Start to finish — domain purchase, site build, DNS configuration, email forwarding, Gmail alias — about three hours. A significant chunk of that was me second-guessing the domain name, then buying it anyway.

The moral of the story, if there is one, is that the activation energy for "personal website with a cool domain and a working email address" is genuinely quite low in 2026. Lower than I expected. Lower than the years of inertia suggested. stevenfry.ca sat untouched for ages not because it was hard, but because I kept waiting until I had something worth saying.

Turns out "I set up a website this morning" is something worth saying. It's not much, but it's a start. More posts to come — probably about Linux, definitely about terminals, occasionally about things I've broken and then fixed by reading the Arch Wiki even though I'm not on Arch.

Welcome to swf.wtf.