Why Emacs Is Awesome

A few months ago I wrote about Luke Smith’s challenge for others to make a video convincing him to use Emacs. Among those who responded was JimKD who produced a very nice video that showcased some of the great features of Emacs. I just saw a reference to the video and watched it again. I vaguely remembered seeing it before but couldn’t remember if I’d written about it until I searched my Irreal archive. Since it was worth watching again and since there are new pointers to it, I decided I’d revisit it.

Smith is (or was) getting ready to write his thesis so one of the things he was looking for in an editor was features that made writing easy. JimKD emphasized that aspect of Emacs in his video. He begins by bringing up a buffer containing a \(\mathrm{\LaTeX}\) document and shows how it is easy to navigate to different parts of the document, show and operate on two views of the document, and compile or view the document as a PDF file. When I’m using a markup language to write, I find I often want to check the result to ensure that the markup produced the result I wanted so the preview function is important to me and probably most folks using non-trivial markup.

JimKD then moves to Org mode. His discussion is mostly focused on Org’s table editor. He shows how an Org table can behave like a spreadsheet while still being in plain text. JimKD emphasizes how important that plain text aspect is: you can always read your data even if the software that produced it disappears for some reason.

The video is just over 25 minutes but it’s interesting and well worth the time to watch it. If you haven’t seen it or haven’t seen it for a while, take a look.

Posted in General | Tagged | Leave a comment

How A Nerd Counts Stairs

Tanya Khovanova recounts an amusing trick she learned from John Conway: how to count the number of steps in a stairway. The obvious answer is to just count them as you walk up the stairs but there’s an additional stipulation: count them like a nerd would.

The basic idea is to first determine the number of step modulo 10 and then estimate the how many groups of 10 steps there are to determine the total number. I’ll let you read Khovanova’s post to see the trick for finding the steps mod 10.

There’s not really anything exciting here but it did strike my fancy for some reason. Perhaps you’ll enjoy it too.

Posted in General | Tagged | Leave a comment

Refreshing the Occur Buffer

Over at the Emacs subreddit, attrigh asks if there is some way of refreshing the results of an occur when the underlying buffer changes. I’ve never run into a use case where that would be helpful but it’s easy to see how it could in many workflows. I didn’t know the answer off the top of my head but I probably would have stumbled on the answer just by doing the expected thing if I had needed an occur refresh.

In any event, the answer is to type g just as you do in similar situations to rebuild the results buffer of some command. I doubt this tip is going to save anyone hours of time but it is a handy thing to know for when your underlying buffer changes and you really don’t want to retype that long, nasty regex.

Posted in General | Tagged | Leave a comment

Actionable Links in Emacs Buffers

As most of you know, I do almost all my writing in Org mode so I’m used to being able to follow a URL by typing return on it or with Ctrl+c Ctrl+o. I use this all the time and, occasionally, when I’m in some other type of buffer I’ll try to follow the link and it won’t work. I end up copying the link and pasting it into my browser. That’s a real cache miss for me.

I just had another of those “how did I not know this” moments when I saw Álvaro Ramírez’s post about enabling the exact functionality I wanted. It’s been there all along. I’m not sure when it was integrated into Emacs core but the creation date on the source file is 1995.

Don’t let Ramírez’s use of use-package mislead you. It’s not a third-party package; it’s built into Emacs. On the other hand, Ramírez’s use-package invocation is useful because it shows you how to set it up. For most buffer types, you’ll want to use goto-address-mode but for code you’ll probably want goto-address-prog-mode which behaves the same as goto-address-mode but only for strings and comments. If you use Org buffers much of the time, you may want to bind Ctrl+c Ctrl+o instead of or in addition to Return.

This is a great find for me. I don’t need it that often but it was really annoying when I did and I didn’t know the easy way of doing it. Thanks to Ramírez for the tip. Perhaps you’ll find it useful too.

Posted in General | Tagged | Leave a comment

Splitting An Org Block

Kaushal Modi has a nice post on how to split an Org block. That comes up in the context of, say, writing a literate program and deciding you want to insert some commentary in the middle of the block. A simple keypress and the block is split in two and the cursor is positioned between the two parts.

The notion of “block” is general. The splitting will work with any type of Org block so its use extends beyond the simple case above. You wouldn’t think this would be too complicated but, in fact, it’s a bit fiddly. There’s no built-in predicate to tell you when you’re inside any Org block so Modi had write that first. The rest is mostly diddling around with regexes but there’s still the problem of deciding where to split the block.

Modi shows all his code and has a nice commentary on what he’s doing so it’s easy to follow along. There’s also a pointer to his setup-org.el file where you can see all the code at once. This is a nice post and Modi’s code may be useful to those of you who frequently use Org blocks in your writing. It’s also another wonderful example of how Emacs lets you scratch just about any itch.

Posted in General | Tagged , | Leave a comment

Bumper-Sticker Computer Science

Back in the 1980s, Jon Bentley wrote a column for Communications of the ACM called Programming Pearls. The columns typically considered a programming technique or problem and were very popular. The columns were later published in book form as Programming Pearls and More Programming Pearls. If you haven’t read these books, you definitely should. Programming Pearls, at least, appears to be available for free download.

I just came across a pointer to one of those columns, Bumper-Sticker Computer Science. I remember reading it in More Programming Pearls and I’m pretty sure that’s where I first learned the rule of thumb that π seconds is a nanocentury. The theme of the column is short computer science aphorisms—such as Duff’s remark about π seconds—that could conceivably be printed on a bumper sticker.

If you haven’t seen that column, you should take it look. It’s entertaining but, more importantly, distills a lot of our profession’s traditional wisdom. It will take only 5 or 10 minutes to read and you’re sure to enjoy it and probably learn a thing or two as well.

Posted in General | Tagged | Leave a comment

The Emacs Community

James Gill has a nice tweet about the community of Emacs users:

Like most of you, I belong to several tech communities. Not all of them have as nice a reputation. The Lisp community, for example, can be notoriously hostile to n00bs. A lot of that is residual grumpiness about the fact that the first thing many n00bs do when they arrive is suggest some scheme for doing away with parentheses. If you heard that as often as the typical Lisper, you’d be grumpy too.

Still, there’s no denying that the Emacs community is exceptionally welcoming to n00bs and that, as Gill says, we have a lot of people with extensive experience who are willing to help n00bs as well as more seasoned users. We also have folks like Mike Zamansky, Sacha Chua, and Rainer König who spend hours of their own time making instructional videos and doing other chores that benefit us all.

I think Gill has it exactly right: We’re old school and modern at the same time. Old school because we’re employing an editor that’s older than many of its users and modern because that same tool is more powerful and adaptable than its more “modern” competitors. In any event, it’s a great community and I’m proud to be a member.

Posted in General | Tagged | Leave a comment

A Lisp Machine

Sorta. Kedalion Daimon has a really interesting project in which he takes an old Brother EP 44 adds an Arduino Due and the very definition of a Rube Goldberg power supply to build a makeshift Lisp machine. It’s a Lisp machine because the Arduino is running David Johnson-Davies’ uLisp and the EP 44 is serving as a terminal.

This is, of course, by no means a “real” Lisp Machine. Daimon even had to write his own editor for the machine. Even if it’s not Emacs, it was powerful enough to allow the entering of simple Lisp functions, which the uLisp would then execute.

Daimon produced a video showing the machine and demonstrating its use. It’s unlikely that you could use the machine for serious work but it’s awesome as a side project. After all, how many of us can say we built our own Lisp Machine?

Thanks to Wilfred Hughes for the link.

Posted in General | Tagged , | Leave a comment

The Many Uses of Org Mode

It’s almost a cliche that “I came to Emacs for X but stayed for Org mode.” Org really is the killer app for n00bs, although I believe it’s more of a gateway drug. After you’ve been here for a while, Org is still really nice but it’s all the other benefits that really matter. No matter; there’s no denying that Org really is reason enough to move to Emacs.

Sid Raval has an interesting post in which he exclaims the wonders of Org. He came to Emacs for its Haskell support but it was Org mode that convinced him to stay. His journey is like many others: Org and Emacs just make life so much easier that he started building his workflow around it.

You probably won’t learn anything new from Raval’s post but it serves as yet another reminder why we’re all here. Emacs, provides an unusually rich environment for getting your work done. Some of us think that that’s because it recapitulates the Lisp Machine experience, others because it’s just a really nice work environment that happens to include an editor. Whatever your reason, Emacs is a clear win. Raval’s post is yet another affirmation of that fact.

Posted in General | Tagged , | Leave a comment

Storing Energy with Concrete Blocks

One of the big problems with alternative energy sources, such as wind and solar, is that they can’t generate electricity all the time. That means that that they need a way to store the excess energy they generate when they’re operating for times when they aren’t. The obvious answer—to most of us nerds—is to use batteries. The problem is that that solution doesn’t scale very well. In fact, 96% of energy storage is by “pumped hydro” where the excess energy is used to pump water up to a dam where it is stored until energy is needed. Then the dam is opened and the water flows against turbines to regenerate the electricity.

That solution also has problems, though. In the first place it requires the right geographic environment. Secondly, in some places water is too valuable a resource for this use. That’s why 75% of pumped hydro facilities have been built in just 10 countries. Still, the idea is a good one: store the energy as potential energy.

A startup named Energy Vault is leveraging the idea by storing energy by using cranes to lift concrete blocks and recovering the energy by letting gravity lower the blocks against the cranes’ motor to regenerate the electricity. Surprisingly, the system is almost as efficient as lithium-ion batteries.

Quartz has a nice article on the system. Energy Vault has built a demonstration plant—about one tenth the size of a production plant—to demonstrate the system. The concrete blocks for a production plant would weigh about 35 tons but the demonstration plant, which was built in 9 months and cost only $2 million, used blocks weighing 500 kg. A production plant could store about 20 megawatt-hours, enough to power to 2,000 Swiss homes for a day.

I love this solution. It’s low-tech in a way but about as efficient as more glamorous high-tech solutions. Read the article. It’s really interesting and illustrates how even simple ideas can yield huge benefits.

Posted in General | Tagged | Leave a comment