Letterbox is a simple Go program that accepts SMTP connections and delivers mail to a per-user maildir directory. I use it to gather reports from various services on my LAN without needing to setup postfix or some other more complex MTA. Usage of letterbox: -config string Path to configutation file (default "letterbox.toml") -host string Host IP or name to bind to -maildirs string Path to the top level of the user Maildirs (default "/var/spool/maildirs") -port int Port to bind to (default 25) The configuration file is written using TOML.
I went for a hike the other day and managed to capture some decent photos of a dragonfly.
I was expecting to spend the whole afternoon getting a tftp server setup so I could PXE boot some qemu virtual machines for testing. I wanted to make sure it didn’t interfere with anything else on the LAN so it would have to be limited to the user mode network I use with my vms. Typically when I try to do something like this I end up trying a bunch of different things that don’t quite work right.
Testing out the gallery from here. It is pretty simple to setup once you realize that it is using page bundles.
mpd-status is a simple Go program that queries the music player daemon and prints out the status for use with tmux. You need to have Go installed, clone the repo and run go build to create the binary. By default the output is the status (using unicode play/pause/stop characters), the artist name, and song title. Pass --volume to include the volume level from 0-100%, and --elapsed to output the elapsed time and duration, like 2m40s/3m43s.
In 2010 I wrote about a simple method for migrating schema with Python. Here’s the same kind of thing, but this time using Go. I’m using the SQLx extensions for database/sql and PostgreSQL as my database. The only requirement is an extra table named schema with a single version in it. This tracks which version of the schema update has been applied. This table is created in the first schema update below.
One drawback to using a static site is that when you make changes to things that are shared between pages all those pages have to be updated. And since I’m also GPG signing the pages one change can end up touching a couple hundred pages. With the move to Hugo I’ve also been updating things more often that I normally do. I had forgotten about the CloudFront limit on invalidation requests (first 1000 a month are free.
This blog has been running on Pelican since 2011. I’ve been pretty happy with it, even contributing AsciiDoc support upstream. But lately I’ve been feeling like it’s time for a change. I’d heard good things about Hugo from friends, and even though my first attempts with it were frustrating (thanks to their docs pointing to content/posts/ instead of content/post/) I decided to give it another try after my attempts to add a Mastodon social icon to the mg theme for Pelican failed.
Back in 2013 I wrote about using socat with Tor to setup a Hidden Service chat. It was pretty simple to setup and I wanted to see how much harder it would be to do with Whonix, since the Gateway handles Tor and the Workstation should run socat. Ends up it isn’t hard at all. On the Gateway you need to edit /usr/local/etc/torrc.d/50_user.conf (as root) and add a Hidden Service to it:
Whonix has released version 184.108.40.206.6 of their XFCE KVM build. Whonix is a Debian based operating system that routes all network traffic through the Tor network. It is included as part of Qubes OS or you can run disk images using your favorite virtualization solution. Their KVM release includes xml files for importing into libvirt, but sometimes that’s a bit too heavy of a solution and you want something simple where you don’t need to be root to set it up or run it.