blog Sharing notes with the internet

Creating a High Quality GIF with Transparency

I spent quite a bit of time trying to figure out the process to create the gif at the top of my How BSD Authentication Works blog post, so I thought I'd share it. Here's how to create a small, high quality gif with transparency using a video and an image as source material. I'd wanted to combine the image of puffy (the blowfish) and the spinning gears to represent the OpenBSD internals.

Exploring OpenType Font Features

I just bought a new font to use as my primary face in Emacs. It's a cool one called MonoLisa, I think it looks great. It has a nice looking script variant that lets you turn your italics into a cursive looking font. Unfortunately it's a fancy OpenType feature that most things, including Emacs don't support properly yet. In their FAQ they mention that you can use a tool called OpenType Feature Freezer to modify the font so that the optional glyphs become the default.

How BSD Authentication Works

History The way OpenBSD authenticates users is quite different from other Unix-like operating systems. Most other systems like AIX, Solaris, Linux, the other BSDs, and MacOS, use a framework called Pluggable Authentication Module (PAM). The two main implementations are Linux PAM and OpenPAM. PAM modules are created as dynamically loaded shared objects, which communicate using a combination of common and implementation specific interfaces (Linux-PAM and OpenPAM). It's configured using the pam.

Reverse engineering a thermal printer's WiFi setup commands

Introduction I recently purchased a thermal receipt printer off of AliExpress for a project. It features both WiFi and USB connectivity which I thought was really cool for the price. To my dismay, I realized after purchasing that the drivers and configuration application only run on Windows. This wasn't a huge deal, as thermal printers generally use the somewhat kinda standardized command set called ESC/POS. Unfortunately while many of the formatting commands are shared between printers, the commands to setup the WiFi connection don't seem to be documented anywhere, and I suspect are device-specific.

An Improved Emacs Frame Title Format

I've often found that the default Emacs frame title is a little bizarre. emacs@host Seems a little useless at describing what's going on in the actual window in my opinion, and I believe the space could be put to much better use. Perhaps it's designed for environments where X11 forwarding is common practice, or where GNU Emacs shares a system with XEmacs. Taking inspiration from both Emacs and Firefox, I came up with a frame title format that I think is much more useful.

How to get all Emacs daemon buffers from a shell script

A while back I posted a response to someone's question on reddit about how to get a list of all Emacs daemon buffers from a shell script. It was a pretty interesting problem so I thought I'd explain my answer here. The question was "Is it there a way to export the list of opened buffers to STDOUT?". In the comments I left a rather byzantine looking snippet of code that I'd managed to produce.

Versioning FreeCAD files with git

I've been working a lot with FreeCAD since I got my 3D printer. It's been a mostly excellent experience, but I've run a couple issues. Between the MacOS and Linux version of FreeCAD (both 0.19, maybe different builds?), and transferring files between machines using Nextcloud, a project that I'd been working on for a couple days became broken to the point where I could no longer modify the sketches, rendering it useless.

Aligning columns in Emacs

I've been writing a lot of GraphQL resolvers in ruby at work recently, and frequently run into a situation where I have to align many columns of text by hand. I figured this isn't a very unique problem, and that there was probably already some code within Emacs to handle it. As it turns out I was correct in my assumption. There's an excellent built-in package called align that takes care of just that.

Creating an Always On E-Ink Org Agenda

I recently made a post about how I was able to configure the new tab page in my browser to display my org agenda. Since then I've been working on another project similar to that, trying to take the concept even further. A while ago I purchased an Inkplate 6 during its crowd funding stage on Crowd Supply, with the exact intention of creating something like this. At the core of the Inkplate 6 is the ESP32.

Org Agenda As My New Tab Page

I absolutely love org mode. I use it extensively almost every day to keep track of tasks and due dates, both for my personal life and at work. A lot of this workflow centres around the org agenda, which compiles all the current and upcoming tasks and due dates from several files into a single view. The only gripe I had with it was that I had to be within Emacs to use it.