Optimizing a lightweight hugo powered website


Tags: devops, sourcehut, website, blogging

Table of contents


What does it mean to be “lightweight”

I remember coming across bettermotherfuckingwebsite.com and knew that this was where I had to copy the css from. Only being 7 declarations, it made for an easy basis for the global css.

assets/site.css

body{
  margin: 40px auto;
  max-width: 650px;
  line-height: 1.6;
  font-size: 18px;
  color: #1d1d1d;
  padding: 0 10px
}
h1,h2,h3{
  line-height: 1.2
}

Expanding on the basics

.chroma,.codeblock-label {
    font-family: monospace;
    background-color: #efefef;
    font-size: 14px;
    margin: 0 -0.5rem;
    padding: 0.5rem;
}

I will go ahead and add just a tad more, as I like to post some code snippets within my writing. This bit here just lets the text ‘breathe’ some without messing up the typographic line start.

.codeblock-label {
    border-bottom: 1px solid #bbb;
    margin-bottom: 0;
    font-weight: bold
}

Using .codeblock-label I’m able to provide further context to the code snippets, for example a filename can be embedded as html directly into the markdown for the article.

~/evans-secret-diary.md

<p class="codeblock-label" tabindex="0">~/evans-secret-diary.md</p>
a[target="_blank"]:not([href*="okt.wtf"])::after
{
  content: "";
  width: 0.7rem;
  height: 0.7rem;
  margin-left: 0.2rem;
  background-image: url("data:image/svg+xml,%3C...");
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  display: inline-block;
}

Combining this little css snippet to embed a svg graphic after links that are opening in a new tab with hugo’s shortcodes.

layouts/shortcodes/el.html

<a href="{{ index .Params 1 }}" target="_blank">{{ index .Params 0 }}</a>

Using this shortcode I can embed links into my article’s markdown that tarket _blank. See how over at the official shortcode template documentation . Using this I can still put links to pages like about, and they won’t get the little indicator.

Syntax highlighting

Next up was generating some syntax highlighting css so I can get that linked in for some fancy colors.

$ hugo gen chromastyles --style=trac > assets/syntax.css

Mix and minify

Now that we have hacker style syntax highlighing this blog has all the credit it needs.

layouts/partials/head.html

{{ $syntax := resources.Get "syntax.css" }}
{{ $site := resources.Get "site.css" }}
{{ $style := slice $syntax $site |
            resources.Concat "styles.css" |
            resources.Minify |
            resources.Fingerprint }}
<link rel="stylesheet" href="{{ $style.RelPermalink }}">

Link it up in the head and we can get back to authoring some content.

All that fancy css comes in at a whopping 2.84 KB. Also the big thing so far is the entire website functions and reads perfectly fine not only without css loaded… but get this: no javascript.

My blog’s code lives here ~okt/okt.srht.site


[Back to top]