When everything else fails, try Emacs

Even though I've defected to Eclipse for Java coding[1], and even occasionally use Vim[2], there are times when I flee back to the tender loving embrace of Emacs.

We've been doing a bit of software archaeology at work, mapping old requirements specifications to a newer code base. The chosen method was to append specially formatted comments to the end of each line participating in the implementation of a requirement, in the form of // req <requirement identifier>. How to do this in Eclipse? It doesn't have a macro facility; there are the snippets or whatever they are called, but using it for this purpose would be pretty painful. And the lines are formatted to be long enough (padded with spaces) to make it easier to read the code with the comments inserted. Which is nice and all, but with my screen I can't even see what lines have the comments which don't. Not good.

But, hey, sometimes everything isn't a nail even though you have a hammer. There's always Emacs. 50 lines of elisp later and I have it prompting me for the requirement id, inserting and removing the comments with one key press and highlighting the lines with the current requirement id. Make it truncate long lines and the only thing different from the normal display is the pink background on the lines I'm interested in. Because the Emacs manual (and function doc strings) is as good as it is, all that was stupidly easy to accomplish even though I had never played with faces and overlays before. And of course no restarts were required while I was hacking the code, trying out every change as soon as I made it. I'm still waiting for another environment that is as malleable as Emacs.

[1] So I can't live without all the searches and other magic. Its editor is still pretty weak.

[2] Vi style indentation is better than broken Emacs style indentation. Some Emacs language modes are less than perfect. Also, AA fonts[3].

[3] The good news is that the Xft-enabled emacs-unicode-2 branch has been working for me now happily for a day. Smooth Bitstream Vera is love. If only it were packaged in Ubuntu, the way the main development branch is in the emacs-snapshot package.

New job

I changed employers last week. My previous employer, Entra e-Solutions, was recently merged with TietoEnator Telecom & Media. The merger was slightly unpleasant and pushed me finally into looking for a new job. I saw an interesting sounding opening for a semantic web r&d position, applied, did a six hour programming assignment, was hired. I now work for Profium. I'm all about RDF now, baby.

Also, apologies for not responding to email, if you've sent me any recently: I've suffered from a network outage and I'm also having trouble connecting to my IMAP mailbox. Evolution only says "Loading..." where it should show my folders.

Outcry: streaming again

Some former colleagues might think I'm reinventing my own wheel here. They would be right. I didn't feel like resurrecting a Python 1.5/omniORB zombie (or did it use SOAP later on? Or maybe both? I forget the details...) that didn't do everything I needed it to do and probably was mostly horrible. Anyway.

No guarantees for it working for anyone else, or for it to be interesting for anyone else, but Outcry is a remotely controllable (via plain old XML over HTTP messages) Icecast streamer. It's written in Ruby (which I'm enjoying, a lot) and requires libshout and ruby-shout. It streams MP3, converting FLACs and Vorbis files on the fly.

It's the latest step in my ongoing quest to play music in our living room without CDs. My KiSS DP-1500 isn't really very good at playing OGGs (it crashes a lot) and even worse at FLACs (it doesn't do them). Also, it doesn't play WAVs. My computer can't convert from FLAC to MP3 quickly enough for things to work out OK when I let the KiSS box control what it's playing, so next try is moving the control to this end of the pipe. Which kind of sucks. Oh well.

I should probably release my own kissd replacement written in OCaml, too, but it's even less ready for the masses. Email if you're interested.

© Juri Pakaste 2024