home | about | talks | publications
Detailing the work of getting this blog put together using cobalt.rs and deploying with now.
The work of starting a blog intimidated me for a long time and I’d like to talk a bit about how I made it past being intimidated. Some of what slowed me down in the past was the idea of finding time. Whether I’m actually able to find time isn’t clear yet but I’ve reached a point where I thought I’d try. The remaining problem stemmed from indecision. I wanted the solution to be just right but couldn’t decide what that even meant. A part of me leaned toward a nice prefab solution like svbtle or falling back to a free WordPress theme. Another part of me though, wanted to use the personal blog project as an excuse to learn new tooling and level up in areas that I don’t have much experience.
Some experiecnce with Hugo in the past had been positive, it made a lot of the work seem approachable. When it comes to open source solutions for hobby or “side” projects though, I’ve started to lean toward projects that are a little younger or have at least have a little less of the spotlight. I’m more often able to find some unpolished corner that gives me an excuse to contribute to it and hopefully, make something cool even better.
Because I’ve been on a kind of personal mission to map out some of the Rust ecosystem I thought I’d explore what it had to offer. A quick browser search for “static site generator rust” turns up a handful of options, but out of those, two seemed especially suited to the task. Gutenberg and cobalt.rs.
The docs for both seemed approachable so I felt optimistic that either choice would be manageable with effort. Because my experience is especially slim in design, my choice ultimately came down to finding an existing site built with either of the tools that had an aesthetic I wanted to pull from.
Matthias Endler’s blog sold me, it’s beautiful. Walking through that code base was a fantastic tutorial on using cobalt.rs. This site, especially my CSS, leans pretty heavily on what I found there.
Initially, I didn’t appreciate the
.liquid interchangeability. The first pass only used
Markdown so I hit a wall when wanted to incorporate styling in some
draft posts. That’s where the
comes in. It lets you incorporate raw HTML, and all the power that comes
with it into any page (which in my mind is basically magical CSS and
in the toolbox.
Okay, I dug in, hacked some CSS, learned what was and wasn’t possible
with Markdown, fought the urge to duplicate the
files in the
_layouts directory without gaining anything
from it and finally had something I thought I could run with. But then
what? I’ve been getting paid to write software for a few years now and
I’ve never had to learn or cemented how to go from local files to a live
website 🙃. Where does all that happen? Do I need a hosting
account? Which one? The words Digital Ocean droplet probably
mean something… I spiraled like this for a bit until happily, the memory
surfaced of video I’d been recommended by a friend ages ago on now &
next, Node.js packages that I didn’t really have an application for
at the time. I revisited the video and gave it a try. Damn,
now is a superpower.
Here are the steps I took to get my blog up and running during
development: 1. Install now. 1. Build the site with
cobalt build (it generates a
now deploy _site? Bam! Live website with a generated
Totally, totally, sold. I ended up springing for the step above a free account to associate custom domains with my deploys and support something that blew my mind.
To associate your domain with the URL generated with
now deploy: 1.
now alias <source (generated) URL> <destination URL>
Getting a blog up and running took some leveling up (happily!) but
because of some great tools and the work of others to learn from, it
didn’t take a ton of time. It was the work of a weekend and a lot of
that was experimentation. My experiences with both
now were hugely positive and I
recommend both for anyone interested in starting something from scratch
or just exploring some new tooling.