Public Org Documentation

Table of Contents

Welcome to my public org documentation. This is a document, generated from Org Mode, that documents publicly all the various things I’ve learned about running my own software stack, self hosting as many things as I can, and generally being a thoughtful user of the internet.

The impetus for all these services was to divest myself of as much corporate internet infrastructure as possible. This means services like Github, Slack, Spotify, Google and Facebook/Twitter had to go. I’ve made a number of runs at this in the past, but it’s never felt so possible to go it alone as it does right now. A big part of that is the availability of open source projects that fill in all the gaps that used to really stand out when ripping out corporate software from my life.

Hosting

Traefik

Docker

Chat

The Lounge (IRC)

Ripcord (Slack, Discord)

Music

Mopidy

  • Overview

    I use a custom-built docker container to run a personal instance of Mopidy behind Traefik with a custom subdomain. While I’ve thought about a direct connection out of the container to the host it’s running on for music, right now I just have any tracks played piped through an Icecast stream for listening.

    The result is actually pretty neat. I can pop up a stream wherever I happen to be and it’s kind of like a low-rent Sonos system.

    Mopidy is hooked up to my personal music collection (which isn’t very comprehensive), Spotify, and Soundcloud. I’m a little disappointed that I still use Spotify, but it’s the least evil way I can find to enjoy new music. I do wish there was a way to more easily compensate musicians I listen to most directly. But this will suffice.

  • Resources

Media

Plex

Editing

Emacs

I made the full time switch to Emacs back in 2016 after being a stalwart vim + terminal developer since probably 1996 when I first figure out how to actually quit out of vim. That’s a long time to use vim, and not much time to use Emacs.

Naturally, I picked an evil-mode configuration of Emacs when I made the jump. At first I played with Spacemacs but found it’s default installation method of re-checking all packages on start exhausting. I need my editor to start in less than 1 second on a reasonable machine. Spacemacs couldn’t deliver.

The real nail in the coffin, however, was when I was doing a screenshare with a fellow developer and Spacemacs pulled a spinning beachball and just froze on me. That was inexcusable. Trying to reason about which layer did it proved fruitless and I left on a quixotic adventure to find a new pre-configured version of evil-mode Emacs that might suit my fancy.

Thankfully I landed on Doom Emacs back in 2017 and there was no going back. Henck has done a fantastic job balancing customization with stock Emacs such that commands that need not be over-ridden are not. This is not the transformation of Emacs into a vim machine. It is a vim-like layer over traditional Emacs. Thus, I still use M-x an awful lot. And I’m often falling back to default Emacs keystrokes to do simple things.

Vim

For vim, I keep as much to vanilla vim as possible. There was a great lecture a while back by Max Cantor [1] about doing 90% of what is usually done with plugins in vim with vanilla vim. Given that I use a hulking beast of an editor in Emacs for most of my editing work, it stands to reason that when I do open vim, I expect it to do so quickly.

Thus, I don’t use plugins at all. My vimrc file is really straightforward [2] and when I need to search for files, I exit vim, fire up ranger and go to town.

This also means that when I’m on a server I haven’t been on before I know exactly what I’m getting when I open vim.

[1] https://invidio.us/watch?v=XA2WjJbmmoM

Search

Searx

I remember dogpile. The Great Midwest Trivia contest encouraged you to cull answers from all around the internet. A single search engine would not do.

Searx is the modern dogpile, a search engine aggregator that pulls in results from all over the place. It also, thankfully, obfuscates your searches to sites that like to track you. So Google, Yahoo and Bing are still accessible, but hidden behind API calls that can’t tailor their response to your search history.

What I lose in result filtering, I gain in transparency over what’s on the internet and knowing that the search engines are not tailoring their response for what the they think I want. Let me figure out what I think. Let the search engine show me what it found.

Git

Gitea

Email

Mailinabox (Hosting)

  • Overview

    I had wanted to host my own email for a while. Google is more and more evil everyday, and the thought of depending on them for communication makes me throw up in my mouth a little bit. But running your own email server is horrible. Postfix is one of the least obvious pieces of software I’ve ever tried to configure, and the ability to foot-shoot yourself is tremendously high.

    Add on to that spam, bouncing, blacklisting and evertyhing else and there had to be a better way.

    Enter, https://mailinabox.email

    This software stack is great. With a $5 Digital Ocean VPS I have a secure, upgradeable and performant personal email server. It has a nice admin interface so I can easily add new email addresses or domains. Best yet, it uses a DNS glue configuration to allow me to use my MiB machine as a personal DNS service (see Traefik above) that updates super fast.

Notmuch (Indexing)

iSync + mSMTP (Receiving + Sending)

Social media

TODO Mastodon

Tusky

Browsing

Qutebrowser

Firefox

I pretty much never use Firefox these days. It tends to suck up resources and cause lower battery life when I’m not wired.

One unique use case is Zoom meetings. Qutebrowser does not open Zoom links properly, and it doesn’t integrate with GCal. So I still use Firefox for Zoom meetings. But otherwise, Qutebrowser has replaced it for now.

I may go back in the future.

Calendar

Org mode

Nextcloud (via MiB)