lambda.cx blog Sharing notes with the internet

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.

How I Keep Track of My Servers

I manage a lot of servers. Some are serving static content like this blog, with others running services like Nextcloud, ZNC, Shadowsocks, or Mumble. I also have one or two game servers to play with my family and friends. These are spread across two providers for cost and geographic reasons. In addition, I have several machines running in my house, one running FreeNAS with some jails, another running Proxmox with several VMs and containers.

My Emacs on Android Setup

Not too long ago I purchased a Samsung Galaxy Tab A. I bought it mostly for browsing the internet and reading PDFs, but I've been using it a lot more for working in Emacs recently. With the help of Termux, I've gotten more or less a fully functional development and writing environment which has both a small physical size, and long battery life. With the use of a bluetooth keyboard, I have everything required to work, and comfortably at that.

Installing Hak5's Cloud C2 on Alpine Linux

I recently purchased some products from Hak5, some of which integrate with their self-hosted service for monitoring your equipment called the Cloud C2. I decided to run it on one of my servers which runs one of my favourite Linux distributions, Alpine Linux. You have the option to purchase the community edition for free from their shop, after which you'll receive a product registration code via email. This email will also contain a link to download the Cloud C2 software, which are distributed as (mostly) statically linked go binaries for several platforms all bundled together in a zip folder.