Ashton Wiersdorf On Organizing Papers For Research

Ashton Wiersdorf has a nice post on how he organizes papers, notes, and citations for his research. Of course, Emacs is at the center of that process and it’s another aspect of Emacs use that fascinates me. A couple of weeks ago I wrote about Kiran Gopinathan’s method of doing paper reviews, which overlaps considerably with Wiersdorf’s post. Two and a half years ago, I wrote how John Kitchin does the same thing.

Wiersdorf is a self-described Emacs maximalist but he is, nevertheless, also a heavy Zotero user. I’ve written about Zotero many times before. It a package for storing, managing, and building the bibliographies for papers. See this Wikipedia article for details. Wiersdorf’s post describes how he combines Zotero and Emacs to manage his research papers.

He also recommends the citar package for handling citations. John Kitchin’s Org-ref is another excellent choice for this but the citar package works well with Zotero. Lots of folks swear by Zotero and if you’re one of those people, citar may be for you.

The other major package that Wiersdorf uses is Protesilaos Stavrou’s Denote. He describes it as a Zettelkasten-like package. Gopinathan uses Org-roam for the same thing so you should take a look at both packages to see which you like best.

Finally, Wiersdorf uses the citar-denote package to integrate denote and citar. It ties citar and denote together and allows you to easily access papers from their citation. Take a look at Wiersdorf’s post for some details.

The most important thing, Wiersdorf says, is to use Emacs to build your own system. It’s not an editor, he says, but a toolkit to build your ideal editor. That’s differs a bit from my usual definition but is certainly a good description. Regardless, the goal is to make Emacs into an editor that meets your exact needs.

Posted in General | Tagged | Leave a comment

Blogging With Emacs

Chris over at Entropic Thoughts has some thoughts on blogging and Emacs. He’s conflicted. On the one hand, he yearns for a simple, static blog generator that he can understand. On the other hand, he uses Org Babel a lot and it’s an important part of his blogging workflow, which involves generating graphs in R for a lot of his posts.

He’d like to write a simple blog exporter that he understands and can modify but feels that it’s too hard to include the Org Babel functionality. I feel his pain. I use WordPress for Irreal and although it mostly works well, I sometimes wish I had a simple static generator that didn’t depend on a complicated infrastructure like WordPress. But every time I look into it, the effort doesn’t seem worth the gain and, as I say, WordPress mostly does a good job of meeting Irreal’s needs.

On the positive side, I do write my blogs in Org mode and have access to all its tools. Before my provider started blocking the XML-RPC protocol, I simply used Org2blog, which took an Org buffer and took care to exporting it directly to WordPress. These days I have a slightly more complicated process. I have a command that converts my Org buffer to HTML and saves it to the clipboard. Then I invoke WordPress and paste the HTML into its HTML input buffer. That’s not ideal but it’s pretty simple and I certainly understand it, at least until I push the WordPress publish button. Every once in while I try publishing with Org2blog because that is truly easiest way to go from Org to WordPress. Maybe I try that with this post.

In any event, it is possible to publish directly from Org even to a static blog fairly easily simply by converting the buffer to HTML and then doing whatever yo need to do to push it to your site.

Posted in General | Tagged | Leave a comment

Org-transclusion

Over at the OrgRoam subreddit, thephatmaster asks for some help in using org-roam to organize and write his research. As of this writing, he hasn’t gotten much response but there is a comment that recommends he take a look at org-transclusion. I hadn’t heard of it so I took a look.

The idea is that you can include content from another file in an org document by means of a link. It’s sort of like a # INCLUDE: but a bit more flexible. You can, for example, make changes in the destination file and have them reflected back to the source file.

You can also specify which lines you want from the source file and have only those imported. There’s also a nice integration with code blocks that the author, nobiot, talks about in this video (9 minutes, 45 seconds).

This looks like a mature package that’s been around for at least 4 years and is still be maintained with the last update 9 months ago. There’s a comprehensive manual available online as well as an info file. The software is available from GNU ELPA and so is easy to install.

This seems like a really good package that can help organize research and serve as a way of reusing research notes. Take a look at the GitHub repository for a list of ways you can use it.

Posted in General | Tagged , | Leave a comment

Bending Emacs: Episode 1

Álvaro Ramírez is trying a different way of communicating his ideas and projects to us. He has a new YouTube channel for this and has posted his first video, Bending Emacs – Episode 1.

It’s a very nice step-by-step explication of how to use his DWIM shell command to translate one or more video files to animated GIFs. I first wrote about DWIM shell command three years ago and have mentioned it several times since.

This problem was just what DWIM shell command was developed for: getting a handle on the complexity and confusion of FFmpeg command line options. Even though Ramírez does this sort of thing all the time, he has trouble remembering all the FFmpeg options. For this particular project he fell back on relying on an LLM to give him the magic formula but if you’re not an AI user, you can always read through the documentation.

After that, it’s a simple matter of using DWIM to capture the process. Ramírez also shows how to capture the process as an Elisp function so that it can be invoked seamlessly from Emacs whenever it’s needed.

Those of you who like to get your tech hits visually will enjoy this video. The blog post has a good précis of the video and the video itself is only 6 minutes, 15 seconds long so it’s easy to fit into your schedule.

Posted in General | Tagged | Leave a comment

The Author On Inhibit Mouse

Note

Sorry this is late. The Internet has been out all day here.

Post

James Cherti, the author of inhibit-mouse, has a blog post that talks about the package. Irreal wrote about the package last week but you may enjoy learning a little bit more about it first hand from its author.

Cherti discusses why you might want to disable the mouse and why he believes that inhibit-mouse is a better solution than the disable-mouse package. The majority of his post explains how to configure the package: it turns out that it’s very configurable. The information in Cherti’s blog post is much the same as the README on his GitHub respository for the package so you can read either one.

As I said last week, it’s really easy to generate unintended mouse actions especially if you’re working on a laptop with a trackpad. Inhibit-mouse is an easy way of preventing that and helping you wean yourself from Emacs mouse usage.

Despite what you read here on Irreal and elsewhere, there isn’t really anything wrong with using a mouse with Emacs or any other app but if you prefer not to or, if like me, you find yourself making inadvertent mouse clicks, inhibit-mouse or disable-mouse are fairly easy ways to solve the problem.

Posted in General | Tagged | Leave a comment

Eliminating Emacs “Bloat”

Over at the Emacs subreddit, emacff wants to know how he can eliminate Emacs “bloat”. It’s a harmless question and if it’s purpose was trolling, it largely failed as emacff received reasonable answers to his question. Still, it’s annoying. We see this sort of question all the time. Someone is in a tizzy because Emacs includes the doctor or tetris commands or something else the complainer doesn’t see the point of.

There are two answers to these complaints. The general answer is that Emacs is best thought of as a modern day Lisp Machine so of course it has functions not related to editing just as the original Lisp Machines did. The editor is just one function of many.

The specific answers is that these functions—and, indeed, many others—use virtually no resources except for a tiny bit of disk space. That’s because many Emacs functions aren’t loaded until they’re called so the only resources they’re using is the disk space that holds their code. On a modern computer that’s literally in the noise as far as disk space is concerned.

Emacs users are famous for spending a huge number of cycles fiddling with their editor configuration and I suppose worrying about removing unwanted functionality is another example of that. Except users tweak their configuration to improve their workflow. Eliminating tetris from your Emacs build doesn’t improve anything. It just wastes your time. To my mind, it’s like complaining about some application your OS provides but that you don’t use. Sure, you can get rid of it. Until the next OS update. Similarly with Emacs. All you’re doing is introducing a reoccurring task to be performed every time you update your editor.

It is, of course, possible to do what emacff wants but it’s a lot of work and requires technical skill that many users—especially those who ask questions like this—are unlikely to have.

Posted in General | Tagged | Leave a comment

Obscure Emacs Packages: tmr

Jakub Nowak has entered the Emacs Carnival: Obscure Packages sweepstakes. His entry is about tmr. For those of you who don’t know, tmr is a packages that allows you to set timers from within Emacs.

Until I got my iWatch last April, I never cared much about timers. I’d just look at the clock and wing it. My iPhone, of course, has a timer but I didn’t use it a lot. With the iWatch, setting a timer and having it with you all the time is easy and I got in the habit of using timers more than I had.

Still, if you’re working on your computer and need to set a timer for something you’re doing on that computer, it’s natural to have the timer running on the computer itself. The tmr package from Protesilaos Stavrou (Prot) is just what you need. You can set multiple timers in various ways and display a list of active and expired timers from within Emacs.

Take a look at the manual at the above “tmr” link to see the capabilities and how to access them.
Prot, of course, has contributed many packages and in the scheme of things this may seem like a small one but when you want to time something, it’s just what you need. Take a look and see if you don’t agree.

Posted in General | Tagged | Leave a comment

Adding Web Links To BibTeX Via Org Protocol

In a nice followup to yesterday’s post on Casual BibTeX, Charles Choi has another post on easily capturing a Web link to your BibTeX file. The idea is that you’re looking at some paper or other information in your Web browser and want to capture the reference to your BibTeX file.

The method works by abusing the Org protocol mechanism to deliver capture template information to a BibTeX file rather than an Org file. It’s really simple to set up. You merely add the capture template that Choi provides to your list of capture templates and you’re good to go.

It’s not completely automatic. You still have to specify the Author and Organization when prompted in the minibuffer but it’s much easier than entering all the information by hand and you have the advantage the the BibTeX schema will be respected.

If, like a lot of people, you locate your references on the Web, Choi’s trick will save you some time and effort. To be sure, it’s not as powerful as John Kitchin’s Org-Ref but as a simple method of capturing a BibTeX entry from the current Web site, it’s perfect. If you need more, take a look at the Org-Ref video linked above to get an idea of how far you can push the Web site to BibTeX idea.

Posted in General | Tagged | Leave a comment

Casual BibTeX

Charles Choi is at it again. He has a new addition to his Casual suite. This time it’s for handling BibTeX files. As you probably know, BibTeX files are essentially plain text databases of bibliographic data. They’re deeply integrated with LaTeX but are also supported by Emacs and Org mode.

The problem is that, being a database, the BibTeX file has a schema that must be adhered to in order to ensure proper operation with LaTeX and Org mode. Emacs, of course, has a mode to handle all that but Choi finds it less than adequate. The commands are hard to discover and remember and Choi believes they are insufficiently opinionated in enforcing the BibTeX schema.

His newest Casual app, Casual BibTeX, aims to fix this in the same way that the other Casual apps have addressed their domains. The app provides a Transient menu that makes remembering the Emacs commands easy and also enforces the BibTeX schema with a forms based interface.

If you find yourself routinely adding and editing BibTeX entries you should take a look at Choi’s latest Casual app. Even more to the point, if you only occasionally deal with BibTeX files, you have even more reason to embrace Casual BibTeX because you probably won’t remember the BibTeX mode commands or the format of the BibTeX schema.

Posted in General | Tagged | Leave a comment

Obscure Emacs Packages: Yankpad

Randy Ridenour has risen to the challenge from the latest Emacs Carnival on obscure Emacs packages. His candidate is the Yankpad package. I vaguely remember hearing about Yankpad (edit: I mentioned it here) but didn’t remember anything about it so I’m glad Ridenour mentioned it.

The TL;DR is that Yankpad is a sort of reimagined YASnippet by Erik Sjöstrand. It’s like YASnippet but different. One difference that I really like is that all the snippets are kept in a single Org file. That makes it easy to add, delete, and edit snippets.

Another difference is that instead of being organized by major mode as YASnippet is, Yankpad is organized by “categories”, which are groupings that you define. Those categories can be things like projects, classes, email, or whatever makes sense to you. You can also have global categories for snippets that you want available everywhere.

Another nice thing about Yankpad is that if you have YASnippet installed, Yankpad will pass its expanded text through it. That means things like YASnippet’s tab stops and escape into Elisp will work with Yankpad too. It seems like the best of two worlds.

There are several ways of specifying expansions and ways to trigger them. It seems like the typical “scratch an itch” project. Every time Sjöstrand needed a new feature or another way of adding snippets, he simply added it. The result is a nice package that can meet most or all of your snippet needs. Take a look at Ridenour’s post or the Yankpad GitHub repository for the details.

Posted in General | Tagged | Leave a comment