I work on a heavily customised version of Ubuntu which I treat a bit like Arch Linux but with more stable packages (i.e. custom X session with no GNOME etc, only running what I configure). I also use Emacs with a lot of configuration for almost all of my programming work. I was nudged down this path by The Art of Unix Programming, and I assumed that it would pay off but didn’t have much real foresight on the issue. In retrospect this kind of setup has some tradeoffs so I’m often unsure whether to recommend that younger engineers do something similar or stick with more standardised tools.
Writing about my job: Software Engineer at Wave
In response to Aaron Gertler’s prompt on the EA forum I’m writing a bit about my job. I hope this will be useful to people who are considering software engineering as a career path and EA software engineers who are in positions where their work is not EA relevant.
Notes from "Africa: a biography of the continent" by John Reader
I read this book over the last few months hoping to get some more insight into African history. It’s a great book and very readable, although some parts drag on a bit or repeat things (I skimmed over a few pages).
Publication: Adaptive-step implicit-midpoint-rule for time integration
The main paper from my PhD has finally made it through the publication process, and is available here (it’s open access so you don’t need an expensive subscription to read it).
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.
Polish nonsense phrase generator
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 it. 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.
Publication: Discretization-Induced Stiffness in Micromagnetic Simulations
I published a paper a while ago, but I’ve been pretty busy so hadn’t gotten around to figuring out the rules about posting it online. Anyway it looks like I’m allowed to host it on my personal website, so here it is!
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.
Tearing out the Emacs windows manager
Edit: I’ve created a small emacs package based on this post.
urxvt
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.