A Super Simple Todo Package For Emacs

(June 17, 2024)

I’m a really good procrastinator. I can walk past the stereo’s dangling speaker cables for years and tell myself each and every time “I should fix those” and then not think about it until the next time I walk past the stereo. Which is half an hour later. As an experiment this year, I thought … Continue reading A Super Simple Todo Package For Emacs

Using Emacs to Monitor Dbus

(June 4, 2024)

Sure, sure, I make problems for myself by insisting on having things “just right”… for me. This blog post is about trying to fix those self made problems. OK, thing the first: See that “Turn on power saver mode when battery power is low” thing? Yes, indeed, it’s an on/off toggle: You’re not allowed to … Continue reading Using Emacs to Monitor Dbus

No Gnus T-Shirt Lottery Done

(March 1, 2024)

The shirts are all packed! And on time! Sort of! My methodology here was M-x gnus-summary-sort-by-random (nice that somebody had added that), and then I went down from the top. If somebody had made a request that I couldn’t fill (for instance, if I was out of XL when I got down to them), I … Continue reading No Gnus T-Shirt Lottery Done

Can you spot the date I said “I’m done”?

(February 22, 2024)

Anyhoo… the reason I checked was because I was cleaning up my closet, which I’m told you have to do five times a century, whether it needs it or not. I got about er 11? of these refuse sacs (a lot of yellowed white t-shirts, and why did I have 20 bed sets? dating back … Continue reading Can you spot the date I said “I’m done”?


(September 20, 2022)

Hi! It feels like I did one of these posts just the other day, but it was a month ago? Time sure does fly… Since there’s a round number in the title of this blog post, perhaps I should natter on a bit more than usual? Sure! If you insist! So: This is part of … Continue reading 20×10%

Let’s Party Like It’s 1999

(September 6, 2022)

1999 open Emacs bugs, that is: Made it past that magical 2K roadblock, so according to my education in financial analytics, there are no technical barriers until we reach 500.


(August 19, 2022)

I haven’t really been doing my bug patrol thing this cycle, so I’m kinda surprised that I’m doing a blog post now. But the numbers speak for themselves: target achieved. So this has been virtually exclusively daily new bug reports and patches merged. Oh, hi — for new readers, this is where I natter on … Continue reading 19×10%


(July 2, 2022)

Well, that was fast — less than a month. But of course, each one of these er sprints are shorter than the previous one. This time we started at 2140 open bugs, and we’re now down to 2022 open bugs, which is a reduction of… Oh, that’s too much math for me. So the next … Continue reading 18×10%


(June 8, 2022)

Whaa… it was less than a month ago I did one of these last time? Down to 2141 from 2260. Er… what to talk about this time… Uhm… (Oh, for new readers, this is a blog post series where I look at Emacs development through the lens of doing bug triage and fixing and closing … Continue reading 17×10%


(May 12, 2022)

A special quick edition of my “%” Emacs development blog series: We now have some magic numbers!!!1! Today, we dipped below 2219, which is a magical number, because: The most open bugs we had was 4437, and (/ 4437.0 2) => 2218.5. 50% down from the top! Let the celebrations start! Carnivals in the streets! … Continue reading 50%


(May 9, 2022)

Whaa… it’s been less than a month since the last of these posts (wherein I give a report from my gamified Emacs bug tracker spelunking). I’ve been using various ways to select bug reports to handle since I started on this back in… 2019? Yes. I started, of course, with reports about things that I … Continue reading 16×10%

More vtable fun

(April 13, 2022)

I was inspired by a bug report on tabulated-list-mode to do more work on vtable. (Funny how that works.) As you probably won’t remember, vtable is a new library in Emacs 29 that aims at being a replacement for tabulated-list-mode, but with a much easier interface. For instance, the following is a toy replacement for … Continue reading More vtable fun


(April 13, 2022)

Time for another one of these posts about Emacs development, I guess? It’s been two months since the last one, and I’ve basically been slacking off, mostly dealing with new bug reports instead of going dumpster diving. I mean, bug triage. We started at 2460 open bugs in this stretch, and we’re now at 2402, … Continue reading 15×10%


(February 13, 2022)

What? Already? It seems like I was doing a posting like this just the other week… How time flies — it was three weeks ago. But this was a speedy stretch, and we actually decreased the numbers of open bugs, from 2590 to 2466, which, if my mathematics knowledge is correct, is … more than … Continue reading 14×10%


(January 20, 2022)

Lucky for some. So that’s another 10% of the bugs in the Emacs bug tracker closed, so let’s natter on a bit. So the most striking thing here is, of course, that we started with 2550 open bugs, and we’re now at… 2605. That’s not much of a reduction! Yeah yeah. This stretch took two … Continue reading 13×10%

The Most Controversial Change In Emacs History

(November 24, 2021)

Just a scant handful of decades after XEmacs introduced a mode line with proportional fonts, we’re thinking about doing the same in Emacs. Here’s how the mode line looks (by default) in Emacs 28: Here’s how we’re considering having it look (by default) in Emacs 29: See? Huge difference. Huge. The attractive thing about this … Continue reading The Most Controversial Change In Emacs History


(November 12, 2021)

It’s that time of the er year where I natter on about Emacs development under the guise of talking about the number of open bugs in the Emacs bug tracker. This stretch started on September 21st, with 2586 open bugs and ended today, with 2551 open bugs. Clearly a reduction of 10% as usual, as … Continue reading 12×10%

Finally! Videos in eww

(November 9, 2021)

It’s the one feature the world has been waiting for. Emacs has had support for xwidgets for years (i.e., being able to embed a webkit thingamabob inside Emacs), but it’s been a bit lacking in integration with the rest of Emacs. Over the last few months, Po Lu has brushed up the code considerably, so … Continue reading Finally! Videos in eww

Copying Media to Emacs

(November 8, 2021)

Emacs isn’t really a tool for creating WYSIWYG documents, so the editing support for anything other than plain text (and code) is pretty basic. As I noted a few years back, Emacs has the primitives needed to interact with non-text clipboard types, so adding code to (say) allow choosing “Copy Image” in a browser and … Continue reading Copying Media to Emacs

A More Readable ‘C-h b’

(November 6, 2021)

It’s annoyed me for, well, decades that one of the (potentially) most useful ways to query Emacs about “well, what commands are available in this mode anyway?”, ‘C-h b’, is less than perfect. So I’ve tweaked it. Tada! Hitting ‘C-h b’ emacs-28 looks like this (by default): But once you scroll past the 700 key … Continue reading A More Readable ‘C-h b’

Emacs & Emojis: A ❤️ Story

(October 28, 2021)

Emacs grew support for displaying colour emojis recently (and this is included in the release branch, which will become Emacs 28.1 in some months). This includes support for the grapheme cluster emojis (that consist of a number of Unicode code points, joined together with zero-width joiners and magic). So finally Emacs can display all of … Continue reading Emacs & Emojis: A ❤️ Story


(September 21, 2021)

It’s that time of the month where I give a report on how my possibly Quixotic mission to get the Emacs bug tracker down to a managable size is going, because: This stretch stated August 15th, and had a target of 269 bugs, and that’s what I just reached. But did the bug tracker shrink … Continue reading 11×10%


(August 14, 2021)

Hey, that took only a month, which means that it’s time, once again, to display some Emacs charts. And since this is the tenth post in this series, I thought I’d natter on even more than usual. And perhaps some more about… having some vague goals as being the Emacs co-maintainer? OK, let’s see how … Continue reading 10×10%


(July 13, 2021)

Well, that didn’t take that long? Hm… Oh, I started this stretch on 2021-05-27, so it’s a month and a half? But at least the number of bugs actually decreased this cycle: Yes, you guessed it — it’s time for another one of these posts about Emacs bugs where I’m totally boasting while pretending that … Continue reading 9×10%


(May 26, 2021)

Status update on my Emacs Bug Chasing Project: It’s been three month since the last post in this series, and that’s because… I took a few months off. I had meant to take a vacation lasting just a couple of weeks, but I have a very one track mind: Either I’m doing This Thing, or … Continue reading 8×10%

Command Discovery In Emacs

(February 16, 2021)

One thing that has annoyed me forever about Emacs is that when you define a command for a specific more, the commands become so… global. I mean, you define a command in, say, eww-mode for navigating to the next link, and that command only works in that mode. But then you type `M-x ewwTAB’ to … Continue reading Command Discovery In Emacs


(February 8, 2021)

In the previous blog post in the series “Lars Humblebrags A Lot” in late December, I claimed I was going to take a break from Emacs bug spelunking… … and as you can see, I did. For a couple of weeks, and then they pull me back in! This time around I got the brilliant … Continue reading 7×10%

The Only M1 Benchmark That Matters

(January 13, 2021)

I’ve got a new Apple laptop, so I thought I’d do an Emacs build benchmark. Building Emacs is what people do on computers, right? At least if I extrapolate from myself, which is the only natural thing to do. It’s called proof by induction. Look it up, nerds. So here’s the benchmarks: My Main Build … Continue reading The Only M1 Benchmark That Matters


(December 28, 2020)

Look! We cracked the 3K line! I’ve been tricking myself into working by gamifying Emacs bug handling, but this 10%-er was kinda a slog. Even if it was just 311 bugs this time around. I’ve been doing mostly newer bugs, and they’re often more work than geriatric bugs — many of the older bugs are … Continue reading 6×10%

Building the Development Version of Emacs on Windows (mingw edition)

(December 24, 2020)

Some days ago, I gave a brief write-up on how to build the development version of Emacs on Windows under Cygwin. Cygwin is all well and nice, but some prefer the fully native mingw-w64 version, so here’s the howto for that. The first four steps are identical with the previous recipe, so let’s just skip … Continue reading Building the Development Version of Emacs on Windows (mingw edition)

Building the Development Version of Emacs on Macos (Macports Edition)

(December 18, 2020)

A while back, I wrote a how-to for building Emacs on Macos (for people who have no interest in using Macos), but I based that recipe on HomeBrew. There was recently a Macports-related bug report, so I set up a VM with Macports, and I thought I might as well write that up, too. It … Continue reading Building the Development Version of Emacs on Macos (Macports Edition)

How To Build the Development Version of Emacs on Windows

(December 18, 2020)

I think I’ve probably spent… more than an hour? but less than three hours? My entire life? on a Windows machine, so I’m the most qualified person ever to explain how to get started developing Emacs on Windows. Because people who’ve used Windows before don’t really know what other people don’t know. It’s about the … Continue reading How To Build the Development Version of Emacs on Windows

A Panel from a Comic Strip Presented Without Comment

(November 15, 2020)


(October 26, 2020)

Hey! Target reached: Bragging time! I mean, this is the irregular Emacs update … stats … report… thing… So, I’m gamifying Emacs development by setting myself a goal of closing (i.e., fixing, triaging, etc) 10% of the Emacs bugs, and since the trend is downwards: That’s fewer bugs each time. (But harder bugs, so it … Continue reading 5×10%

You Can Read Twitter With Gnus

(September 19, 2020)

Remember just the other week when I almost got Gnus to read Twitter? But not quite? No? Anyway, it was a whole thing. The use case was pretty simple: Just read a single Twitter thread sensibly, without the endless clickery. But it *sniff* didn’t work for bigger threads. But now Johann Klähn fixed it! By … Continue reading You Can Read Twitter With Gnus


(September 11, 2020)

Time for another bragging post! I’ve been gamifying triaging/fixing Emacs bugs, setting myself as a goal 10% of the total (which hopefully decreases each time, otherwise it’s no fun): And today! The fourth lap completed! Just a bit over a month. When going after bugs, I find it useful to concentrate on some “seam” or … Continue reading 4×10%

You Still Can’t Read Twitter With Gnus

(August 31, 2020)

I accidentally ingested some caffeine last night, so I went to bed at two and fell asleep six-ish. That gave me a lot of time to think about the important things in life, so I thought about how fun it would be if you could read Twitter threads with Gnus. “But why; for the love … Continue reading You Still Can’t Read Twitter With Gnus

Building the Development Version of Emacs on NetBSD

(August 25, 2020)

I hadn’t really planned on installing a NetBSD VM (after doing all the other two BSDs), but then a NetBSD-related Emacs bug report arrived. The first it… years? So here I am! Actually finding the correct .iso to install took days, but with the help of some friends I finally found the right set! Go … Continue reading Building the Development Version of Emacs on NetBSD

Building the Development Version of Emacs on OpenBSD

(August 16, 2020)

And now, the continuing stoooory of a quack who’s gone to the dogs, I mean, a recipe for how to build the development version of Emacs as easily as possible under yet another operating system: This time it’s OpenBSD. (This recipe is for OpenBSD 6.7, but it should be the same on most modern versions … Continue reading Building the Development Version of Emacs on OpenBSD

Building the Development Version of Emacs on FreeBSD

(August 14, 2020)

Today in our series “How To Build Emacs For Fun And No Profit Whatsoever“, we’ve reached FreeBSD. Building Emacs here is very straightforward. First, as root, install the compilation dependencies like this: pkg update -f pkg install -y autoconf git gmake pkgconf texinfo pkg install -y `pkg rquery %dn emacs-devel` Then, as a non-root user, … Continue reading Building the Development Version of Emacs on FreeBSD


(August 4, 2020)

Last summer I went on an Emacs bug spelunking, and set as a goal for me to close (i.e., fix, prod people about, or determine if the bug reports were invalid, etc.) 10% of the open bugs. I did that twice (which isn’t the same as fixing 20% of the bugs, because the 10% gets … Continue reading 3×10%

Emacs on Macos for Linux Peeps

(August 2, 2020)

Looking at the Emacs bug tracker, there’s a bunch of Apple-specific Emacs bugs, and I thought it would be fun to take a look at some of the more trivial bugs. So I wondered what you’d have to do to build Emacs under Macos, and… I found a bunch of people talking about how easy … Continue reading Emacs on Macos for Linux Peeps

Emacs Screensaving Redux

(July 5, 2020)

Yesterday, I tweaked my toy Emacs screensaver to display images, and discovered that that was very slow indeed. Today I started actually benchmarking this stuff instead of just guessing what was taking all that time, and surprise, surprise, the problem wasn’t where I thought it was at all. Instead it was in the xelb library, … Continue reading Emacs Screensaving Redux

More Emacs Screensaver Fun

(July 4, 2020)

As I’m no doubt you all remember *cough* *cough* I hacked up an Emacs-based screensaver the other year because XScreenSaver twaddles the DPMS too much. (Yes really! I mean probably! I didn’t actually look at the source code.) My er solution used a transparent X frame to catch the mouse/keyboard so that it knew when … Continue reading More Emacs Screensaver Fun

SMTP Callouts

(January 13, 2020)

After doing several rounds of mop-ups after moving all the mailing lists from gmane.org to gmane-mx.org, I was wondering whether there were any way of checking whether a mailing list is dead for sure or not (mostly to see what percentage had been ported), and… of course there isn’t. But you can use SMTP callouts … Continue reading SMTP Callouts

Emacs Supremacy

(November 13, 2019)

I use Emacs to control the stereo, so 95% of the screen is Emacs: But I like to have a clock there too, so since I started this thing (in… 1997?) I’ve also had an xwatch in the corner. The other night I decided that this was completely and utterly untenable: So I thought “it … Continue reading Emacs Supremacy


(October 11, 2019)

Since this summer, I’ve er had some time on my hands, so I thought I’d work at fixing Emacs bugs. (Or closing stuff that’s no longer relevant.) And since working towards some goal is more fun, I decided that 10% of the Emacs bug tracker would be nice. There was about 4500 open bugs in … Continue reading 2×10%

Parsing Exif Data

(September 22, 2019)

Emacs is moving away from ImageMagick support, and is instead handling all the major image formats (PNG, JPEG, etc) natively. The reason for this is that the ImageMagick libraries have a pretty bad track record: Over the years, a large number of Emacs crashes have turned out to stem from ImageMagick crashing. While things have … Continue reading Parsing Exif Data

Setting up GPG for Emacs

(August 26, 2019)

I know, everybody hates GPG these days (and for good reasons), but I’ve been looking at the Emacs bug database and getting annoyed with all the SMIME etc bugs that aren’t getting fixed, and thought I should do something about it. I last used GPG in the nineties, and I’ve forgotten everything I possibly could … Continue reading Setting up GPG for Emacs

Technical Analysis

(August 6, 2019)

I thought I could use my prodigious financial know-how to do an analysis of Emacs Open Bugs chart. First of all, we have clearly defined positive trend channels reaching back to 2009, broken by a period of recession. But lately, this growth has been curbed and we’ve seen a clear development of a resistance line … Continue reading Technical Analysis

Your Emacs Statistics Service

(July 28, 2019)

I’ve been plugging away at the Emacs bug database the last month or so. I’m the kind of person who gets obsessed with something for a time and then I do something completely different the next month. So I’m away from Emacs developments for months on end (and this time it’s basically been a couple … Continue reading Your Emacs Statistics Service

Towards a Cleaner Emacs Build

(June 20, 2019)

I’m planning on getting back into Emacs development after being mostly absent for a couple of years. One thing that’s long annoyed me when tinkering with the Lisp bits of Emacs is the huge number of compilation warnings. The C parts of Emacs were fixed up at least a decade ago, but this is what … Continue reading Towards a Cleaner Emacs Build


(June 12, 2019)

New York Times, patch.


(June 5, 2019)

I’ve been messing around to see whether running a WordPress installation is fun or not (spoilers: it’s really not), and all of a sudden my test blog articles had turned a strange shade of non-UTF-8. For instance, some texts I had quoted used that strange apostrophe in “it’s”, and that had turned into “it’s”. Now, … Continue reading Ununicode

Working with X in Emacs

(March 5, 2019)

While tweaking the Emacs-based screensaver, it began to become clear that I just didn’t have access to a sufficient number of X events. In particular, I want to be able to wake the screen up by hitting the shift key, and I just could see any way to get at that event. So I asked … Continue reading Working with X in Emacs

A New Eval Server For Emacs

(February 19, 2019)

Emacs has a mechanism for client/server communication (and remote eval) that’s simultaneously too insecure and too secure at the same time. Here’s the extremely convenient way to start a server: (setq server-use-tcp t server-host (system-name) server-name (concat “foo-” (system-name))) (server-start) This will create a file (if called on a machine named “stories”) called ~/.emacs.d/server/foo-stories with … Continue reading A New Eval Server For Emacs

Cropping Images in Emacs

(November 12, 2018)

I woke up in the middle of the night and started thinking about cropping images in Emacs, as one does. I started wondering how Emacs processed mouse events, and that turns out to be very easy: You just use `read-event’ inside a `track-mouse’ form, and you get all the events and coordinates, offset from the … Continue reading Cropping Images in Emacs

Variable Pitch Tables

(October 10, 2018)

While using the Emacs WordPress interface on various screens here, it became clear that the sloppy way I was laying out various tables just didn’t really work. I was using the `variable-pitch’ font and sort of eyeballing how much space each column would take and then using `display ‘(space :align-to 100))’ to line stuff up. … Continue reading Variable Pitch Tables

Further Fun With the Clipboard

(October 7, 2018)

In the previous episode of this blog, I mused about how Emacs should perhaps handle non-text yanking (i.e., HTML and images). I didn’t really want to write a mode to examine the clipboard and the selections, but I did anyway just now, and I discovered something kinda interesting. Well I never! Anyway, this is basically … Continue reading Further Fun With the Clipboard

The Mysteries of the Selection

(October 6, 2018)

After writing the package to edit WordPress articles in Emacs, I started thinking about doing something about non-text X selections in Emacs. Emacs has all the required low-level support it needs to be able to yank HTML and images into Emacs, but nobody’s mainstreamed more high-level support into Emacs. Mostly because nobody really knew what … Continue reading The Mysteries of the Selection

Editing WordPress Articles in Emacs

(October 2, 2018)

I’ve got my blog on WordPress.com, which has some positive aspects (I don’t have to run it) and some negative (I can’t control it fully). But whether I’m running WordPress myself or not, there’s one thing that’s always true: I loathe the browser-based editor. When composing blog articles, I’ve been using the post-by-mail interface that … Continue reading Editing WordPress Articles in Emacs

Z-Wave and Emacs

(September 16, 2018)

I’ve had a 433-MHz-based “home automation” system (i.e., light switches) for quite some time. It works kinda OK. That is, I’m able to switch the lights on and off, which is the main point. But, man, the range of 433MHz devices sucks, including all Telldus models. I’ve been able to overcome the problems by having … Continue reading Z-Wave and Emacs

Nails and Hammers

(September 9, 2018)

You know that old saying about gravitating to your favourite tool? Well, my go-to thing for compositing text on top of images (and stuff) was LaTeX, and I’ve been doing that for decades. What I’m mostly using this stuff for these days is the extremely important task of displaying weather data on small, cheap USB-powered … Continue reading Nails and Hammers

IMDB in Emacs; or, Honey, I Made an ORM

(August 28, 2018)

I’ve always been frustrated by the IMDB web pages. Usually when I’m looking at a director’s oeuvre, I’m not interested in all the shorts, videos and games the director has created, but just want a list of the movies. When I’m looking at a specific movie, it’s often because I want to know who the … Continue reading IMDB in Emacs; or, Honey, I Made an ORM

Innovations in Emacs Touch Interfacing

(August 7, 2018)

I’ve long attempted to hack some touch interfaces for laptops in non-keyboard configurations. The sad thing is that there aren’t really any good solutions in GNU/Linux. If you want to be able to respond to more complex events like “two finger drag”, you have to hack GTK and use Touchégg, and then it turns out … Continue reading Innovations in Emacs Touch Interfacing

Flashair, Emacs and Me

(March 23, 2018)

My blogging methodology is that I 1) open an Emacs Message buffer, write stuff, and then 2) take pictures of stuff (mostly comics), wanting to have those images appear right where I’m typing. This is a solved issued with Flashair, PyFlashAero and watch-directory.el, but I thought that it sucked that there were so many moving … Continue reading Flashair, Emacs and Me

meme x giffy

(October 15, 2017)

The other week I was tinkering with editing GIF animations in Emacs, and then I started wondering: Can this be any more ridiculous? Yes. So it’s a mashup of the Emacs meme mode and the new GIF animation code.  I spent most of the time on this wondering whether I could somehow make one or … Continue reading meme x giffy

Of course you should be able to make animated GIFs in Emacs

(October 8, 2017)

I was wondering what a convenient production process for GIFs from movies would be like, so I hacked my hacked version of mplayer a bit more.  Nothing major, since it already has all the functionality, but it doesn’t group continuous screenshots by name, which makes picking out the animations afterwards awkward. There’s probably a gazillion … Continue reading Of course you should be able to make animated GIFs in Emacs

Editing Movie Posters From Emacs

(September 3, 2017)

I was waiting for some people to drop by yesterday to pick up a sofa, and I started thinking about how nice it would be to pull down movie posters automatically and perhaps put some text or border or something on them. Instead of sensibly looking for an API for this kind of stuff, I … Continue reading Editing Movie Posters From Emacs

Emacs Non-Flickering Patch

(October 29, 2016)

Earlier today, Daniel Colascione merged his double-buffering Emacs display patch, and I was interested in seeing whether it reduced flickering when viewing animated GIFs on my problematic main machine. And it sure does: First you see an Emacs from five hours ago displaying a GIF, and it is flicker-o-rama.  Then I switch to a brand … Continue reading Emacs Non-Flickering Patch

Emacs Imgur Interface

(June 29, 2016)

It was suggested on github that the Emacs meme creator should offer uploading images to imgur (and return the resulting URL) for max magic.  That seems extremely true. There is already an imgur.el on github, but it’s doesn’t seem ideal (it does much more than just uploading; it seems to be using an older API; … Continue reading Emacs Imgur Interface


(June 28, 2016)

After pondering this weighty functionality some more (while I should have been sleeping), I decided there weren’t enough features.  I didn’t graduate university as an Over Engineer for nothing, you know. The updated code is available on Github.

An Emacs Meme Generator

(June 27, 2016)

I got an idea tonight: Emacs must have a meme generator.  Using a web browser seems so jejune. After pondering a few minutes and then typing a few hours, here it is.  And here’s how it looks in action: It basically just manipulates an SVG image, so it’s less work than you’d expect. If you want … Continue reading An Emacs Meme Generator

Emacs Bug Trends

(May 3, 2016)

I had cold recently (well, I still have), so I amused myself by going through the Emacs bugs database and fixing documentation related bug reports.  Should be safe enough to do even with a fever. Anyway, I started wondering: Are things getting better or are things getting worse?  The Emacs bug statistics charts aren’t really … Continue reading Emacs Bug Trends

Bugs in the Skies

(March 2, 2016)

I was wondering how hard it would be to make the Emacs interface to the Emacs bug tracker offline capable. And it turns out it’s not very hard at all to create a half-assed solution here. Basically you just have to download the bug list, and then all the bugs (which are just mbox files), … Continue reading Bugs in the Skies

A Big Patch For Emacs, A Small Step For eww

(February 22, 2016)

During my summer holiday I’ve mainly been working on making the Emacs networking layer more asynchronous. To set up a connection, you first have to do DNS resolution, then the TCP three way handshake to set up a socket, and then (if you’re setting up a TLS connection) do the TLS negotiation.  Then you can … Continue reading A Big Patch For Emacs, A Small Step For eww

Touchy Emacs

(February 5, 2016)

I use Emacs as a music playing interface, and I thought it would be nice try to create a pure touch screen interface, just … because. The only OS that would install on my old Surface Pro 2 was the prerelease version of Ubuntu 16.04, Xenial Xerus.  Apparently kernels between 2013 and a couple of … Continue reading Touchy Emacs

The Continued Effect of Version Control Systems on Emacs Developers

(January 10, 2016)

I did some stats on the effect of the number of contributors after Emacs switched to git last May.  I think I summed it up as “meh”, but that was only after a handful of months, after all. It’s now been more than a year, so I redid the experiment: (The red line is the … Continue reading The Continued Effect of Version Control Systems on Emacs Developers

It’s About Ethics in Gnus Development

(January 1, 2016)

I mean maintainability. Yeah. This is long and meandering, so here’s the summary: Gnus (and a couple of other Emacs packages) are dropping XEmacs support. Meanwhile, here’s a GIF of a cat: When I took over Gnus, the Emacs newsreader, in the mid-90s, it seemed natural to do the development outside of Emacs. Emacs was … Continue reading It’s About Ethics in Gnus Development

Live Camera/Emacs Link

(August 17, 2015)

I mostly use Emacs for WordPress blogging, and it works fine, but it’s a bit cumbersome to snap pictures, hunt around for them, and include them in the article manually. It would be nice to be able to type away at a blog (or email), and then take some pictures and have them included in … Continue reading Live Camera/Emacs Link

The Effect of Version Control Systems on Emacs Developers

(April 23, 2015)

In November 2014, Emacs switched version control systems from Bazaar (aka bzr) to git.  There were two main reasons: 1) bzr has kinda stopped development, and 2) using a version control system that more people are familiar with might attract more developers. On the other hand, git is really, really finicky, and bzr is arguably … Continue reading The Effect of Version Control Systems on Emacs Developers

Emacs and id3

(April 22, 2015)

I rip all CDs, vinyl and cassettes to flac for easier listening, but I also convert the files to mp3 for listening in the car, which has an mp3 CD player.  This is what the display normally looks like: But all the files that I’ve ripped from vinyl are displayed like this: I’ve been assuming … Continue reading Emacs and id3

eww: Now With Fonts

(February 10, 2015)

I’ve now pushed the font-related shr changed to the Emacs trunk. Use the `F’ eww command to toggle whether to using variable-pitch fonts. Here’s some results: Kinda looks like Mosaic in 1992, eh? Now I just need to implement CSS3 3D animation transforms…

eww not can haz different line pitch

(February 9, 2015)

The version of eww with variable-width fonts is basically usable now, but here’s the problem: Notice the weird line heights in the column to the left where it says “We commit to shine the light on our obsessive stalking of Wikimedia employees”?  That’s because there’s a <h1> in the middle column, and those characters are … Continue reading eww not can haz different line pitch

eww can haz font

(January 28, 2015)

After some help from Eli, I now have a proof of concept of rendering HTML with proportional fonts in Emacs.  The main difficulty is, of course, doing line folding on a pixel basis instead of a word basis, and lining stuff up in tables. Here’s how my test page looked before these changes: And now … Continue reading eww can haz font

One Touch Maintainin’

(December 9, 2014)

Emacs gets a lot of very nice, but quite simple patches that take quite a lot of keystrokes to process.  It’s hard on the fingers, and you always forget various bits. So I wondered how simple it could be, and hacked up this workflow tonight. You start in the debbugs-gnu buffer, as always, narrowed down … Continue reading One Touch Maintainin’

The Emacs Network Security Manager

(December 1, 2014)

Emacs 25 will have a network security manager. You know — the thing that nags you when you visit https pages with invalid certificates and annoys all y’all so much. Yay. Designing a thing like that is a minefield. On one hand, you have professional security professionals who seem to insist that the sky is … Continue reading The Emacs Network Security Manager

Making SVG images in Emacs

(November 25, 2014)

While working on the Emacs Network Security Manager, it was suggested that Emacs implement a visual hash for certificates.  It turned out to be a not-unproblematic idea, so I didn’t do that, but by then I had already written an SVG library. While staring at it, it occurred to me that it would be kinda … Continue reading Making SVG images in Emacs

Welcome, New Emacs Developers

(November 13, 2014)

Emacs switched the version control system from Bazaar to git yesterday, so now is the time to start hacking away at Emacs. Emacs: The Best Thing Since Sliced Bread If It Wasn’t For The Fact That Emacs Was Actually Invented Before Sliced Bread. This is a very short how-to guide on building and then contributing … Continue reading Welcome, New Emacs Developers

Campaign for Humane Sorting

(October 13, 2014)

Does this look familiar to you? Or this? Then you know the pain and suffering caused by virtually all tools that sort things “alphabetically” when those things contain numbers, and the strategies we’ve adopted to deal with these broken tools. We’re humans.  How would a human sort “foo25.txt” versus “foo3.txt”?  We would think “hm, there’s … Continue reading Campaign for Humane Sorting

Emacs DOM Traversal

(August 24, 2014)

I’ve been doing a bit of web scraping with Emacs lately, and I haven’t been totally satisfied with how my dom.el library worked. But on Friday I was fiddling around with some jQuery stuff, and I noticed how handy it was that jQuery functions that dealt with a single node (like .attr()) could be fed … Continue reading Emacs DOM Traversal

Romans, Countrymen

(March 8, 2014)

I needed to format some Roman numerals, and to my shock and disgust (actually, delight), I couldn’t find anything in Emacs to do that. So I whipped one up. Enjoy. A helpful comment pointed me to this after I had implemented it. I think my code is more understandable. Recursion! Yuck!

Posting to WordPress from Emacs

(March 6, 2014)

I’ve grown increasingly annoyed (I annoy easily) with the HTML editor at WordPress.com. Not that the HTML editor at Blogger was any better. Editing blog entries is just fiddly when you have images and stuff. And you have to upload the images. Boooring. WordPress has a “post by email” feature, so I wondered what would … Continue reading Posting to WordPress from Emacs

Emacs Cloud

(February 1, 2014)

I’m taking a vacation from my programming day job to fix Gnus/Emacs stuff.  As well as going to Utah.  But that’s finally over, and I’m back on a couch in San Francisco. I think I’ve covered the outstanding bugs now, so it’s time for new features.  Mah favourite. First off: I’ve been meaning to implement … Continue reading Emacs Cloud


(October 25, 2013)

As usual, I was more delayed than warranted with the No Gnus t-shirts. But today! It’s packing time. Carrying the shirts up to the fourth floor was kinda invigorating.  I.e., woe is me. Using magical Japanese folding techniques… Quality entertainment.  (Jeepers Creepers 1 & 2, which I bought because Joss Whedon said they were great … Continue reading Mercantilism


(September 29, 2013)

I was out at a show on Friday, and had a few beers, and then suddenly I was home, and I was listening to Xiu Xiu’s version of Fast Car, and I really had to know what the lyrics were. And before you know it, I had won around fifteen new iPhone 5s from various … Continue reading Lyrical


(September 14, 2013)

The September t-shirts were finally ready yesterday, so I picked them up today, along with stamps, envelopes, rum, ginger beer, DVDs and other things necessary for packing stuff. The number of shirts wasn’t enormous (just 30 or 40 or something), so carrying them up the stairs was no problem. The Norwegian postage system changed since … Continue reading Mercantilism

Displaying Animated Images With ImageMagick

(August 15, 2013)

The Internet Is Made For Cats I’ve spent the day adding support for animated GIFs to Emacs via ImageMagick.  Emacs can display animated GIFs already, of course, but not via ImageMagick, so we couldn’t scale animated images.  Which is awkward. An animated GIF is (basically) just a bunch of images in one blob.  However, the … Continue reading Displaying Animated Images With ImageMagick

No Gnus T-Shirts!

(July 31, 2013)

After procrastinating for a few years (I’m getting better and better at procrastinating), I’ve finally gotten some No Gnus t-shirts organised. With fancy silver print and all. Head on over to the shop to buy some.  Buy a lot, buy a few.

eww… improvements

(June 19, 2013)

I’ve spent a bit of time making shr faster, and making eww render forms prettier. The latter entailed implementing all the widgets myself instead of trying to shoe-horn widget.el into eww. shr is still slow, but it’s 4x faster now rendering typical Wikipedia pages than it was a few days ago.   I find comparing … Continue reading eww… improvements


(June 16, 2013)

A couple of years ago I wrote an HTML rendering library for Emacs so that I could read blogs in Gnus. And because I thought that Emacs should have a built-in method to display HTML. I mean, it was only about 20 years over-due. Simple HTML Renderer (or shr, as the cool kids call it) … Continue reading eww

Years and Years

(February 23, 2013)

I was reading this article and thinking “gee, 1980 sure was a good year for music”. So I wanted to list all the albums I had from 1980.  And then I discovered that I lacked the release year for about 1300 of mah records. Fortunately, discogs.com has a nice API, so I wrote a tiny, … Continue reading Years and Years

Books, Emacs, and ISBN APIs

(January 18, 2013)

I have the worst memory. But even so, I pretty much manage to remember what books I’ve read.  If I’ve read Anagrams by Lorrie Moore, I remember that. The problem is with the less (how to put it?) good books. I read a lot of crap.  Crap that I like, but it’s crap.  Book after … Continue reading Books, Emacs, and ISBN APIs

Computers Can Remember Things

(March 20, 2012)

One feature that I’ve been missing from mplayer for years and years is the ability to remember how far you’ve watched a movie.  Like, if I’ve been watching a movie, but then I stop the movie because I want to watch a TV show, then mplayer doesn’t helpfully remember where you left off. So I’ve … Continue reading Computers Can Remember Things

Emacs Light Switches

(November 11, 2011)

Tellstick Duo Telldus launched a new version of their nifty USB-based “home automation” thingy a couple of months ago.  It’s mostly the same as the last version, but this one can receive signals as well as send signals. This means that you can buy stuff like this switch, glue it onto a wall somewhere, and … Continue reading Emacs Light Switches

Digital Audio Extraction from Emacs

(April 21, 2011)

Triple Threat SATA Multilane Connector So my CD ripping situation is that I put a CD into the CD reading thing there (more about that in a thrilling later blog article), hit a key in Emacs, slap a CD cover onto the scanner, hit another key in Emacs to say that the format is (usually … Continue reading Digital Audio Extraction from Emacs

Scanning Record Sleeves

(April 19, 2011)

A CD Rippin’ Cupboard with an A3 Scanner In the continuing story of bits and pieces related to my music playing Emacs@Home installation, here’s the sleeve scanning function.  It’s basically just a tiny data base of common CD/LP/tape sleeve sizes. There’s a lot of sizes, unfortunately. But what I really wanted to have was something … Continue reading Scanning Record Sleeves

Editing Sound Files in Emacs

(April 17, 2011)

Emacs PCM Editing I buy quite a lot of vinyl still.  And the hipsterish hipsters have started releasing things on tape, since vinyl is obviously too mainstream.  (I’m wondering when 78s will be making a comeback.)  So to listen to this music I need to sample it and then convert it to flac. That’s trivial … Continue reading Editing Sound Files in Emacs

Emacs Can Haz Brainz?

(April 15, 2011)

Adam mentioned MusicBrainz in the comments of the last article.  I took that as a challenge, of course. I only implemented the query bits, though.  I’m selfish. (Oh, OK, the only reason I didn’t do the submission part, too, is that I can’t make up my mind whether cddb.el and musicbrainz.el should share the same … Continue reading Emacs Can Haz Brainz?

Editing freedb/cddb entries

(April 15, 2011)

The new album New Album from the folk band Boris When ripping large quantities of CDs, you really have to have an efficient way to query and edit CDDB entries.  So here’s an Emacs library for doing that. It includes a bunch of convenience functions for fixing up other people’s bad entries, and you also … Continue reading Editing freedb/cddb entries

Musical Beats & Pieces

(April 14, 2011)

The music player The last hoard of Emacs-related code I’ve written over the years is part of my Emacs-based music player.  It started off (in 1997) as a way to rip my CDs and play mp3s (as well as swap out the mp3s to CD since I didn’t have enough disc space to store all … Continue reading Musical Beats & Pieces

Emacs Movie Browser

(April 12, 2011)

See Emacs. See Emacs play movie In the continuing story of Emacs@Home (don’t worry, I think there’s only one part left now), we’ve now come to the part where I watch TV.  I know, it’s something most people manage quite perfectly without resorting to Emacs, but why would you? Well, actually, I think that the … Continue reading Emacs Movie Browser

Alarm Clock

(April 10, 2011)

The alarm clock before I started writing this article Most alarm clocks have somewhat awkward interfaces, which may be why so many people have switched to using their mobile phones instead.  Most mophos have alarm clocks that are easy to use — just open the clock app, choose a menu item and type in the … Continue reading Alarm Clock

An Emacs-based PVR

(April 5, 2011)

In the continuing story of me trying to push a few of the odds and ends of the code I’ve written for my own use, we’ve now come to the Emacs-based PVR. As usual, it may not actually be very useful code for, like, normal human beans, but why not push it out there?  Perhaps … Continue reading An Emacs-based PVR

Tellstick Redux

(April 1, 2011)

I was whinging a lot about the terrible Tellstick range in my last post on the issue.  Deservedly so.  It’s terrible!  However, the Telldus people have released a new version of the device: The revolutionary new invention is the antenna!  Who would ever have thought that an antenna would give greater range?  Kids these days. … Continue reading Tellstick Redux

Assange Past Revealed!

(January 9, 2011)

I was looking through my ~/lisp directory just now, and I found this file, saved in 1998.  I can’t recall ever using it or where I got it from, and it’s probably written by a different Julian Assange, but anyway… Here are solid connections between Wikileaks and the sordid Emacs development environment!  I think the … Continue reading Assange Past Revealed!

Emacs Home Automation

(January 9, 2011)

Nexa unit We all grow so very weary of having to switch lights on and off. Every day. On again and then off again. Will the madness never end? Technology comes to the rescue! There are companies that sell receivers (like the one pictured to the left, plugged into a wall outlet that I now … Continue reading Emacs Home Automation