2022-04 Austin Emacs Meetup

There was another meeting of EmacsATX, the Austin Emacs Meetup group last week.

The presentation was on Rational Emacs. It is a configuration meant for experienced Emacs users.

The presenter went through the github repo. The principals of the project are as follows:

  • Minimal, modular configuration
  • Works well in the terminal
  • Can be integrated with a Guix configuration
  • Works well with Chemacs2
  • Helps you learn Emacs Lisp

This is geared towards experienced Emacs users who want some help with a configuration, but don’t need every popular mode on the planet, as you get with Prelude, Spacemacs or Doom. Some attendees tried it out during the presentation and liked the fact that it started up very quickly.

You’re welcome.

Image from “Evangelia [Evangiles dits de Loisel]”, a 9th century manuscript housed at the Bibliothèque nationale de France. Source gallica.bnf.fr / BnF; image assumed allowed under public domain.

2022-03 Austin Emacs Meetup

Last week there was another meeting of EmacsATX, the Austin Emacs Meetup. This time there was a pre-determined topic: debugging in Emacs.

Before the main topic, one member mentioned rational-emacs, a new Emacs configuration. This was started by the same people behind System Crafters. They have a channel on YouTube with playlists about Emacs, Emacs Lisp, Org Mode and GNU Guix, a Linux distribution I had never heard of (home page here, Wikipedia page here). You can find links to all the playlists and video series on the System Crafters site. I do not remember the name of the member who talked about rational-emacs, but they have made some contributions. They also talked about skeleton, which I guess is a templating system (my notes are vague on this). Several commenters on this Reddit post say that skeleton is part of base Emacs, but I did not see skeleton in the index page for the Emacs documentation. rational-emacs will be the topic next month.

The main topic was debugging in Emacs. The reception from the group was positive and people said they learned a lot. Some people did not know there were two ways to debug: using the Lisp debugger and using Edebug.

I had a hard time following along with the examples. I do not like using key chords anymore if I can avoid it. I use some for the common commands that I learned years ago, but for new things I prefer using M-x and typing the function with Ido and smex performing autocompletion for me. I thought this would be better than remembering lots and lots of key chords, but this time my way did not help. The presenter just said, “We hit control-this meta-that, and the universe opens up in all its heavenly glory”, and I was totally lost. I know most people prefer key chords, so I didn’t say anything. I was able to step through a function using the steps the presenter gave, but when I tried it a second time, nothing happened.

I did find a few links for future reference: A couple of pages on Endless Parentheses here and here, and the chapter on debugging in the Emacs Lisp manual.

Another member made a short presentation on a mode he made for Portable Game Notation (PGN), a text format to record moves in chess games. He based it on prog-mode using define-derived-mode and make-syntax-table. He said it was a simple mode and for now just did some syntax highlighting.

You’re welcome.

Image from the Alaverdi Gospels, an 11th century Georgian manuscript housed in the Georgian National Museum; image from Wikimedia, assumed allowed under public domain.

2022-02 Austin Emacs Meetup

Last week there was another meeting of EmacsATX, the Austin Emacs Meetup.

As usual, there was no set topic. I said one reason I have nothing to offer is that while I have still not finished Rainer Konig’s Org tutorial on Udemy, I have gotten a lot of mileage out what I have learned. Emacs people have a reputation for spending as much time configuring their systems as using them. I still pick up little bits and pieces and make small changes here and there, but for the past several months I have just been using what I know.

The official topic was “Emacs Social”, and there was as much general socializing as there was talk about Emacs. I mentioned that I have been putting notes online and that Sacha Chua picks them up, and nobody had any objections. We seem to be one of the more active Emacs meetups. One person mentioned that there are active Emacs groups in San Francisco and Berlin. Whoever mentioned the Berlin Emacs meetup said their presentations are in English, and one of their most frequent presenters lives in Spain.

We had a few people from out of town. There was a professor of biology at a university in Oklahoma. I asked him if had heard of Clasp, which is a Common Lisp implementation that was made to interoperate with C++ libraries. I think the guy who started it is a professor of biology or chemistry. The professor in Oklahoma said he had not heard of it, and said it looked very interesting. We also had a C++ programmer in California. I think he works on LIDAR and embedded systems.

There were quite a few Clojure developers (and aspiring Clojure developers) there. There is some overlap with the Austin Clojure group.

There was some talk about Helm and Selectrum. I tried Selectrum in my Prelude config, but I did not like it. My Emacs config is based on the Brave Clojure config, and it uses Ido for completion (see Emacswiki page here). I tend to do a lot of things with M-x and autocomplete instead of remembering new chords when I learn new modes. I think the Brave Clojure config includes Smex, which uses Ido. I wish Ido and Smex listed the functions in alphabetical order. Maybe it can. I will look at the manual more closely. I tried Ivy and Selectrum in Prelude, but while they do list things alphabetically, they list them veritically, push up the status bar, and eat up screen real estate. I prefer keeping the options in the status bar and not obscuring the file I am editing.

I tried Helm in Prelude, and I got this error: Warning (initialization): An error occurred while loading ‘/home/ericm/.emacs’: File error: https://melpa.org/packages/async-20210823.528.tar, Not found To ensure normal operation, you should investigate and remove the cause of the error in your initialization file. Start Emacs with the ‘–debug-init’ option to view a complete error backtrace. And there was some grumbling about packaging in Emacs. The guy who complained about packaging a couple of months ago was not there that night.

There was some discussion about VS Code. I don’t remember how the subject came up, but people into Emacs do not have much interest in or love for Microsoft. I mentioned post on Hacker News asking why do people still use Emacs and vim, and a few people posted that in the past decade we have seen a lot of editors be the hot new thing: Eclipse, Sublime, Atom, Lighttable, now BS Code. Meanwhile, Emacs people just kept using Emacs.

One person asked if anyone used Gnus or used Emacs to read email. The Organizer mentioned that this topic comes up quite a lot. Perhaps someone will present. One person pointed out they tried to read their GMail with Emacs, but they got tired of playing cat and mouse with Google. Apparently Google keeps changing the requirements to hook into Gmail, and this person decided it was not worth it.

Someone then shared their screen showing a Rubik’s cube in Emacs. Then people started talking about using robots to solve and scramble Rubik’s cubes. I had to drop off at that point, but it felt like Emacs had left the building.

There might be a topic next time.

You’re welcome.

Image from WL 139, a 12th century manuscript housed at the Chester Beatty Library; image assumed allowed under Public Domain and CC License.

2022-01 Austin Emacs Meetup

Last week there was another meeting of EmacsATX, the Austin Emacs Meetup.

I discovered that the two most recent write-ups were included in Sacha Chua’s Emacs news roundup. I guess that makes me the unofficial scribe.

If you have read any of these recent write-ups, you will not be surprised to read there was no set agenda. Do not make this a drinking game. However, The Organizer [Note 1] did ask for topics at the beginning rather than at the end.

Member #1 [Note 2] spoke about sockets and domain sockets for about ten minutes. When we decided to start talking about Emacs, there was some silence.

Member #2 started talking about projects in Doom Emacs. Their Org file had different level in different font sizes. Their Emacs terminal looked like a tag cloud. I do not know much about projects in Emacs. I will add that to my ever-growing to-do list in my ever-growing Org file. I have worked with projects before (Maven, Gradle, Rails, etc), but I am just not sure what Emacs has to offer. Perhaps there is an EmacsConf video that talks about projects. I just started going through the EmacsConf videos; I am on the third for 2013.

Member #2 also talked about circadian. It is a mode that changes your theme based on the time of day.

Members #2 and #3 started talking about themes. Both of them worked on themes. Member #3 pointed out that many themes do things differently, and if you switch themes that some of the attributes of the first theme are still in the system. Perhaps something could be done about the process of making themes.

Lastly people started comparing Clojure to Emacs Lisp. The consensus was most people liked Clojure better, mostly due to its data structures and destructuring abilities. The Organizer implemented the Clojure comment macro in Emacs Lisp.

You’re welcome.

Note 1: “The Organizer” does sound like it could be a cool nickname if you know how to work it. “I am here to kick ass and run through our agenda, and as usual we don’t have an agenda.”

Note 2: I give people numbers since I do not know if they want their names in this write-up. Think of it as the stoner’s version of the Chatham House Rule. I figured that numbers are a little clearer than “someone said this, and someone else said that, and a third person said something else”. For the record, there were about seven people there.

Image from Gospels Codex 56, a 9th century manuscript of the  Archbishop’s Diocesan and Cathedral Library in Cologne, Germany, assumed allowed under Public Domain.

2021-12 Emacs Meetup and Other Thoughts

It is time for another update on Austin Emacs, along with some observations.

There was a meeting of the Austin Emacs Meetup early in the month. As always, there was no set topic.

There was some discussion of the Emacs Docs website. Generally the feedback was positive.

One guy started demonstrating Org Roam. It looks pretty interesting, but for now I am still getting the hang of plain Org. He also showed us a couple of packages: gh-notify for managing GitHub notifications (I have no idea if it works with git outside of GitHub) and code-review.

There was also a lot of discussion around zettelkasten. Here is the Wikipedia page. Here is a site telling you how to do it; it’s hosted in Germany, so I guess it’s the official zettlekasten site. Zettlekasten.org is a site by a group that tried to put a knowledge management system on the blockchain. It does not look like there has been any activity for a while. Perhaps you can use your coins to buy a non-fungible Olive Garden.

I mentioned again I plan on going through the EmacsConf videos from prior years, as well as for 2021. None of us had started looking at the 2021 videos. Some of them look interesting. I mentioned that there were two that I thought I would not find interesting: The use of Org mode syntax outside of GNU/Emacs by Karl Voit, who has a few good pages/posts about Emacs and Org on his site, and Extending the “model” of Emacs to other applications. An Emacs conference discouraging the use of Emacs seems a bit odd. I will give them all a chance, but on the surface I don’t think I will like those two.

Every time there is a thread about Org mode on Hacker News, there is always some jackass complaining that Org does not work on mobile. Frankly, I have little interest in mobile. I like the bigger keyboard and bigger screen on my laptop. I hate typing on a phone, and I do not want to clutter my phone with a lot of apps. I do use the clock/stopwatch app a lot, but that is it. I don’t need to use it for banking, credit cards, paying utility bills, paying for gas, or getting an app for every store I walk into. And while I am interested in technology, I have no desire to ever do any job on my phone.

I think doing Org on a phone is stupid. Yes, you have to learn Emacs, but that also yields benefits. There was a thread on Hacker News asking why so many coders still use Vim and Emacs. A few comments pointed out that in the past decade, we have seen a few editors come and go: Sublime, Atom, Light Table. Now it’s VS Code, but who knows how long it will last? (And frankly I do not trust Microsoft one bit.) Meanwhile, while everybody else was changing their workflow every couple of years, the Vim and Emacs people kept doing what they were doing. On a phone, you will always be limited by the small screen, and whatever limitations Apple, Google or Microsoft put on you. With Emacs, the sky is the limit.

I think people should stop trying to get Org working on mobile, and just use it where it does work. Sort of like everybody should learn how to read S-expressions and stop trying to make Lisp into Python (see here and here). A lot of people want the capabilities that S-expressions give you without using S-expressions, so they create wrappers and languages around it. It just seems like it would be easier to use S-expressions.

Like Lisp, Emacs is different than everything else, takes a lot of effort at first to get comfortable with, but after a point continues to yield dividends. As opposed to a lot of GUI and mobile apps, which seem easy at first, but eventually you hit a wall. Maybe I am trying to live life on hard mode, but I think this is the way to go. Although I am not doing accounting in plain text (see Hacker News posts about plain text here, here, here, here, and here is a link to the Plain Text Project).

At the Emacs meetup I mentioned a thread I saw on the website for Obsidian, which is another knowledge management system using Markdown. The thread starting with someone asking why they chose obsidian over Emacs. One person said that they couldn’t use Emacs on mobile. They needed seven apps to replace Emacs. That is the point of learning Emacs, and why I am not interested in mobile.

I am still converting all my text files into org files, and choosing where to put headings and how to group them. This is taking longer than I thought. I have a lot of deep thoughts. But I am in org mode every day. Ideally I would like a job where I am in Emacs all day. I am getting really tired of using MS Office, or MS anything.

You’re welcome.

Image from “Evangelia quattuor [Les quatre Évangiles, en latin]”, a 10th century manuscript housed at the Bibliothèque nationale de France. Source gallica.bnf.fr / BnF; image assumed allowed under Public Domain.

2021-11 Emacs Meetup

There was a meeting of EmacsATX, the Austin Emacs meetup, last week. There was no set agenda.

I started off by mentioning that while I have not continued working through Rainer Konig’s Org tutorial, I was using Org a lot more. I am using it to keep track of tasks. I am converting a lot of text files into org files, since a lot of topics in the files appear and re-appear. I also mentioned that I had started using the Emacs Desktop to save sessions. A lot of people were not familiar with that term. I don’t know why Emacs calls the file that saves session information the “Desktop”. Perhaps that is a holdover from the PDP-11 days. I used to keep an instance of JEdit open, and I am slowly phasing that over to an instance that uses the desktop. I also made an alias with “–no-desktop” so other instances to not try to use the desktop file. Since a lot of email is happening on GMail and Outlook, and the Emacs browser is not the greatest, it might be hard to do everything in Emacs these days. But I am using it more and more.

I am also using Org to write this post.

Anyway, one guy ranted about MELPA. He might make a blog post about it. I know some people do not think that Emacs handles packages and dependencies very well, but from what I have read, it used to be worse than it is today.

A few people talked about using LSP, the Language Server Protocol with Emacs. It started with VSCode. I think the idea is to make it easier for an editor to work with different programming languages. I don’t know if this makes language modes unnecessary in Emacs.

There is nothing planned for the next meeting. I pointed out that since EmacsConf 2021 is between now and then, we could watch the videos on our own and talk about them. A few people seemed to like that idea. I have a task tree in an Org file to watch the videos from prior years. This was the first meeting in a few months in which Sacha Chua, the organizer of EmacsConf, was not present.

You’re welcome.

Image from Poussay Gospels, a 10th century manuscript now housed in the Bibliothèque Nationale de France, image from Biblissima Portal, assumed allowed under Public Domain. Luke’s symbol was an ox; it kind of looks like St Ignucius giving him Emacs.

2020-12-28 Update

There was another Emacs meetup in early December. The turnout was pretty good. I think there were six or seven people online.

One of the presentations was about building regular expressions in Emacs. A few people were frustrated that Emacs reg-exes are not compatible with Perl or Java reg-exes. I don’t remember too much about the other presentation topic. I am not really interested in dealing with package managers right now.

I pointed out after the presentations that the 2020 EmacsConf had just happened the week before. I asked if anyone knew about it, but nobody did. I only knew about it because I had looked at Sacha Chua’s website a couple of days before the meetup. At some point I will go through some of the videos that look interesting to me. Many of them are 10 minutes long. There are quite a few on org-mode.

On the front page there are links to EmacsConfs for prior years.

One of the 2020 talks was a guy who used Emacs to write a novel. I wonder if it has or will get published. I have never written or published a book; I thought that the publishing industry revolves around MS Word (which I hate). Norman Richards was at the meetup, and he has published a few books (a page about him on O’Reilly’s site, and a couple of books at Manning that he contributed to here and here). He said that not all human editors require MS Word.

Afterwards, I ordered the org-mode course from Udemy. It was on sale and they said it never expires, so why not?

You’re welcome.

Image of Deesis from a 10th century manuscript made at the Monastery of Great Lavra on Mount Athos; image from Wikimedia, assumed allowed under Public Domain.

2020-11-29 Update

I attended the local Emacs meetup a few weeks ago.

I mentioned I am getting into Org mode. Someone said I should look at Org-Agenda. There is also Org-roam which attempts to replace Roam in Org-mode. It looks interesting. I will put it on my ever-expanding to-do list.

We also talked about how there are a lot of emacs start kits out there, like Prelude, Doom Emacs and Spacemacs. I think there are a few others. I noticed that a high percentage are based on evil-mode. The appropriately named Evil mode is a vi emulator running in Emacs. I wonder if there was a push a few years ago to get vi people to move to Emacs, or if something happened in the vi world to make some people look for an alternative.

I first got into Emacs about 20 years ago at my first programming job. All the developers had Sun workstations. Someone showed me vi, and it was (and still is) bizarre. I think the idea of modes is stupid (at least the way vi implements them; “modes” in Emacs are more like add-ons or plug-ins for other apps, and you can run several at once). Someone showed me Emacs. I said “What happens in Emacs when you press the ‘a’ key?” The guy said: “The letter ‘a’ is added to the file whereever the cursor is. Just like almost ever other text editor on the planet.” I told him to show me more Emacs.

If you had to toggle a database between read-mode and write-mode, you would quickly find another database. Vi is like the Unix version of the Microsoft paper clip: “I see you are editing text. Do you want the text to actually appear in this file?” Yes, that would be great. And to all the people who say they use vi because it is on all Unix systems, that is not too different than people using Windows because that’s what the computer came with, or using Office because everybody else does. That’s not better, that’s just inertia.

WRT which is better: Emacs can emulate vi, but vi cannot emulate Emacs. I think that settles it.

I did start making a few tables in org-mode. My tire pressure sensor kept going off, but it does not tell me which tire. So every time I filled my tires up, I would fill up a tire, turn my car back on, and see if the sensor was still flashing. I would repeat that for each tire until I was clear. It only took a couple of times to figure out it was the same tire. But I made a list with the date and which tire. I realized one way to learn org-mode is that every time you have a problem, ask yourself if org-mode can help. So now I know a little about tables in org-mode.

I still have an org-file that I am using as a to-do list. I think that every month I will update it by getting rid of all the tasks that are done, and archive it.

There is another Emacs meetup this week. Perhaps knowing more Emacs users will help me in my goal of finding a job where I do not have to use any Microsoft software every. Keep in mind I am not an Apple person; I have realized that when I tell people I do not want to deal with MS, they just assume that I am an Apple fanboy.

I am almost done with the Go tutorials on Pluralsight. I have one more to go through, then it is back to Spring and on to Kotlin. But I might take a detour into the one Elixir course. I am still tired of typing “if err != nil”, but I found my chi-balls, so typing does not hurt as much.

One of them took me a while. The instructor was using MySql, and I decided to use Postgres. I went to the list of Go SQL drivers and I used pq for a while, but since it is deprecated I switched to pgx. I had to upgrade my version of Go, and I had to change some of the code for the driver. With pq I could just use the standard Go libraries, but with pgx your code has to become pgx-specific.

At some point, I plan on writing more about why I am interested in Lisp, and also thoughts on my ideal job. Before I got the job I am at now, I interviewed with National Instruments. I thought it went well, up until the final question. He asked me to describe what I thought would be an ideal job within the company. How can you get that wrong? Maybe I was supposed to say that I would have to work there and see what they have to offer and what it is like before I could answer that question. Or maybe I did, and for some reason that was the wrong answer. Or maybe I said something that made him think I was crazy. But lately I have been thinking about that question, and I will start writing down some answers.

You’re welcome.

Image from “Coislin 195”, a 10th century manuscript housed at the Bibliothèque nationale de France. Source gallica.bnf.fr / BnF; image assumed allowed under Fair Use.

Starting Org Mode

I have started trying out Org mode.

Granted, this is not the first time. But this time I am going to go slowly. I keep reading posts from people that Org changed their life, and my life certainly needs changing. My ideal job would involve no Microsoft products at all (do not assume I am an Apple user when I say that). I need to learn more about the useful tools if I want that to happen.

So far there is not much to report. I am making a text file with commands and keybindings as I learn them. I will eventually put it on my site for my own reference. If other people find it useful, that’s great. At every job I have ever had, there are always a lot of people who want to keep everything in their heads. It’s like there is some contest to see who can keep the most mental plates spinning. I really hate playing that game. Hopefully, Org mode can reduce my cognitive burden.

You’re welcome.

Image from Minuscule 585, a 10th century manuscript housed at the Biblioteca Estense; image from Wikimedia, assumed allowed under Public Domain.

Emacs Tricks With Go

I am still going through some Go tutorials. I am using Emacs as my editor.

There are some things that the go mode does not handle well; I don’t know if this is a shortcoming in the mode, or if I am using an old version, or if there is some conflict with another mode I am using. It’s actually a minor point.

It does not indent switch statements the way I want. All the “case” statements and everything inside them is indented as far as the “switch”. Hitting tab does not work. I have to hit “space” for every line. It gets pretty tedious.

But I found a way to do it:

  • set-mark-command (C-@) and highlight the region
  • indent-rigidly (C-x TAB)
  • hit the arrow key as many times as I need. This will indent all the lines the same amount.


I also learned something about opening files. I had a directory with a file called “time.go” and “showtime.go”. When I tried find-file (C-x C-f), or switch-to-buffer (C-x b), it kept picking up “showtime.go”, even though I wanted “time.go”. I was able to open “time.go” with find-alternate-file (C-x C-v). Then I had to re-open “showtime.go”. It’s not a perfect solution, but it worked for me.

These commands are not unique to the Go mode.

You’re welcome.

Image from the Rheinau Psalter, a 13th century manuscript housed at Central Library of Zurich. Image from e-Codices. This image is assumed to be allowed under Fair Use.