6 min read

100 Days Of "Website", Day 1

Me, explaining my ideas.

Like most people, I have a lot of ideas and not enough follow-through. For most of my life I've struggled with turning thought into action.

Earlier this year, I did 100 days of threejs. It was, to date, the most consistently I've ever done anything. It taught me the value of a daily practice: of forcing yourself, no matter what happens, to Just Do It. Turning ideas into reality, at least for me, is something that can only be done through consistent action.

Since then, though I've been eager to start a new hundred days project, I've been struggling with what to choose. I was unemployed for about the first half of those last 50 days, and that gave me a lot of time and room to be hyperfocused on one thing. Right now, my interests are all over the place. I have more ideas than I know what to do with. I don't necessarily need the rigor of a project like that to keep me going.

Still mad that I can't get a tattoo of this because everyone associates it with the child slave shoe company.

What I've decided is that I want the rigor of a daily practice again: turning thought into action for a hundred days. And I want to do so in one place. I want to build what a lot of people call a "digital garden". The term's a bit too cutesy for me, and is often used as a poetic cover for shitty infrastructure choices, so for now I will refer to it as "website".

One of the tasks I'd like to complete on "website" in the coming days is a manifesto for the site itself and this hundred days project, but I've spent the last 8 hours setting up a Raspberry Pi server. For now I'll just lay out a few rough goals for the next three months and change.

1) Do something

Every day I will do something and put it on "website". It may be a work project, a personal project, a thought, whatever. The point is in the practice. This is the only bullet point that I must follow every day.

2) Centralize

Over the course of this project, I'd like to centralize the things I track and the ways I keep track of them onto this central repository.

I have several hundred browser bookmarks, an are.na page, Microsoft OneNote for digital notetaking, multiple physical notebooks, saved files on my computer, DMs in a dozen different apps, and so on. I find it constantly difficult to figure out where my digital artifacts are. I would like to solve this problem on here.

3) Organize

It won't do me much good to centralize things if I just have a new, impossible to navigate bucket for them. I'd like to build out this site as a sort of wiki for myself. Tags, graphs, separate pages, whatever.

4) Follow Through

I probably won't get through every idea I have in a hundred days, but I'd like to find a way of reducing the idea > action feedback loop as instantaneously as possible. That means having an idea, prototyping it immediately, and putting it here.

5) Do It For Her Me

The primary audience for and beneficiary of this project is myself. Making it public does help hold me accountable (and prevent me from writing totally incomprehensible shit), but I have to keep in mind that this project is for me. If it turns out that my beautiful ~ digital garden ~ is helpful to other people, all the better, but for now, I'm just trying to carve out a space for myself.

6) DIY or Die

This tends to be a bullet point somewhere in every manifesto I write, because it's important to me! I like understanding the provenance of the tools I use. Plus, a big part of 2) and 3) is eliminating my reliance on other people's servers and the endless sea of apps I wade through every day. I want to have my own data next to me on my desk, instead of assuming that a tech company's server farm is a good place to keep my digital self.

And that takes us to what I did today!

Day 1: Setting Up Ghost On A Raspberry Pi

This website is now hosted on a Raspberry Pi sitting on my desk. So if it goes down, it's probably because my power went out or something.

I selected Ghost because it's open source, self-hostable, and the cool folks over at the New Design Congress recommended it – I may end up changing in the future, but it gets the job done for now.

This is a hypothetically very simple process, so I'll just go through the major bullet points:

1) Deciding on using a Pi:

I first just tried to set up hosting on my DreamHost server. I quickly discovered I'd need to pay more for a hosted app. I gave Hetzner a whirl, but they wanted me to upload a photo ID to start a server instance. This pissed me off, so I decided to use a Pi out of spite, and because the whole point of this project is to do things I've been meaning to but never gotten around to.

2) Setting up the Pi:

I will never throw away my wires.

I had to navigate through the mess of old electronics and wires in my office – my physical space, much like my digital one, is much less organized than I'd like it to be. I failed at finding a power source for my Pi 3 (apparently 3.1 is an uncommon amperage), so I set up an old Pi 4, waited through the longest sudo apt-upgrade I've ever had to do, enabled SSH and I was off to the races.

3) Installing Ghost

The Ubuntu installation guide pretty much works, until you get to the actual point of, you know, trying to access your Pi from the external internet.

4) Going insane

The router management page only works 1 out of every 5 times!!!

I set Ghost, used my Dreamhost account to set up DNS forwarding to the Pi, and promptly discovered that I couldn't access the site. From this tutorial, I discovered that I needed to set up port forwarding on my router.

I have an Optimum router, as many New Yorkers do, and was unsurprised to discover that Optimum's attitude towards my use case, similar to their attitude towards users who want to "be online" or "download something", is that I can get fucked.

I was able to set up forwarding to port 80 but not port 443, as my external port 443 is apparently in use. I spent about three hours trying and failing to set up port forwarding and a LetsEncrypt certificate before I gave up.

Next, I spent another hour trying to figure out why I couldn't just load Ghost over regular http, when I finally discovered that Ghost's config.production.json file has a "url" option that was hard set to https. I deleted that pesky "s" and behold, website!

This website lives here! I keep knocking it off my desk!

So here we are. I have an unsecure website sitting on a Raspberry Pi on my desk. Tomorrow, inshallah, it will have SSL. Please tell me if you know how to set up forwarding for port 443 on an Optimum router.