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

From One of My Favorite Comics...

The NSA goes Christmas Shopping.

Posted in General | Tagged , | Leave a comment

Anchored Transpose

Thanks to Tim Stewart, I stumbled across the anchored-transpose package. You can think of it as a generalization of the other transpose functions such as transpose-chars, transpose-words, transpose-sexps, and the other less used transposition functions. Instead of transposing around the point, anchored-transpose lets you specify an arbitrary anchor region to pivot around.

Here's an example of its use: suppose I have

First DO this and then do that.

and I want

First do that and then DO this.

To do that

  1. Select a region that covers the things you want to swap and everything in between.
  2. Call anchored-transpose.
  3. Select the anchor region. That is everything in between what you want to transpose.
  4. Call anchored-transpose again.

For our example, we first select the region

DO this and then do that

and call anchored-transpose. Then select

and then

and call anchored-transpose again.

You can also swap two disjoint regions by selecting one, calling anchored-transpose, selecting the other, and calling anchored-transpose again. You can specify the two regions in any order. You can also select the entire phrase and anchor phrase in the first example in either order.

I often want to swap parts of a sentence or even several sentences so anchored-transpose is a real win for me. I've mapped it to 【Hyper+t】 to make it easy to call.

You can get anchored-transpose from Melpa.

Posted in General | Tagged | Leave a comment

Disappointment

Richard Posner is a 7th Circuit Federal Judge. He's always struck me as the ideal jurist. Informed not only on the law but in many other areas, especially economics. More than a Judge, he's an intellectual and perhaps even a polymath.

I was really saddened, therefore, to see this piece on BoingBoing detailing some of Posner's shocking remarks on privacy. Among other things, Posner thinks that the NSA should be given carte blanche “to vacuum all the trillions of bits of information that are crawling through the electronic worldwide networks”, that privacy is over rated, and that he's shocked that any company would be allowed to build a device that the government can't search.

These statements—and more, read the post—are shocking and profoundly disappointing. I expected more from Posner and hope that the rest of the judiciary rejects his views.

Posted in General | Tagged | Leave a comment

Diacritical Mark in Emacs

I recently ran across this old post from Emacs master Mickey. In it, Mickey explores ways to enter diacritical marks in Emacs. For example, if you want resume to be rendered (properly) as résumé you need to know how to convince Emacs to do that.

It turns out that there's at least three ways of doing it. To get the ‘é’ character, I usually just type 【Ctrl+x 8 ' e】 but I could also type 【Ctrl+x 8 ReturnLATIN SMALL LETTER E ACUTE or if I know the codepoint, 【Ctrl+x 8 Returne9.

If you've used Emacs for any length of time and needed to enter diacritical marks, you're probably familiar with these methods. Mickey has a third way that I didn't know about: you can use multilingual text input along with TeX input mode. If you're writing a document with a lot of diacriticals, this method may be your best bet. Head on over to Mickey's post for the details.

Posted in General | Tagged | Leave a comment

My Solution to the Changing Times Challenge

Last week, I posted an EmacsGolf challenge on changing times to 24-hour notation. Most of the solutions were much like mine: they used query-replace-regexp with a complicated regular expression and an even more complex replacement expression. One trick that most responders missed was using \#n to get the nth subexpression as a number. That avoids needing to call string-to-int or something similar.

That said, my solution was to call query-replace-regexp with

\([0-9][0-9]?\):\([0-9][0-9]\)\([ap]\)

as the regular expression to search for and

\,(format "%02d:%s" (if (equal \3 "p") (+ \#1 12) \#1) \2)

as the replacement expression.

David Ongaro had a really great (and surprising) solution leveraging the date handling functions of Emacs Calc. It's nice because it avoids the horrendous regular expression that the rest of us used and simplified the replacement. Very clever.

Posted in General | Tagged | 3 Comments