Typical Technological Trickery

Linux programming tricks

Tracing macros in Emacs

I’ve been playing around in common lisp lately, and one feature I particularly like is the trace macro. trace is a macro which lets you easily log the arguments and result of all calls to a function. It’s particularly handy for visualising recursive function calls.

Debugging a slow system shutdown

I’ve read some interesting debugging stories recently, so here’s one of mine. Hopefully it might help others who have similar issues.

A one-line X11 keylogger

It’s an old adage that you can’t secure a computer against people with physical access to. I was interested in this idea, so I was exploring what could be done with only keyboard and mouse access to a typical Ubuntu machine (i.e. without being able to plug in usb devices or pull out hard drives) when I came across the xinput test command. I’m sure this is old hat to anyone with a real interest in security, and I’m sure there are plenty of ways to counter it; but I think it’s interesting anyway.

Reading from stdin to an emacs buffer

Sometimes the way emacs utterly ignores standard unix conventions can be pretty annoying. In particular the fact that, unlike almost every other standard unix tool, you can’t give it - instead of a filename and have it read from stdin has always annoyed me (yes, I know emacs came from lisp machines not unix, but it’s been used on unix machines since before I was born). So today I’ve final sat down and figured out how to hack around this limitation.

Using foot pedals for modifier keys in Linux

Update 2016-07-23: Updated the format of the udev rules for recent Linux distributions (in Ubuntu since at least 16.04, possibly earlier), thanks to an anonymous reader for the tip!

jshint and emacs' compile command

jshint is a helpful static code checker for finding potentially problematic code in javascript. This post explains how to run jshint from emacs and easily jump to the errors using emacs’ compile command. The setup required is not especially complex but could be mildly tricky to figure out for people new to emacs.


urxvt is a lightweight, platform independent unicode-compatible terminal emulator. This is probably the least interesting of the various tools I’ve set up for programming so I thought I’d do it first.