About amissing.link

I maintain amissing.link for four main reasons:

  1. A personal website is among the freest forms of expression a person can have.

  2. Many sites these days are overengineered and/or hostile to those that value privacy. Developing and hosting a minimal, privacy-respecting website allows me to be the change I want to see in the world.

  3. The act of sharing my discoveries sparks joy (which means I get to keep them). Pursuing and disseminating knowledge is in itself meaningful to me.

  4. Organizing my thoughts somewhere allows me to understand myself to a greater extent. Otherwise, they vanish into the ether.

This site and others like it are a missing link–a way to foster thought, expression, and community. A place where connection can exist and flourish without some company designing to line their pockets with it. A gentle yet steadfast act of defiance against what the web has become.


  1. amissing.link is also available as an onion service for those that want/need more privacy. To access the onion service, use Tor.

  2. Any word with a trailing number enclosed in parentheses, such as help(1), is a link to a man(1) page. The number represents the section number of that man page.

  3. In command line examples, a dollar sign ($) represents a shell without root permissions; conversely, an octothorpe (#) represents a shell with root permissions. Root can be acquired via su(1) or doas(1), though the latter is preferred.

  4. In command line examples, [...] is used as a placeholder for actual values. For instance, usermod -G [group] [user] means to substitute the desired group and user at those locations. Other placeholders are used in a similar fashion when needed, such as /path/to/directory or example.cue.

How is amissing.link written?

I write amissing.link in Markdown with neovim. ssg parses the Markdown and generates corresponding HTML documents. rssg generates the RSS feed. Note that my version of ssg and rssg differ from Roman’s, though the changes mostly come down to stylistic preferences.

To test layout, httpd(8) runs on localhost on my development machine. After I make changes, I run a simple script named webtest to sync my changes so that I can preview them before committing and pushing to the server with git.

Once I push to the server, post-receive activates (see githooks(5) for more info) to render the Markdown and voilĂ .