The DIY ethos of the 80s & 90s Punk/Hardcore scenes was the basis of my formative values. DIY taught me that everything we depend on is made and maintained by regular people. There was nothing mysterious about fixing a car, building a house, or machining precision gears. With access to knowledge, and the will to apply it, ordinary people are capable of just about anything. You don’t need a degree, certification, or even permission. You can just “Do It Yourself”.
It was in this spirit that my friends and I taught ourselves how to run our first BBS in the early 90s. As the world wide web became a thing, we taught ourselves how to build websites and setup our own webservers. When the world finally settled on a standard for global email, we setup our own mail servers. We didn’t take classes or get certifications. We just read the manual and gave it a shot.
Sometime around the early 2000s, “freemium” publishing platforms became a thing. Not only could you host for free, but you could interact with other people on the platform seamlessly. There were usually “pro” features you could unlock for a fee, and this was how they made money. I happily used Livejournal, MovableType, Blogspot, and Wordpress for years. I even paid for the pro versions of all of them at one point or another. You still had the option to self host, but the publishing platforms added enough value to justify the switch.
Now it’s 2019 and we live in a very different world. Ad revenue and personal information peddling are the core business model of every major publishing and social media platform. Long gone are the days where the person creating the content was the customer. Now the advertisers are the customers. This fact has become so blatant and ubiquitous, that nearly all platforms have rewritten their terms to mandate “advertiser-friendly content”. Content creators have gone from customer, to product, to quasi employee.
So, fuck ‘em. Platforms need content creators. Content creators don’t need platforms. Do It Yourself.
Ordinary people successfully made and hosted websites in the 90s when the tech was hot garbage. I was able to do it as a mediocre child. Given all the advancements in tools, services, and wide adoption of standards, it’s never been easier to self publish.
The first step in reclaiming one’s Internet presence is to take inventory. What you choose to self host and what you’re comfortable outsourcing will vary from person to person. In my case, I care about:
- Full ownership of my code and content
- I want to own what I create and control it's means of distribution. I want to make it easy for people to access my content without jumping through any hoops. No one should need to subscribe, then click a bell icon, then disable adblock, then connect to a vpn in the correct country to access my code and content.
- No ads
- Ads and the data mining mechanisms that support them are the reason things have gotten as bad as they are. As my own platform, I'm not beholden to "advertiser friendliness" or ranking algorithms.
- No engagement
- Not everything needs to be a community. Don't @ me, get off my lawn, etc.
- It's important to me that my content fully supports text-based browsers, works well with screen readers, and has semantically correct markup top to bottom.
This means that at the very least I want to self publish this blog, and have full control of the authoritative namespaces for my code.
I was already using hugo for static site generation, and I see no reason to switch. I do, however need to make a new semantic and accessible theme for hugo. (Update: and I did. You can read that post here)
Now that I have content, I need a webserver and an SSL cert.
Update: This is also done and you can read that post here.
Speaking of Github, I have a lot of code there. Of primary concern are go libraries. Because of the way go natively resolves remote dependencies, the
github.com/markhuge path is authoritative for anyone using my open source libraries. This is a problem if I lose my account for whatever reason, or if Microsoft changes the terms or nature of the Github service.
For these an other reasons, I’d like to have control of my authoritative library namespace. For that purpose I’m setting up git.markhuge.com.
Initially I’m generating browsable git repos with stagit. Depending on how much work I need to do to modify stagit’s output for accessibility, I may end up writing my own generator later on. Because I’m already using nginx for the blog, serving the repos is as easy as creating a new folder and pointing the
git subdomain to it in my nginx config.
The details for this setup are here.
IMHO self-hosting video (at the time of this writing) is a losing proposition. It gets expensive very quickly, especially multi-region. The best solution I have is to diversify where I publish screencasts.
Since I’m already running nginx, public file hosting is as easy as adding a new folder, and uploading files via SSH.
For private hosting, camera sync, and photo backup I already use syncthing. If I really wanted to, I could easily sync over the Internet, but this isn’t something I’m interested in doing.