I’ve been thinking about how to get myself off of tumblr, and on to a real Big Kid website. I have been feeling like being on tumblr, although it is very easy, doesn’t quite give the right impression. Hosting personal commentary on feminism and tech along side a bunch of smarmy joke images and porn just didn’t feel right.
I had a couple requirements, when looking for a new place to put my words:
- No Comments - If you have something to say about my writing, you’re welcome to tweet me, but I don’t want to be “in control” of a forum for people to spam, or harass me. at least on twitter, I can make THEM deal with you if you’re a jerk.
- Simple to Add Content - I’m far from a web genius, although I am smart enough to work out how HTML and markdown work. It’s not that I CAN’T do something complex, it’s that I don’t want to. Low friction encourages me to actually write!
- Simple to Theme - I’m not a designer. I have a great fondness for
[NSColor redColor]
and[NSColor greenColor]
, which have no place in a real professional-ish website. I appreciate other people helping me out with that stuff, so no one else has to suffer another grey, black, and more grey design from me.
I knew I didn’t want to be on Medium, comments on every single line is the exact opposite of what I was looking for. I also have some concerns about Medium that make me leery of patronizing their service. I don’t really understand how they make money, and if you can’t tell who the sucker at the table is, it might be you.
I asked around, and the thing that everyone suggested to me was a statically generated site. I was initially leery, since I didn’t really want to do my own site administration. A friend pointed me towards http://cactusformac.com, which sounded like it might do exactly what I wanted by taking in simple markdown files and spitting out a blog. Sadly, Cactus is hard-coded to upload to Amazon’s S3 service, and since we already pay for web hosting, I wasn’t interested in paying twice. It also seemed like it’s scale was probably much larger than I needed.
I was talking about how I was a bit disappointed, when my buddy William pointed me towards this site, which lists a full-on plethora of static site generators by their popularity on github. He had recently settled on using Hugo on the advice of our dev-ops friend, and I decided to give it a try. In one evening I had a new site up and running, styled acceptably, and almost all my content transferred over.
The way Hugo works is you install a command line application, which includes a site-generator and a small web server. There’s a quick-start guide here, and its pretty good, although there were a few things I got hung up on. The Readers Digest version is, you use hugo new site path/to/site
to generate a site somewhere on your computer, add content to the content directory in the form of markdown files, and run hugo
to generate the eventual website you upload to your website. There’s a config.toml file that has things like your website root url, which theme it should use, and other general information. This wasn’t clear to me at first, and I kept generating a website whose links all pointed to localhost. The quick-start guide suggests configuring some of these settings via flags passed to the hugo program, which makes it quick and easy to get going once, but isn’t optimal for most use-cases.
I also had trouble because the theme I selected, (and there are many!) expected my content to be in a particular directory underneath the expected content directory. I had named my folder “blog” instead of “posts”, so initially there was no content being found and generated. Once I had that worked out, I learned that when Hugo says it supports a few different formats for their front matter (which defines attributes about your post, including it’s post date, whether it’s a draft, its title and description, and its author), that all of them are not always valid. I had chosen to use TOML in my posts since that was the first example, and all of my posts generated with the same post date, even though they were obviously different in my markdown files. I eventually tried using the YAML format, which was almost identical, and was much more successful.
All in all, I’m pretty happy with this situation. I understand how my site works, don’t have to hand write HTML, CSS, or JavaScript, and can easily update my content. I am working in markdown, which gets easier the more I use it, and in any case is painfully simple. Hugo’s built in web server watches for changes in the source and shows them in a browser (check out the –watch, –buildDrafts, and –buildFuture flags on the hugo server
command) so you can see what your source’s changes will produce, as you make them.
There’s still a few things to do. I would like to set up some kind of continuous update situation, but I prefer to write on my laptop, and that’s where hugo is installed. Obviously I don’t want to leave that running all the time to generate the site when there are changes, or a post is scheduled to go live. I definitely need to check my site into a source control repository somewhere for safety’s sake. Is now the time I suck it up and figure out github? I might like to tweak my theme a bit, and need to set up some conventions for image uploads. I am going to miss the auto-tweeting feature when I post, as well, although I could probably script something for that, once I solve the continuous update issue. There’s always more to do, but I came home, sat down, and wrote up a whole post, without writing any HTML, or doing anything more complex than running hugo server --watch --buildDrafts=true
, so I’m pretty pleased with myself!