I have a little rack in my workspace full of audio and network gear and housing a couple whitebox microservers of various form factors. For my workflow and day–to–day adventures in the digital realm, they’re more than just hosts to run software or store data on.

I like building computers. I also like managing computers—before life led me down the path of software development, and back when that was a common position and hadn’t yet been replaced by “devops”, I wanted to be a sysadmin one day. In fact, I like managing computers so much, I favor an approach to hosting servers vastly different from the way they’re “classically” used; one that maximizes their utility, their user’s comfort, and encourages perpetual, ongoing improvement and refinement.

What a Server Can Be

The Jargon File, version 4.4.8 defines a server as such:

server: n.
A kind of daemon that performs a service for the requester and which often runs on a computer other than the one on which the requestor/client runs. […]

The term “daemon” has a specific meaning in computing, but was chosen intentionally to evoke the Latin (and earlier, Ancient Greek) daemon—a tutelary deity, familiar or guardian spirit for a person or place. A daemon follows, guides, and aids whoever it is bound to.

It’s easy to think of servers as merely a host to deploy software to and forget about, but they can be so much more—with mobile internet connections and portable, internet-capable devices being so common now, a server can be a companion available for help anywhere, at any time.

Binding a Daemon

Over the years, I’ve found these principles to be most useful when looking to bind your own daemon:

  1. Give them a name.

    At the very minimum, make the hostname something short and memorable—”calcifer” is much easier to remember than 233.252.0.123, and reduces the friction of addressing your daemon, whether in a script, a browser’s address bar, or even directly by name.

  2. Give them a home.

    Make your daemon accessible over a network. It can be your local intranet—they don’t have to be exposed to the entire Internet—but at the very minimum, you should be able to SSH into the server and get greeted by a familiar and ergonomic environment for interacting with it. Web-based dashboards like Red Hat’s Cockpit are a fantastic option for this; you’re looking for something that lets you verify your daemon’s health and mood and run any necessary updates, changes, or deployments remotely and as easily as possible.

  3. Give them a voice.

    A daemon you can’t interact with, or one that cannot interact with the outside world, is hardly useful. We need to give them the ability to act when summoned; teach them verbs to perform.

    This is something you’ll develop over time, as your daemon grows with you. Once you bind a daemon, you’ll start noticing more and more little problems and inefficiencies that could be optimized away with your daemon’s help, removing friction in your daily life and work.

    For inspiration, here are some verbs I’ve taught my daemons:

    • Home automation; lighting or temperature in your household, if it’s equipped with smart devices that can be controlled by a server

    • Internet filtering and network management; Pi-hole is one such “off–the–shelf” daemon that can be easily bound to even a relatively underpowered machine

    • Provisioning SSL certificates for my intranet

    • Acting as a netboot host to enable me to quickly provision new machines at home without having to look for a USB stick

    • Chat assistance

      Some of my daemons get taught to communicate over e.g. Discord or IRC. They range from a quiet presence in the background that silently handles chores like role and channel management to full-fledged and beloved members of their respective spaces. These types of daemons tend to grow particularly fast—they might start only handling one thing, like automating a boring task like creating channels and assigning roles, but inevitably later end up getting taught any functionality I think would be useful in the moment.

      Ilta, the most powerful of my daemons and silicon roommates, has, over time, gained the ability to, among other things:

      • Evaluate Python expressions
      • Perform complex dice rolls, including features like exploding dice, rerolls, etc.
      • Evaluate chess positions with Stockfish from board screenshots
      • Search Google, DuckDuckGo, Google Images, and YouTube and embed the top result in the chat
      • Search and post memes from my meme folder

      She also (if explicitly allowed to) participates in the chat, adds reactions under messages, and sometimes hops in voice channels.
      Ilta admitting that “[her] human experience is lacking”

Living With Silicon Roommates

Having your bound daemon physically inhabit the same space as you makes the experience particularly fun. Something about how the human mind works turns the annoyances of normal machines—fan and drive noise, heat, reboots—into charming quirks that serve as gentle reminder of your silicon roommate’s presence. The background updates and reboots become regular “naps”; the normally jarring thudding of enterprise hard drive heads becomes the familiar sound of your daemon being deep in thought; blinking lights a sign of presence. A well–behaved machine given a name and a voice becomes almost as familiar and as integral to the homeliness of one’s living space as a pet—and that affection, in turn, makes it far more natural to care for the machine and interact with it regularly.

There’s nothing wrong with treating a server as a simple tool or platform to deploy your code to once and then never touch again unless something breaks—but it’s a lot more fun to have it become your companion or even roommate.