Remembering What You Read

Charanjit Singh says he has a hard time remembering what he reads. It’s a common enough problem and Singh has settled on a common solution: he takes notes on what he reads. There are lots of ways of doing that, of course, but this being Irreal, it’s not a hard guess that his note taking workflow revolves around Emacs.

His workflow involves three components:

  1. Emacs
  2. Denote
  3. Spookfox

Spookfox is Singh’s package for talking to Firefox.

He takes two types of notes:

Reading notes
These are notes he takes on what he reads, usually in Firefox, and
Normal note
These are notes that summarize and discuss his reading notes. They link back to the reading notes so that he can see the source.

You can get the details in his post but Singh’s workflow is pretty much like mine except that I use Org mode rather than Denote and talk to my browser (Safari) using some homegrown AppleScript and Elisp glue. It’s a great way of keeping tack of what you read, especially if you read a lot or have a hard time remembering what you read.

Using Org means that it’s easy for me to search my journal—where all these notes go—for a topic or tag. Regardless of the tools you use, taking notes on what you read is a great way of boosting your native memory.

Posted in General | Tagged | Leave a comment

Some Good Advice From Brian Krebs

Brian Krebs over at Krebs on Security has a post on the latest T-Mobile breach in which 10 million users in Australia had their account details stolen by cybercriminals. There aren’t many details about the exploit other than it “abused” an API to gain access to the records.

The majority of the post discusses the consequences of the breach for T-Mobile and most Irreal readers probably won’t find it all that interesting. For me, the most valuable part of the post was the last two paragraphs. The penultimate paragraph begins, “Regardless of which mobile provider you patronize, please consider removing your phone number from as many online accounts as you can.”

Krebs goes on to explain that even though many sites require a phone number to register an account, you can often delete that number on the account management page. That seems like a lot of trouble and you may wonder why it would be worth the trouble. The TL;DR is that having your phone number tied to an account gives criminals an easy way to compromise that account. See the last paragraph of Kreb’s post to see how this works.

Krebs, of course, is a serious security researcher and his recommendations should be taken seriously. Between this breach and the one in 2021, T-Mobile has leaked the details of 50 million accounts. Even if you’re not a T-Mobile customer, your carrier may be next so it makes sense to reduce the attack surface as much as possible.

Posted in General | Tagged | Leave a comment

Flexible Grepping With Deadgrep (or Ripgrep)

For those who don’t know, deadgrip is an Emacs interface to ripgrep. It displays the results in an Emacs buffer along with some ancillary information. Check the example at the deadgrip link for some example output. Ripgrep, of course, is a powerful and speedy grep utility; deadgrep provides a nice interface for Emacs users. It’s a bit like counsel-rg but provides a little more context.

James Dyer is a deadgrep user but wanted a little more flexibility. Normally, he’d like to search for whatever’s at point and he almost always wants to search his entire user directory rather than the current directory. When he’s in a Dired buffer, though, he just wants to enter the search string because the Dired buffer mostly has file and directory names.

He has an alternate form that does the same thing but uses the current directory. Between the two functions he has most of his needs covered. The amount of code he needed for this is minimal and easily copied to your init.el. If you’re not a deadgrep user, you can very easily modify it to call ripgrep directly.

I’m happy with counsel-rg but if you’d like a slightly better display and a bit more flexibility, Dyer’s post is worth a look.

Posted in General | Tagged | Leave a comment

Writing Prose With (Doom) Emacs

Over at (:doom discourse), Mediapathic has a very nice post on using (Doom) Emacs for prose writing. He’s a writer currently working on a book so he can offer firsthand experience. The unifying theme of his post is using the Org outliner to structure and control your writing.

It isn’t so much about first writing an outline—although you can do that if that method works for you—but using the outliner functionality to write your prose in any order that you like and then easily move things around to achieve a coherent whole. Much of his post discusses ways to do that moving of things around and to generate an overview of your work.

Mediapathic makes use of tags to control the export of his text and also to help him track characters and story arcs. He might, for example, include tags for the characters in a scene and also a tag identifying the story arc.

He explains how he captures and keeps notes for his writing. Capturing a note can be especially tricky because you don’t want to lose the context of what you’re working on to capture a note. The Org mode capture functionality is perfect for this: you can pop up a capture template to record your note and get back to what you were doing.

Mediapathic also discusses some ancillary functions such as word counting, writing with a “blank page” buffer, and Palimpsest, a way of removing text but storing it for later retrieval.

If you’re a writer or interested in seeing how Emacs can be used for prose writing, be sure to take a look at Mediapathic’s post. He’s a Doom Emacs user but everything he describes is easily duplicated by vanilla Emacs users.

Posted in General | Tagged , | Leave a comment

Inbox Zero With Mu4e Bookmarks

Years ago, I read and wrote about Ben Maughan’s excellent method of handling his email. It’s an inbox zero method that insists that for each message in your inbox you should

  1. Read and delete it, or
  2. Read and store it in a single folder, or
  3. Read and store it in a single folder and act on it immediately, or
  4. Read and store it in a single folder and create a TODO entry to act on it later

The important thing is that each message is acted on and removed from the inbox immediately. That makes it pretty easy to achieve inbox zero. When I first read Maughan’s post I was still using the Apple Mail app but I was immediately taken with his method and soon moved to mu4e, the mail client he used, and adopted his method.

That method works very well for me but some folks have a lot of email and require a more complicated method. Alain M. Lafon is, apparently, one such person and although he, too, uses mu4e, he uses the mu4e bookmark facility to organize his emails. You can read his post for the details.

For folks like me with a minimal email overhead, Maughan’s method is ideal. I’m inclined to think it would probably work well for those with more robust email requirements as well but I have no first hand evidence. If you think you need something stronger than Maughan’s method, take a look at Lafon’s post for another possibility.

Posted in General | Tagged | Leave a comment

Find Org Files

Howard Abrams has a nifty idea. Open an Org file by its file name, title, or the tags it contains. If, like me, the majority of the files you deal with are Org files this make a lot of sense. When you call org-find-file instead of find-file, you get a list that contains the file name, title, and tags. Since it’s mediated by completing-read you can narrow down the choices in the usual way. Once you make a choice, find-file is called with the file name from the chosen entry.

The design of the command is interesting. Rather than build something like a TAGS file for use by the command, everything happens dynamically in real time. Abrams leverages the speed of the modern grep ripgrep to build the completing-read selection list on the fly. Of course, it’s a little more complicated than that. First, ripgrep is called to gather the titles and then it is called again to gather the tags in each of the files in the target directory.

Most of Abram’s code is concerned with putting together the information and formatting each entry into a nice looking line for the user to select from. The use of ripgrep makes most of it simple. The main difficulty is gathering the tags because they can appear in an Org file in a couple of ways—see Abrams’ post for the details.

If you’re interested in playing around with his code, it’s available in his GitHub repository. It’s a nice piece of engineering and well worth studying for its ideas.

Posted in General | Tagged | Leave a comment

Cord and Cable Management

One of the things I really admire but that also makes me feel guilty is people who have all their computer cables under control and mostly hidden from sight. Every time I see one of those videos by someone who has their cables completely squared away, I think, “I should do that too.” Of course, I never do. My own cable situation is a terrifying mare’s nest of tangled cables that are virtually impossible to trace from end to end. It’s like an adventure game: I never know what’s going to happen when I unplug one of them.

I was, therefore, happy to see this Lifehacker article on Clever Ways to Manage All Your Cords and Cables. By no means is it a complete guide to making your cables look like those in the videos but there are a few good suggestions.

The thing I found the most useful were the links to some of the devices you can get to help with cable management. Some of those are simple such as velcro cable ties, which even I use, or cord clibs to route cables under a desk or counter. For more serious cable organizers there are under-desk cable trays, slotted cable managers, and various other useful devices. Take a look at the article to see them all.

Posted in General | Tagged | Leave a comment

Why Use Emacs, Vim, and Other Nerdy Software

Derek Taylor over at DistroTube has a video that asks the question, “Why should you use Emacs, Vim, and other nerdy software?” That’s not a hard question for Irreal readers but Taylor has an unusual perspective. Even though he constantly makes videos on the technical aspects of computing, he, himself, is not a developer and does not work in the field.

His education was in music but he soon realized that in order to optimize his
use of computers he needed to be able to adapt them to his own workflow. That, he says, entails two conclusions:

  1. You should be using (very) configurable software
  2. You should be using free (in the FSF sense) software that allows you to adapt it to your needs.

The part of the video that I found most interesting was the fact that Taylor has learned a little bit of several languages—including Haskel—just so he could configure his software. He’s written several Bash scripts to automate chores and data conversions but still insists he’s not a programmer—he’s just a guy who learned what he needed to so he could adapt his computing environment to his needs.

It’s interesting that non-engineers are more than able to master enough programming to customize their software. We sometimes think that making full use of Emacs (and the others) are beyond the capabilities of normies but Taylor’s video shows otherwise.

Posted in General | Tagged , | Leave a comment

Org-roam Workflow

Dominik Honnef has a nifty post that describes his Org-roam based workflow for taking notes and writing articles. It’s a very thorough and complex system that captures notes, articles that he reads on the web, articles for his blog, and miscellaneous notes as they occur to him. The system automatically maintains a bibliography and can massage a note intended for his blog to make it compatible with Hugo, which he uses to publish his blog.

His use of Org-roam is a little idiosyncratic. He doesn’t follow Luhmann’s Zettelkasten method as described, for example, by Ahrens’ How to take smart notes: one simple technique to boost writing, learning and thinking. Rather, he uses it as a sort of Wiki to save and index all his notes and the data they pertain to. Org-roam is perfect for that because it maintains forward and backward links between notes and makes it easy to maintain the relationship between notes and index them for easy retrieval.

His system is tightly integrated with Zotero to manage the papers he reads and takes notes on. He lets Zotero handle the bibliography and capturing of papers and websites. Although he provides much of his configuration in his long and detailed post, he doesn’t provide a link to his whole configuration so it may be hard to adapt his approach.

It’s a good post and well worth spending the time to read.

Posted in General | Tagged , | Leave a comment

A Nice Example of Using Bug-hunter from Sacha

Sacha Chua has a great post on using bug-hunter. She had a problem in her large Emacs configuration file and used bug-hunter to find it. If you’re like me—and apparently Sacha—you won’t use it very often but when you’re trying to track down an issue in your configuration, it’s just what you need. Every time I’ve used it, it found my problem quickly and easily.

For those not familiar with bug-hunter, it works by doing a binary search on your configuration: it loads the first half of your configuration and if the bug appears, it starts over loading the first quarter. If the bug is not present, it starts over loading the second half of the configuration. As with a traditional binary search, it recursively narrows down the line causing the problem until there’s only one left.

Sacha’s use case was a little unusual because the error happened asynchronously not at load time so she patched bug-hunter to capture when the offending application was being set up. Take a look at her post to see the details.

It’s a testament to the flexibility of bug-hunter that Sacha was easily able to coerce it into working for her situation. The usual use of bug-hunter is tracking down why Emacs won’t load but as Sacha’s post shows, it can be helpful in more general situations. The next time you need to figure out what part of your configuration is causing you a problem, you should give bug-hunter a try. It’s a great utility.

Posted in General | Tagged | Leave a comment