Some design decisions on this site, SEO and otherwise

Mostly a random collection of decisions I made when revamping this site. I’ll try to update this over time as I make new calls.


  • Post in markdown. This is mostly for comfort, it’s easier than writing HTML.

  • Minimal CMS.

    I use Hugo as a static site generator. I thought static site generators would be easy; I was wrong. Hugo uses Go and a bunch of libraries, I can’t install all of it on my company laptop (without disabling some security features, which otherwise seem like a good idea).

  • Static hosting.

    This is also mostly for comfort. It also helps speed, and gives me a little bit more control of the final HTML.

    I use Firebase static hosting. Static hosting allows me to move hosters easier, though it’s not completely trivial since I use various HTTP response headers currently defined for Firebase hosting. Firebase hosting is free’ish - though paying for hosting is fine too.

  • Keep existing domain name.

  • I cache most content for up to a week. WebPageTest.Org complained when I had it set to a day, so it’s now a week. I doubt it changes much.

Yeah. Links. I know you like them.

  • Treat external links differently.

    I add a symbol for external links, open them in a new tab (target=_blank), and use rel=noopener on them. Using rel=noopener is a security measure. I don’t use rel=noreferrer since I like referrers a bit. But not too much.

  • Referrer-Policy

    I use origin-when-cross-origin as a referrer policy, as specified in the HTTP headers in the firebase.json file.

  • Enable rel-nofollow links.

    I don’t have plans for doing anything special with nofollow links, but it seems like it might be a useful thing to have. Also, a bunch of the posts here are about showing nofollow links, so hah. Here’s how it’s implemented in Hugo.

  • Lots of linked categories. I link to all categories from all pages in the sidebar. This is probably unnecessary, but I like it. Also, related posts linked in the footer based on categories, title, and date.

SEO’y things

  • link rel=next / rel=prev. Where the CMS generates these, I add them to the <head>. They’re not used for SEO, but I like old things.

  • link rel=author. This is just for EAT fun.

  • Article structured data. I might as well figure this out. So it’s added.

Other stuff

  • Minimal JavaScript. This is mostly for practical & speed reasons. Less code = fewer things that can break.

  • Follow security best practices. You’ll see these in the HTTP headers or in the HTML.

    • CORS header for font files
    • X-Content-Type-Options: nosniff
    • X-Frame-Options: SAMEORIGIN
    • X-XSS-Protection: 1; mode=block
    • Content-Security-Policy: (mostly self other than JS for code highlighting on
    • Referrer-Policy: origin-when-cross-origin
  • Favicon: Who knew favicons were so weird? Instead of 7-10 files, I just made a SVG version.

  • Sitemaps / feeds: Include a normal sitemap file & an RSS feed. Do people still use RSS?

  • Minimal analytics / tracking. I rarely look at the data in the long term, so why track it. Also, no 3rd-party cookies, GDPR-interstitials, etc. I use Firebase Cloud Logging to track requests, and might aggregate that to charts, but it’s limited to what comes in on the HTTP request level.

  • No site-search. It’s a static site, so running my own search would be overkill. The search box goes to a Google site:-query.


  • Migrate older, even embarrassing content.

    I’m old enough not to care about people’s opinions on that. It’s not terrible content, it’s not great. It is what it is. Some of these things were fun to figure out, might as well share them. It also includes some of my Google+ posts.

  • Less SEO / official-Google focus

    It goes without saying (multiple times), but this site is a personal site and does not reflect the views of my employer. While there is a bunch of SEO content here, don’t assume it’s up to date, that it’s correct, or that it reflects Google’s views. Some SEO / website stuff is just fun, that’s why it’s here. Check the official Google SEO documentation if that’s what you want. Check the help forums if that’s what you want.

  • No comments

    Comment moderation is a hassle. You have to either deal with authentication or delegate it to a 3rd party. You have to maintain dynamic content. People expect answers. Post on Twitter if you want to comment.

  • Link to code on Github

    If I’m going to put code on here, I might as well host it somewhere where it can be updated easily. Snippets tend to be Github Gists, longer things are code.

  • Mostly-English

    More because writing in German brings extra mental overhead. Also, I can’t write in Chinese or Japanese, so those are out too.

Comments / questions

There's currently no commenting functionality here. If you'd like to comment, please use Twitter and @me there. Thanks!

Tweet about this - and/or - search for latest comments / top comments

Related pages