Elfeed-curate

Over at Bob on Medical Device Software, Robert Nadler has a nifty post on his new package elfeed-curate. The idea is to select various articles in the elfeed feed list—possibly annotating them—and export them in a publishable format. Nadler uses it to publish a periodic summary of articles that he found useful or interesting on his blog. The post shows an example of the output as well as providing a link to an actual entry in his blog.

The basic workflow is simple and fast:

  1. Mark any Elfeed entries that you want to curate and add an annotation if necessary.
  2. Select the marked entries and export them with the elfeed-curate x key.
  3. Publish the exported content.
  4. If desired, tag the exported entries for later use.
  5. Remove the marks from the exported entries.

There’s a lot of information about configuring and using elfeed-curate at its GitHub repository so be sure to take a look at that if you’re interested in the package. The only dependencies for elfeed-curate are Org and Elfeed. It’s available on MELPA so it’s easy to install. If you’re looking for an easy way to curate entries from your feed, this package seems like just the thing.

UPDATE [2023-10-06 Fri 17:44]: Erik L. Arneson has started using elfeed-curate to compile a list of interesting links for his blog.

Posted in General | Tagged | Leave a comment

Custom Tramp Methods

Ankit has an interesting post about setting up a custom Tramp method. His use case is a little complicated but the TL;DR is that his work involves writing software to control robots. For testing and development, they have an internal service that allows the instantiation of virtual robots that they can test their software on.

Once a virtual robot is created, they sometimes need to adjust the configuration or examine logs. This requires logging onto the server for the particular virtual robot in question—a complicated process. Ankit discovered that Tramp is actually quite flexible and allows the definition of different access methods. We’re mostly familiar with the SSH method that is the usual way of using Tramp but the SSH method is just one service in the list that Tramp uses to define its services.

Ankit’s idea was to define a new method that allowed him to “sign in” to any of the virtual robots and perform whatever actions were needed. That turned out to be reasonably simple. He also implemented a Tramp completion method to complete the name of the robot that he wanted to sign into. The whole thing took a surprisingly small amount of code.

This is another wonderful example of how Emacs can be persuaded to do whatever tasks your workflow requires. None of you are apt to need to replicate his workflow but his post is a great go-by for rolling your own Tramp service.

Posted in General | Tagged | Leave a comment

Moving Emacs From Windows To Linux

Emacs Elements has a video on how to move Emacs from Windows to Linux. That may seem a little nichey but Irreal feels duty bound to provide whatever assistance it can in helping people migrate off of Windows to a sensible system. Although the video is specifically about moving to Linux, the advice works equally well for macOS or any Unix system except, perhaps, for the package manager—brew, apt, etc—needed to install dependencies.

The basic advice is to move your entire .emacs.d directory to the new system and then tweak it to work in its new home. Mostly that involves, as you’d think, changing the Windows paths to Unix format and adjusting them to point to the right place. But there are a couple of less obvious aspects that need attention. One of those is your theme. The video recommends disabling the theme and reinstalling later. Similarly, pdf-tools can cause problems and the video recommends deleting it from Elpa and reinstalling once you get Emacs running.

All that sounds a little complicated but is really no more difficult than moving between some Linux distributions. I like to factor out system specific data to separate files and load the appropriate file based on the host system. That allows me to have a “universal” init.el that works on all my machines and even makes moving to a new OS relatively easy.

If you’re planning on moving off Windows, this is a worthwhile video to watch.

Posted in General | Tagged | Leave a comment

Ergonomics and Emacs

Over at the Emacs subreddit, rebcabin-r has a short post on Ergonomics and Emacs. By ergonomics he doesn’t mean the usual issues of RSI and overused pinkies. Rather, he’s talking about a comfortable environment for writing and coding.

His experience closely parallels mine. He says that he looks forward to using Emacs and can work in it all day without being exhausted. Other apps, even “good” apps like Mathematica and IntelliJ, wear him out. Just today, I was working on a computer without Emacs and it was excruciating. I felt like taking a nap afterwards.

When I’m using Emacs—and especially Org mode—work just flows and I know that I can export whatever I’m writing to whatever format I need. Similarly, if I’m coding I know I can compile and even run the code without ever leaving Emacs.

My experience is that mouse usage plays a large part in this. If I can avoid the mouse things go a lot smoother. Part of that is probably because I have a lot of the Emacs navigation bindings available everywhere in macOS. Another aspect to my optimized workflow is the use of Alfred to minimize mouse use. As I’ve learned more about Alfred and internalized its use, I’ve mostly avoided using the mouse except within Safari. Even there, I can use Alfred to bring up Websites so my main mouse use in scrolling and clicking on links.

Still, nothing is more comfortable and natural to me than Emacs. I’m with rebcabin-r: I’m never completely happy working on my computer unless I’m in Emacs.

Posted in General | Tagged | Leave a comment

Setting Global Keybindings

Emacs Elements has a nice video on how to set global keybindings. On the one hand, it seems elementary but there are plenty of wrinkles that many users are only dimly aware of. The video notes that there are many ways of specifying the key sequence for a binding. Many of them are there merely for backwards comparability and Emacs Elements recommends that you stick with the kbd function to convert easy-to-read key sequences into the appropriate internal format.

Still, if you’re like most folks, you have a mixture of methods. They all work and there’s no problem intermixing them so you can use whatever is most comfortable for you. The video describes the kbd method as a list, which is technically true, but it’s actually a function call to a function called “kbd”.

One of the things I learned from the video is that you can assign compound key bindings easily. For example, you can simply bind function-abc to <F7> a and function-xyz to <F7> b in the normal way. I always assumed that you needed to create a key map bound to <F7> to do this but, as the video shows, it’s much simpler.

The video is centered around using global-set-key for all this but as one of the commenters notes, as of Emacs 29 that has been deprecated in favor of keymap-global-set. The new functions appear to be merely a renaming for consistency so you needn’t rush to change your existing configurations.

Most Emacs users probably know most of the material in the video but it’s worth watching in case you can learn something new. I did and I’m 16 years or more into Emacs.

Posted in General | Tagged | Leave a comment

Org-side-tree

Grant Rosson has an announcement on reddit about his new package org-side-tree. The idea is that you can have a sidebar that lists all the headings in an Org file. That doesn’t sound too exciting but you can use the sidebar to navigate to headings within the Org file. Similarly, changes to headings in the Org file are reflected in the sidebar listing.

This may or may not seem useful to you but I’ve seen lots of writers who wanted exactly this capability for their writing projects. I think (but I’m not sure) that it’s something that Schrivener offers and is one of the most wished-for capabilities by those using Org mode for writing. It makes it easy to navigate between chapters and scenes in a novel or other long form piece.

Rosson has a video that demonstates the use of org-side-tree and its capabilities. It’s worth watching. There are a lot nuances involved with its operation that make navigating a large Org file easy and pleasant.

I don’t (currently) have any Org files that I need to traverse. Usually it’s just a matter of adding some text at the end but if I were working on a novel or long paper, I would definitely use this package. Take a look at the video and see what you think. The video is 6 minutes, 21 seconds so it such be easy to fit in.

Org-side-tree is not yet in Melpa but presumably it will appear there once it gets some traction.

Posted in General | Tagged , | Leave a comment

🥩 Red Meat Friday: A Case For Journalists

In a previous Red Meat Friday post, Irreal pondered whether politicians or journalists are the least respectable profession. It’s still an open question and while most people would probably declare politicians the winners, John Gruber has a post that provides compelling evidence for journalists.

Gruber’s post is a scathing takedown of a Wall Street Journal article entitled Inside Apple’s Spectacular Failure to Build a Key Part for Its New iPhones. The article is pay walled but Gruber’s post tells you all you need to know.

The article is about Apple’s “failure” to have their own 5G modem for the iPhone ready in time for the iPhone 15. The article claims Apple was still testing their modem just months ago. Anyone who knows anything about the Apple manufacturing pipeline, knows that that’s nonsense. Hardware for Apple products are set years in advance, not developed at the last minute.

The journal article has plenty of other nonsense, too. Read Gruber’s post for the details but there are a couple observations that even Irreal can make. First, this is the Wall Street Journal, not some sketchy NetZine. The Journal is arguably the best and most reliable paper in the country and there’s really no excuse for shoddy work like this.

Second, Gruber makes the case that the article is not just wrong but deliberately so. It is, he says, an obvious hit piece with conclusions so silly that no sensible person would accept them.

You all know that Irreal is an Apple shop but this is not fanboyism. It’s not even about Apple. It’s about a serious paper abandoning journalistic excellence and perhaps even ethics. Politicians should be worried: they have some serious competition.

Posted in General | Tagged | Leave a comment

Cybernetic Productivity and Emacs

Victor Dorneanu has an interesting post on Cybernetic Productivity and Emacs. Like Dorneanu, I was unfamiliar with the term but it has, apparently, been around since the early 2000s. It’s a strategy for dealing with your workload in the digital age. The TL;DR is summed up by its four principals:

  1. Automate and Speedup shallow tasks.
  2. Keep the information you need at your fingertips.
  3. Remove friction from communication.
  4. Simplify the extraction of actionable information from raw data

Dorneanu notes that he learned all this from Cal Newport, whose work he follows fairly closely. Newport, though, says the cybernetic productivity approach doesn’t work because, if I understand his argument, we’re too overwhelmed with work to have time to follow the principals.

Dorneanu disagrees and offers his use of Emacs as a counterargument. His post details how he used the four principals—except, maybe, the communication part—to write and publish his current post. The important part is that he did it all within the unified environment of Emacs. He lets Emacs handle the routine parts of publishing a post and uses Elfeed to easily retrieve the necessary required information.

Finally, he notes that the recent integration of Emacs with the various AI/ML services provides a very nice and efficient way of sifting through data looking for the wheat among the chaff. I’d judge that more promise than fact right now but I do take his point.

Posted in General | Tagged | Leave a comment

Using Gnuplot With Org Mode Tables

James Dyer has an interesting post on using Gnuplot to plot data from Org tables. Gnuplot is my go to utility for plotting data but its syntax is, to put it mildly, convoluted and since I don’t use it all that often, it’s always a struggle to get a working graph. Dyer’s method seems less complicated—at least for simple cases—so it’s worth taking note of how he did it.

This post is mainly a note to myself but other occasional Gnuplot users who want to produce graphs from the data in an Org table may find it useful too. The TL;DR is that you specify a #+PLOT: line for the table that lists the parameters for the graph you wish to plot.

As Dyer illustrates, you can also easily produce a bar plot within the table itself with the orgtbl-ascii-draw command. It’s use is pretty much self explanatory from Dyer’s post but it’s also documented at the #+PLOT link.

Dyer’s post is short but has a surprisingly useful kernel. It’s definitely worth taking a look at it if you ever need to plot data contained in an Org table.

Posted in General | Tagged , | Leave a comment

Periodic Reminder: Emacs Bindings in macOS

Once again, as is occasionally the happens, I’ve stumbled across an Emacs user who discovered that some Emacs keybindings work in macOS. This user, sudeenhux, realized that he could navigate in the Apple Mail app with the normal Emacs bindings. He had no idea what was going on and took to reddit to ask what he had done to enable this. When reddit told him this was built in to macOS and worked with all macOS applications, he was overjoyed.

The thing is, of course, that what sudeenhux discovered is only half the story. As I’ve reported many times before—most recently here—macOS lets you configure your own bindings for its navigation commands. That would be a pain if you had to do it piecemeal but the way it works is that you put the bindings in a file and everything happens automatically. Even better, someone has already done the hard part and produced the file so all you have to do is download it and install it in the proper place. All the details are in the above link.

As a bonus, I recently got tired of not having Ctrl+Delete work in all macOS apps so I added an entry to enable it. That shows how easy it is to add your own bindings, assuming, of course, that macOS has a command that supports it.

I’m always surprised that so many people don’t know this so I like to remind everyone once in a while. Some of you may be tired of hearing about it but to those who don’t already know, it’s a revelation.

Posted in General | Tagged | Leave a comment