=============
== sub-pop ==
=============

Terminal Benchmarking

As the number of “GPU-accelerated” terminal emulators continues to grow, I decided to download a few and run them through a benchmarking utility. Don’t take these results to seriously; I spent a minute searching the web for a terminal benchmarking utility and loaded the first one I found. The terminal emulators I tried are: Terminal.app iTerm2 Kitty Alacritty Tabby Hyper Visual Studio Code When you run termbench in a terminal emulator, it writes a ton of characters to the terminal and measures the response rates. Read more...

Freebsd Wake on Lan

I could not find clear documentation anywhere on the Internet on how exactly to enable wake-on-lan capabilities on a system76 meer1 running FreeBSD, so here goes: sysctl dev.em.0.wake=1 To make this change permanent across reboots: echo 'dev.em.0.wake=1' >> /etc/sysctl.conf

Everpix Archiver

A very long time ago, I was a customer of a startup known as Everpix. They had a vision to solve the “photo mess” problem of the time: before cloud storage was readily available, everybody had photos in local libraries. Everpix provided a service that stored all your photos in a single web-based library and provided intelligent sorting and organization. Sadly, they closed down after a couple of years. In retrospect, they were about 10 years ahead of their time. Read more...

Go 'pkg' antipattern

I’ve written previously about organizing Go project files. I have observed a trend in Go package organization that strikes me as a clear anti-pattern to project organization. Working under the assertion that Go packages should be useful when imported by themselves, the usage of a ‘pkg’ directory is a clear anti-pattern. Remember the top-level of a Go project is the root of your API. If you want your package to be imported with a path such as “github. Read more...

Modernizing Sound Juicer, Part 1

I have long been interested in modernizing a venerable open source project. While some may argue that ripping CDs is no longer relevant, I personally do still purchase some music on CD, and want to listen to them in digital formats. Sound Juicer is an old piece of software. Its first commit dates back over 20 years. commit 36ff0dc5f60f5d69ba2b4f6179f5f129945e6f53 Author: Ross Burton <rburton@src.gnome.org> Date: Sun Mar 30 20:28:32 2003 +0000 Initial revision It began as a GTK2 application, and in 2010, was ported to GTK3. Read more...

Gloves

People often ask why I wear gloves at the keyboard. It’s not because I’m too cheap to turn up the heat. A long time ago, I used to work in a giant, climate-controlled office building that permanently maintained a temperature of 72°. Because these buildings basically had permanent air-conditioning blowing into the office space, I found that my hands, and specifically my fingers, would get stiff and achy. The stiffer my fingers and hands became, the more difficult I found it to type. Read more...

Go package organization

There are numerous blog posts and articles on the topic of how to organize Go projects, but nearly all of them have missed the point: Go is already telling you how to organize your project. Go doesn’t want you to organize your source code files by any sort of taxonomy; it wants you to organize your source code files by usefulness. Let’s start with some things you already know. Within a Go project, all your code lives under the top-level module path. Read more...

devbox

As part of my development workflow, I have found disposable, reproducible virtual machines indispensable. Over time, I have slowly developed a set of scripts and commands to create and destroy virtual machines. This time, those scripts and tools finally coalesced to something that can be packaged and released as a bit of developer software. devbox is a simple Makefile that generates disk images and libvirt domains. It is little more than a set of carefully crafted virt-builder and virt-install commands. Read more...

Connecting to the IRCCloud bouncer using Polari (or any Telepathy-based client)

telepathy irc mission control mc-tool polari bnc bouncer
Polari is my preferred IRC client. Its dead-simple interface makes it the perfect choice for a client to avoid all the embedded images and animations that riddle chat platforms these days. IRCCloud is a excellent service that modernizes IRC with some features that are nice to have in an IRC client (persistent connections, message history). On top of that IRCCloud offers a bouncer to which other clients can connect. Getting Polari connected to the IRCCloud bouncer isn’t straightforward however. Read more...

Egregious Python Type Violations

requests.exceptions.ConnectionError inherits from requests.exceptions.RequestException, which in turn inherits from IOError which in turn inherits from EnvironmentError. EnvironmentError is described as containing a 2-tuple value: on element 0, errno and on element 1, strerror (presumably a string description of the error). For example: try: f = open("/foo") except IOError as e: print("errno: %s" % e.errno) print("strerror: %s" % e.strerror) However, requests seems to take this concept of the 2-tuple errno/strerror pair to the extreme. Read more...
1 of 3 Next Page