Beorg Review

One of the frustrations for Org mode users is getting access to their data on mobile devices. The situation is a little better in the Android world, where one can run Emacs on their phones but on iOS the choices are limited. One choice available to us living in the Apple world is beorg. It’s a fairly recent entry to the Org/iOS world and appears to have the potential to be an essential application for iOS users.

I’ve been following beorg development and wondering if I should install it as an way of getting access to my Org files from my mobile devices. I was, therefore, happy to see Chris Rosser’s review of beorg. At first, I was disappointed. It’s pretty clear from the review that Rosser doesn’t really understand Emacs or Org. He appears to think that Org is fundamentally a task manager but that was never its primary purpose even though many use it for that. His review is informed by that notion and is, therefore, not as useful as it might otherwise be for people like me.

After reconsideration, I realized that Rosser’s review is useful for folks who don’t know Emacs and Org and are merely looking for a way of accessing their calendar or task list from their mobile device. If you’re one of those people, take a look at Rosser’s review. If, like me, you’re wondering if beorg might be the answer to moving your Org data to your mobile devices, this review probably isn’t what you’re looking for.

Posted in General | Tagged , , | Leave a comment

Emacs ImageMagick Interface

If you’re in the intersection of Emacs and ImageMagick users, Blimp
may interest you. It’s an Emacs interface to the ImageMagick commands.
Take a look at the README on GitHub to see how it works and what it
can do.

I haven’t used ImageMagick in a long time so I haven’t tried Blimp. If
you do work with ImageMagick, this is a chance to integrate one more
workflow into Emacs. It almost makes me wish I had a need for ImageMagick.

Posted in General | Tagged | Leave a comment

Norvig’s Paradigms of Artificial Intelligence Programming Open Sourced

If you have any Lisp experience at all, you almost certainly know about Peter Norvig’s classic Paradigms of Artificial Intelligence Programming (PAIP). It’s an excellent introduction to Lisp and, of course, Artificial Intelligence. Via Rainer Joswig we learn that PAIP has been open sourced.

The GitHub repository contains the book in PDF, Text, epub, and Markdown source. The example lisp code is also included. If you have any interest at all in Lisp—and in particular in Common Lisp—you should definitely take a look at this book. The markdown files are by chapter so it’s easy to sample them directly in GitHub, which will render the Markdown in a reasonable way. If you find that interesting, you can download the PDF or epub files for local reading.

Posted in General | Tagged , | Leave a comment

Displaying Alerts from Eshell

Jürgen Hötzel has a nice post on solving a problem many of us have. Suppose you start a long running process—a make, say—from Eshell and then go on to do other work. It’s easy to lose track of the process because the original buffer may be buried and nothing might happen for a long time. Hötzel wants to be notified when the process completes or if it terminates abnormally.

It turns out to be absurdly easy to do that by leveraging John Wiegley’s alert package. Hötzel has the alert set up to show in the minibuffer but the alert package supports many different styles of alerts. For example, if you’re a Mac user and have Growl installed, you can send the alert to Growl. Another nice feature of the alert package is that you can add rules to filter the alerts. For example, Hötzel added a rule to not display the alert if the original buffer is visible. That helps cut down on noise.

Hötzel triggers his alerts by hooking into the eshell-kill-hook but it’s easy to see how you could generate many other types of alerts either by using other hooks. Take a look at Hötzel’s code; it’s very minimal and simple and mostly decides whether the alert should have “normal” status (when the process terminate normally) or “urgent” status (when the process terminates abnormally).

Posted in General | Tagged | Leave a comment

Happy Birthday DMR

Today is Dennis Ritchie’s birthday. Take a moment to remember the man who, along with Ken Thompson, invented Unix and changed our world. Those of us in computer related fields would be working in a completely different environment were it not for him and Ken.

Sadly, Ritchie died in 2011. When he was still alive, I used to check in with his home page everyday to see what new splendor he had revealed. Most of the public have no idea who he was or what he did but his work touches their life everyday in a multitude of ways. If you’re doing anything with a computer—using a cell phone, browsing the Web, using a word processor, or whatever—the chances are you are using some of Ritchie’s work.

Geeks everywhere miss him and are grateful for his contributions. This is a good day to remember him and those contributions.

Posted in General | Tagged , | Leave a comment

Firefox’s Plans for Fighting Tracking

The Firefox developers at Mozilla are no longer going to tolerate the miscreants in the Adtech business. On their blog, they lay out their plans for dealing with tracking. Among other things, they will be stripping cookies from tracking sites and not allowing them the use of local storage. Take a look at the post for what they’re doing and why they’re doing it. The Safari browser is also addressing the problem in similar but slightly different ways.

I wish the other browser vendors would also get serious about tracking. What I’d really like to see is fine grained control over cookies. As it stands, I have to manually delete cookies several times a day. Why can’t I specify something like, “Except for sites A, B, and C, delete all cookies at the end of each session or when I push a button.” That would enable innocuous sites like weather or TV Guide to store their configuration between sessions while still getting rid of the riffraff.

Safari makes it particularly difficult to deal with cookies because they store them in a database. When they’re just text files, it’s easy to write shell scripts to get that fine grained control. Still, Firefox’s initiative is welcome and I hope that they and the other vendors will give us still more control over our browsers. There’s no reason that the browser vendors should be enabling the reprehensible behavior of Adtech.

Posted in General | Tagged , | Leave a comment

Emacs → VSCode → Emacs

Bryan Willson Berry over at Hotair.tech recently moved into JavaScript development. Although he is a longtime Emacs user, he didn’t like the JavaScript support in Emacs so he moved to VSCode. VSCode is the new editor hotness, of course, so I was interested in what he had to say. I know a lot n00bs are drawn to VSCode but I wanted the opinion of someone who had experience with a serious editor.

Berry found that VSCode is an excellent editor and that it was especially good for JavaScript programming. He also found that although VSCode was better than Emacs for JavaScript, Emacs was better at almost everything else. That and the fact that he used Emacs key bindings in all his applications and therefore had serious muscle memory issues—See? I’m not the only one—caused him to move back to Emacs.

Happily, he was able to find some tools that helped with his JavaScript programming so the story has a happy ending. He still believes that VSCode is a superior for editing JavaScript but that Emacs is better in so many other ways that it makes sense to stick with it.

It’s always pleasant to have one’s biases confirmed, of course, so we Emacers probably shouldn’t read too much into Berry’s experience. Still, that experience does confirm my preconceived notion that while other editors may do this or that better, all-in-all, you can’t beat Emacs. But then, I would say that, wouldn’t I?

Posted in General | Tagged | Leave a comment

EmacsCast #4

Rakhim Davletkaliyev is back with another Emacs Podcast. He’s got a new website and—in accordance with the cunning plan devised by the Emacs mandarins—has been seduced into using Hugo and Emacs to post to it. The plan was so successful that he’s also moved his other sites over to the same model.

After a brief discussion of the need for all of us to support those selfless souls who labor for free on behalf of Free and Open Source software, he moves on to the podcast’s main topics: Spacemacs and Doom. He gives a very balanced account of the pros and cons of each distribution and discusses why you might want to use one.

His main conclusion is that Spacemacs in particular is aimed at immigrants from the Vim world. It’s certainly possible for a n00b to start with Spacemacs but Davletkaliyev thinks that unless you’re coming from Vim it’s probably better to start with vanilla Emacs. Listen to the podcast for his reasoning about that. Even so, many beginners, after spending some time trying to grow their own configurations, may find the preconfigured environments in Spacemacs or Doom a better fit for their needs and move to one of them.

He doesn’t discuss one of the major reasons folks experienced with vanilla Emacs move to Evil, Spacemacs, or Doom: RSI problems. There’s no doubt that the Vim keybindings are much easier on your wrists than the Emacs ones are. Still, many of us have used vanilla Emacs for many years without a problem so whether or not this is an issue will vary with the individual.

The podcast is 36 minutes so plan accordingly.

Posted in General | Tagged | Leave a comment

A Swiper Tip

In case you’re a Swiper user and missed it in yesterday’s Languages for Text Processing Post, akirakom’s Emacs subreddit post contained a tip for using Swiper. In the middle of a Swiper search you can type Meta+q to start a query-replace.

I couldn’t find that anywhere in the documentation but you can see the doc string by pulling up the documentation for swiper-query-replace. The code is here but it basically just asks for the replacement string and calls perform-replace just as query-replace does.

Posted in General | Tagged | Leave a comment

Languages for Text Processing

The other day, Xah Lee, as he is wont to do, provoked a spirited debate on Mastodon about the usefulness of Emacs Lisp for text processing. Lee wrote that although he has used Elisp for text processing for many years, he’s lately come to believe that that was a mistake.

His major complaints appear to be Elisp is much slower than, say, Python or Perl and that its regular expression system has a nonstandard syntax that, among other things, requires too much escaping. Lee is undoubtably right; those are shortcomings with Elisp. The question is how much they matter. I’m inclined to agree with Vasilij Schneidermann that they don’t matter. That’s just my opinion, of course, and no more valid than Lee’s that they do matter.

Regardless, that discussion inspired a post over on the Emacs subreddit by akirakom that asks what languages people use for text processing. Most respondents said that their tool of first choice was Emacs—it is the Emacs subreddit after all—but they had a list of other tools ordered by difficulty and power of each tool. The lists were typically something like (Emacs bash sed awk Python C). Some preferred Perl to Python and awk and others substituted some other compiled language for C.

I pretty much agree with the above list except that I would substitute Scheme for Python. Really, though, I almost always just use Emacs and Elisp.

Posted in General | Tagged , | Leave a comment