Memacs Paper

I’ve mentioned Karl Voit’s Memacs project before. I’m really interested in its ideas and have been implementing various manual procedures to capture some of the same data. My end goal is to implement Memacs on my own machines but it may take some work as Memacs is implemented in Linux and some of the data gathering modules may have to be reworked to function on OS X.

If you’re interested in more information about Memacs, Voit published a very nice description of it on arXiv.org, which you can get for free. The paper goes into the rationale for Memacs, its basic architecture and then a use-case story that illustrates how it’s helpful.

It’s an interesting paper and not too long so you should give it a read if you have any interest at all in personal information management.

Posted in General | Tagged , | Leave a comment

A Nice Set of Emacs Tips

Via Artur Malabarba we have a link to an excellent set of Emacs tips from Ben Maughan. Maughan has a local mailing list to which he posts an Emacs tip every week. Happily, for the rest of us, the list is available as a Web page too.

A lot of the tips are elementary but I learned a couple of things so it’s probably worth your while to cycle through them. Or you could extend the pleasure by reading one a day. Either way, the tips are short and to the point so you won’t waste any time.

I’m glad Malabarba pointed us to the list and I’m grateful to Maughan for making it available to all of us through the Web site. Now if I could only figure out a way to get on the list.

Posted in General | Tagged | 3 Comments

Grep in Emacs

Xah Lee has a useful tutorial page on grep and grep-like searches from Emacs. The page is an old one but is worth bookmarking if, like me, you keep a list of valuable Emacs reference material. For some reason, I have difficulty remembering the material covered in the tutorial so it’s really useful to me to have a quick link to it.

Lee covers how to use grep, rgrep, and lgrep from Emacs. That’s pretty straight-forward, of course, but he also shows how to get the resulting file listed in a dired buffer and how to search every marked file in dired for a regular expression and then step through the results.

It’s a short tutorial and worth taking a look at if you’re not already familiar with using grep and grep-like searches from Emacs. You may also want to bookmark it so you have it handy for a quick review.

Posted in General | Tagged | 1 Comment

Some Dired Tips

Marcin Borkowski (mbork) has a nice post on Emacs dired tips. Dired is amazingly powerful but most of us don’t begin to take advantage of its capabilities. Mbork looks at a few things you can do to enhance your workflow with dired. Many of them I was (and you probably are) familiar with but I did learn about how to omit “uninteresting” files.

He covers several areas so you should take a look. If you learn even one thing you didn’t know, it will be time well spent.

Posted in General | Tagged , | Leave a comment

The 500 Mile Email Limit

If you’re in our business for any length of time, you accumulate a number of amusing stories. Most of them are in-jokes that outsiders wouldn’t get or find funny.

One of my favorite such stories concerns a problem with email recounted by Trey Harris. At the time Harris was working as a system administrator at MIT (I think) and the Chairman of the Statistics Department called saying they had a problem with email. When Harris queried him on what the problem was, he was told that they couldn’t send any emails further than slightly more than 500 miles. Harris’ reaction was pretty much what yours or mine would be: he didn’t believe it. That is, until he ran his own tests and discovered it was really happening.

Before you follow the link and read what was going on, try to imagine what the problem was. I must admit, I sure didn’t know when I first read the story. It’s one of those things that seems impossible until you read the explanation.

I’m glad someone posted the story again. I haven’t seen it in years and it definitely deserves to be read and enjoyed by geeks everywhere.

Posted in General | Tagged | Leave a comment

Diceware as a Pipeline

If you’re interested in picking a passphrase using the Diceware method but don’t want to bother with compiling a program for what is most likely a one-off use, you’re in luck. Dr. Drang over at And now it’s all this shows how to use a simple pipeline to get \(n\) random words from the Diceware list.

He even shows you how to build your own lists using books from Project Gutenberg. If you’re on OS X, you won’t have shuf available so you’ll have to install the GNU Coreutils but this is easily done via Homebrew if you don’t like compiling your own utilities.

This is a nice solution and easier than bringing up my Lisp environment for those rare occasions when I want a passphrase.

Posted in General | Tagged | Leave a comment

Working with Customers

We’ve all been there:

Posted in General | Tagged | Leave a comment

Calc Update

I’ve written before that I’ve started learning Calc. That last post was after I’d worked through the introductory material (which is, itself, quite dense). I’ve now completed the first three sections of the tutorial covering

  • Basic Tutorial (RPN, stack, algebraic notation, Undo/Redo, Modes)
  • Arithmetic Tutorial (arithmetic and scientific functions)
  • Vector/Matrix/List Tutorial (operations on vectors and matrices)

It may seem that my progress is slow—that last post was two weeks ago—but there’s a huge amount of material, especially in the last section. The basic and arithmetic tutorials are pretty much what you’d expect although you’d probably be surprised at how many different functions there are. The last section is astounding. For example, there is a function to calculate the dot product of two vectors but even if there weren’t you could do the same operation using the map and reduce functions. In Elisp (but not Calc) terms that would be

(reduce #'+ (cl-mapcar #'* V1 V2))

There are lots of examples that don’t have a simple, single command so these functions turn out to be really powerful and useful.

The tutorial has exercises, some of which could be from the Euler Project. They’re not all that hard, thankfully, but some of them require careful thinking about before you can solve them. They’re really useful for helping to cement some of the functions and techniques in your head.

I’ve already started using Calc in my day-to-day work. Where before I’d bring up a Lisp REPL or try to make do with Elisp, I now just pop into Calc and perform whatever calculations I need. It’s nice that I don’t have to worry about overflow and things like that. The only downside is that I still haven’t internalized all the function codes. They are generally one or two characters and while some—like *, +, …—are obvious others are less so. For example VC is the cross product of two vectors and HL is \(\log_{10}\). Fortunately, there’s a cheat sheet that lists the most common commands.

I’m really enjoying working through the tutorial and am learning a lot. I’ll post another status report when I’ve worked through more of the tutorial.

Posted in General | Tagged , | 4 Comments

Text in Academic Writing

If you’re an academic in the sciences, you have an advantage over your colleagues in the liberal arts: you can write in LaTeX using any editor you choose1. Your document is in plain text and can be operated on by several text processing utilities. If you’re an Emacs user, you don’t even have to bother with LaTeX; you can write in Org mode and export the result to LaTex for submission. Best of all, you never have to touch Word. Those in the Liberal Arts, on the other hand, almost certainly have to submit their articles in Word format.

Now some of those liberal Arts academics are rebelling and looking for ways to do their writing in plain text too. Of course, they still have to submit their articles in Word format but there are, fortunately, tools that allow this. One such effort is the Scholarly Markdown Project. It’s goal is to allow researchers to write in a slightly extended Markdown and use a port of Pandoc to convert it to other formats such as HTML or Word.

The Scholarly Markdown Project is still in the alpha stage so some academics are going their own way. W. Caleb McDaniel is a historian who is using Markdown to produce his books and articles. His post lays out his objection to using Word and then goes on to show how he’s replaced it with Markdown. I like how he’s not afraid of the Unix tools and uses them to assemble his documents.

We’ve now reached the stage where anyone who’d rather not use Word has other options but can still submit a final product in Word format. Emacs users have powerful built-in options: they can write in Org-mode and export to docx format. Those who prefer not to use Emacs, can write in Markdown using any editor they choose and translate to docx or any other of a number of formats using Pandoc. Lots of people don’t mind—or even prefer—Word, of course, and they’re free to continue using it. For those who’ve had enough of that walled garden and all the problems it brings, there are now alternatives.

Footnotes:

1

Yes, yes, a few scientific journals also require submission in Word format but they are, fortunately, few in number.

Posted in General | Tagged , , | Leave a comment

Two From Xah

Xah Lee has a couple of useful tutorials on the finer points of ibuffer and the isearch family. Every Emacs user is familiar with forward and backward incremental search, 【Ctrl+s】and 【Ctrl+r】, but there are some more specialized commands as well. For example, there are isearch-forward-word (【Meta+s w】) and isearch-forward-symbol (【Meta+s _】). These differ subtly from the usual isearch-forward; see Xah’s Search & Highlight Words for the details and for other useful commands.

Most people don’t use these commands very often so they’re hard to remember. I have guide-key set to pop up the bindings when I type 【Meta+s】 so I don’t have to remember worrying about remembering them. Another good solution would be to make them into a hydra.

The default buffer listing function is list-buffers but you should replace that with ibuffer. It turns out the ibuffer has many ways of marking and operating on buffers. Most folks know how to mark and delete buffers but you can also perform save, search, revert, rename and several other useful functions. Again, you should check out Xah’s tutorial on the subject for the details.

These are useful tutorials and you may want to bookmark them but you should at least give them a look.

UPDATE: regex → incremental

Posted in General | Tagged | 6 Comments