Sorting by IP Addresses

Recently, I needed to sort an Org mode table by a column having IP addresses. For example, given the table

|            IP | 11/01 | 11/02 | 11/03 |
|---------------+-------+-------+-------|
|    10.1.213.5 |     2 |     1 |     0 |
|  172.25.100.1 |     4 |     1 |     1 |
|   10.234.4.55 |     1 |     1 |     5 |
|  192.168.7.11 |     2 |     1 |     3 |
| 10.25.215.200 |     1 |     3 |     1 |
|    172.35.0.1 |     2 |     5 |     1 |

I want to sort on the IP column to get

|            IP | 11/01 | 11/02 | 11/03 |
|---------------+-------+-------+-------|
|    10.1.213.5 |     2 |     1 |     0 |
| 10.25.215.200 |     1 |     3 |     1 |
|   10.234.4.55 |     1 |     1 |     5 |
|  172.25.100.1 |     4 |     1 |     1 |
|    172.35.0.1 |     2 |     5 |     1 |
|  192.168.7.11 |     2 |     1 |     3 |

That turns out to be surprisingly difficult. There’s no built-in method and I couldn’t find an appropriate sort routine that exposed the comparison function so that I could write my own.

The normal Unix sort can sort IP addresses with

sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4

Not easy or pretty but at least it gets the job done. My first attempt to get this to work was to mark the whole table except for the header line and the following rule line and then pipe it into sort with 【Ctrl+u Meta+|】. Sadly, this didn’t work because of the | that begins each line.

Next, I tried marking the rectangle comprising the data of the table with 【Ctrl+x Space】 and then piping it into sort as before. That didn’t work either.

Finally I remembered that I have cua-selection-mode enabled to mark rectangular regions. I marked the data with that and piped it into sort. Happily, that worked. If you haven’t already enabled cua-selection-mode, you should. It’s really useful.

I wouldn’t think sorting IP addresses would be that unusual but there’s no support for it all in Emacs. Most utilities do no better. Even sort only manages with some trickery. It’s probably just that IP addresses weren’t as ubiquitous as they are now when Emacs and those utilities were written. Or maybe I’m the only one who wants to sort by IP address.

So I solved the problem, sort of, but, really, it’s a terrible solution. After a bit of thought, I ginned up a patch and sent it off to the Org mailing list. Tomorrow, I’ll tell you the rest of the story.

Posted in General | Tagged | 2 Comments

PDF Animations

Edgar Aroutiounian has a nice post about adding animations to PDF files with Emacs, Org, and LaTeX. If you’re an OS X user, he also explains how to load a minimal TeX distribution rather than the huge MacTeX distribution.

The real magic is putting an animated graph into a PDF file. It’s surprisingly easy to do and doesn’t require much more than Emacs, Org, and LaTeX. Definitely worth reading if you think you might want to do this someday.

Posted in General | Tagged | Leave a comment

Emacs Function Frequency

Xah Lee has an interesting post of the frequency of Emacs functions in the Emacs code base. It’s easy to write such a thing off with a shrug but I found the chart fascinating. The first five most frequently used functions are setq, if, defun, let, and and. That’s not too surprising, of course, but I would have expected car and cdr to be in the first five.

As Lee says, it’s an interesting exercise to read down the list and find the first command you don’t already know. In my case that was oref, which is an eieio function. My excuse for not knowing it is that I’ve never used eieio. More to the point, though, is that now I do know it so I’ve learned something new.

Take a look at the list and see how far you get. Like me, you’ll probably know almost all of them but there may be a few that are new and then you’ll have learned something.

UPDATE: Fixed link.

Posted in Programming | Tagged | 4 Comments

Yosemite Autocorrect

This is a note for users of OS X Yosemite. With the new OS, spelling autocorrect is on by default. For me, at least, this was most evident in the mail app (almost all my other writing occurs in Emacs). When writing function names such as getkey-function, autocorrect would helpfully correct that to get key-function. It happens so quickly that half the time I didn’t even notice it.

I finally got fed up enough to try to fix it. The obvious place to look was in mail preferences but all you could do there was to turn off spell checking completely or just do it when you press send. I asked Duck Duck Go about it and found this helpful page. The TL;DR is that you can turn off autocorrect in the keyboard preferences; just uncheck the autocorrect box and you’re done.

Posted in General | Tagged , | Leave a comment

Ooh, I Must Be a Power User

Posted in General | Tagged | 2 Comments

Mastering Emacs, The Book

The estimable Mickey Petersen, proprietor of the Mastering Emacs blog, is working on a book. Mickey says that the book is not an encapsulation of his blog but rather is all new material. His announcement has a general outline of what he’s going to cover so read that if you’re interested.

Mickey’s aiming to release the book in February 2015 so we won’t have to wait long. If you sign up to be notified when it’s ready, Mickey will give you 20% off. You can sign up on the announcement page so head on over.

Posted in General | Tagged | Leave a comment

Dr. Dobbs, RIP

Although many younger developers don’t remember—or maybe weren’t even born—it wasn’t that many years ago that the Web as we know it today didn’t exist and access to what did exist was hard to obtain. In those sad times it was difficult for the struggling n00b to find examples of code to study and learn from. Linux and even the wide availability of BSD derived systems were still in the future.

What we did have, though, was Dr. Dobbs. It was a magazine for programmers that every month offered high quality articles that taught its readers valuable lessons about programming. I certainly learned a load from it. It was generally considered the premier magazine of its type.

Like most other tech magazines, Dr. Dobbs fell on hard times when the Internet became widely available and offered untold riches of high quality code for study. Still, it motored on as a Webzine for several more years. Now, sadly, after 38 years, its owner is sunetting Dr. Dobbs. Advertisers have discovered that ads on such sites aren’t as productive as they are elsewhere so revenues are down sharply.

Those of us who learned so much from the magazine will mourn its passing but, really, its time had come. Nevertheless, I’ll miss it and the comfort of knowing it was there to visit whenever I felt the urge or saw a reference to one of its current articles that seemed particularly interesting. Rest in peace, Doctor.

Posted in Programming | Tagged | Leave a comment

let-alist

This looks really great.

Posted in Programming | Tagged | Leave a comment

Bait and Switch

Remember how I told you not to trust government promises about data collection? That, according to the iron law of data collection, the data will always be used for other purposes even if the government promises otherwise?

Not that you need it but here is another example of the iron law. Australia is trying to pass a data retention law that will require ISPs to maintain connection logs. The government vehemently denied that the law would allow the data to be used to prosecute, say, file sharers or offenses other than major crimes such as terrorism.

Now in an unusual act of candor—what we in the U.S. have taken to calling a Gruberism—the Minister of Communication has admitted that once the data is collected there is nothing to prevent a civil action from gaining access to it. In other words, a suit from a Movie Studio against an accused file sharer would be enough to get access to the accused’s communication history.

The lesson is clear: never believe the government’s promises about limited use and demand that such data not be collected in the first place. The only way to prevent data abuse is to insist that it not be collected.

Posted in General | Tagged | Leave a comment

Help on Symbols with Info

LWN has a great article on esr’s proposal to revamp Emacs documentation that I wrote about previously. If you’ve been following that debate, you should definitely give it a read.

I made a serendipitous discovery in the comments. In response to a question about the utility of indices, drothlis notes that having an index allows you to type 【Ctrl+h S】 and pop right to the documentation for the symbol at point.

The example he gives involves checking a makefile symbol having nothing to do with Emacs. It’s a great example of how flexible Emacs with Info is. Be sure to read his comment.

This comment also shows how important it is to make sure any replacement of texinfo and info preserve the indices and the ability to query them that we have now.

Posted in Programming | Tagged | Leave a comment