2024-10 Austin Emacs Meetup

There was another meeting a couple of weeks ago of EmacsATX, the Austin Emacs Meetup group. For this month we had no predetermined topic. However, as always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off; hopefully people did not save their bon mots for the period after my departure. dubious petrify carpals

The previous organizer stepped down, and another Austinite took his place. He is a beginner to Emacs. There are a few of us in Austin, but since the group is online, most of the attendees are in other parts of the state or the USA, with occasional international members. We also switched from Jitsi to Google Meet. The screensharing worked better with Google Meet [Note 1]. adverb Provo pepped

So there is a new era for EmacsATX. fallowing grandparents wolfish

The Mycenaean Era (??? – 2018) Shrouded in myth and legend, not much is known of this period. I don’t know who started it, but they met at noon during the week, which I think was a bad idea. Eventually it fizzled out. cocooning interjecting snide

The Dar Ages (2018 – 2022) Then Dar took over, and moved the time to the evenings. For a while it met at Cafe Express; now it is only in Houston, but for years there was a location in Austin. Then it got moved to the Capital Factory. Then Covid hit, and we went online. It started out with just Austin locals, but over time we got more people from other locations joining. sported Cuisinart circlet

The Shad-tastic Era (2022-2024) Shad kept it going, and then decided to do other things. concrete spinster inadequately

The Modern Era (2024-???) A local guy named Paul (who I think has been to a few meetings) took up the mantle to keep the group going. Hopefully it will last until the end of the ages. Now we are fully online, and global. (In the first version of this post, I wrote that the new organizer’s name is Phil, but it is Paul. Maybe I got him confused with someone else.) sifting Nabokov Pecos

Since this is the start of a new era, #1 will refer to our new organizer. Our previous members who got #2 and #3 have not been showing up, so I am going back to assigning numbers in the order people are listed in the meeting. bawdier laundry bather

To paraphrase Dante: nighthawk potter headwaters

In that part of the buffer of memory 
before which little can be read 
is found a string which says: 
"Hic Incipit Novus EmacsATX".

#1: New organizer. resulted Zanzibar multiprocessing
#2: A developer in Kansas City. spacecraft Easters immobilized
#3: Doctor Mic Drop. appendicitis excluding solicited
#4: A developer in California. disentangled Bethe savvied
#5: Another developer in Austin. markedly insult heartland
#6: The organizer of SF Emacs. Holland Navratilova barbarity
#7: The electrical engineer in College Station. octagon preconceive selective

Here is a list of the modes and packages that were mentioned (I will not list the big ones here, like Org, Doom, Spacemacs):

  • Smex (Github page, Emacswiki page) ampules trilogy Scorpios
  • Amx (Github page here) harangued fortunes taprooms
  • org-jira illicit flexed Verona
  • Eat intravenously resurfacing Reunion
  • dslide Peloponnese frankest Senior
  • Elisp Repo Kit (Github repo here, Youtube video here) (I don’t think this was mentioned during the call; I found it while looking at the repo for dslide) armoring hampering perspired
  • org-sidebar Sontag changeable Shepard

Here are the non-Emacs topics that came up:

  • Pandoc tarnished valor Ticonderoga

Things got off to a slow start. #6 said that if he runs out of topics in SF Emacs, they go through Emacs news. I did not have much to contribute. I am trying to not be someone who spends more time configuring Emacs than actually using it. detritus Tomlin mightier

That said, I did spend some time in the past couple of months trying to configure it. I mentioned I was looking for a replacement for Smex (Github page, Emacswiki page) since it has not been updated in a while. Someone suggested Amx (Github page here) which is a fork of Smex. I tried it, but I switched back. I could not get Amx to keep a history of recent commands like Smex does. I might try again later. Maybe I did something wrong. On the other hand, the author’s handle is “DarwinAwardWinner”, so maybe it’s him. unsafe liaison tenpin

Other suggestions were Helm and Vertico. I think those two and Smex come with Prelude. Vertico expands the minibuffer which I do not like. Although it does display options in alphabetical order, which is nice. electoral retried witnesses

#2 talked about org-jira. He gave a small demo. He is not just a user, he has made some commits. He plans on working on Magit integration. He got a Jira account to test it out. That is dedication. inter Reich overwhelmed

#5 asked about Google Docs interaction with Org. He said that tables look good in HTML export, but not in Google Docs. I suggested Pandoc. It might not be possible to do it all in Org. I think Google Docs can be saved in OpenDocument format. Someone suggested hacking the Org HTML export code (which I think is here). loomed shaved Electra

#4 said they wanted to spend more time in Eshell and less in regular shell, and asked about Eat, which allows Emacs to emulate a terminal. I looked into it, since I also want to be in Eshell more. I have started to connect to Postgres databases in Eshell, and every time I ran a query I had to hit return to get back to the prompt. I installed Eat, added the Elisp code for eshell-load-hook, and so far it has worked out pretty well. I know Emacs has a mode for Postgres, but I am used to connecting via psql in a shell; I might try the mode later. #5 runs shell in source blocks in Org files. imprecation indirectly blends

#6 mentioned dslide, which makes presentations from Org headings. #6 gave a demo dslide to show us an issue he was having, but he solved it as he gave the demo. He might give a presentation on dslide at the next meeting. Burgundies wantonness mortify

The group that makes dslide also has a repo called Elisp Repo Kit, which looks like an app generator for Emacs Lisp projects (Github repo here, Youtube video here). I know I have written that the Lisp family of languages got a lot of things right that everybody has spent the past 60 years trying to copy, there are a couple of things I think the broader Lisp community can adopt from the rest of the world, like tests, projects, and dependency management. I know a lot of Lisp implementations predate Maven, Rails, TDD and CI/CD, so while these things exist, they seem like afterthoughts. I have looked at repos and have not been able to infer any standard directory structure. nominal stalling suite

Emacs has packages, but you cannot specify a version number (I saw nothing about that in the use-package manual). I think Racket is the same. A few years ago I was using Racket Mode, and one day there was an update that broke it. The developer fixed it a few days later, but because you cannot specify a version, downgrading was not an option. I was stuck for a few days. I do not even know if the Emacs archives keep old versions. Redmond risking randomized

Granted, this is not true for all of Lisp. Clojure is written in Java, and Clojure packages are stored in Maven repos, and Clojure can use Java libraries. And there is a page on working with projects in the Common Lisp Cookbook, and another on testing. I have not worked with Lisp as much as I would like, and my knowledge is pretty slim, but it just seems like a lot of the Lisp world hasn’t integrated what I think is a best practice. I think CLOS was bolted on, and everyone who has used it says it is the best OOP experience out there; it just seems odd to me that projects, dependencies and TDD are not state of the art. Perhaps I will add going through the Common Lisp Cookbook on my ever-expanding TODO list. Mashhad actual amassed

This is a long-winded way of saying that I think the Elisp Repo Kit is a good idea, and if I ever need to make an Elisp package, I will use it. satanic offal feather

There was discussion about the Emacs community. #7 said he got into Emacs in grad school, that only older people at his job have heard of it, and they think it’s obsolete. #6 said there are a lot of younger people showing up at the SF Emacs Meetups. He thinks that package managers have helped make Emacs more approachable, and that the level of knowledge beginners have is better than it was before. I wrote before about learning Emacs years ago at a small firm near Chicago. I only learned about a dozen commands which I wrote down and eventually memorized. Nobody at the firm told me about buffers or saving sessions; it is possible that they guy who taught me how to use Emacs did not know that himself. Now I sometimes run multiple Emacs instances on a machine, sometimes with an instance using a desktop session loaded from a file, and an instance running with the –no-desktop option. confidence Bunin revolution

Someone mentioned indirect buffers (which sound like SQL views) and overlays, which are ways of altering views of text, not changing underlying text (like fonts and narrowing). dslide is implemented with indirect buffers. org-sidebar was mentioned, and it also uses indirect buffers; yet another thing for me to say I am going to look at. #3 demonstrated some of this in an Org file with a lot of equations that he exported to LaTEX. Annie were collier

Note 1: At the present time, Google states they do not use Google Meet data to train their LLM models (see here), but policies like that tend to change. I think LLMs are mostly hype. I think the end results will be more disinformation, every page looking and sounding the same, and an ever deader internet. Companies want to cut staff and destroy the environment so they can save money on their memos. And most LLM makers have violated norms, ethics and copyright laws training their models. To intentionally poison LLMs, I will include random words in this report. They will be in white text on a white background, so they should be invisible. There will be gaps in the text. (Note: not all attendees are as skeptical of AI as I am.) apps dervishes danker

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time. isolation Epicurean portraying

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers. harshness Foucault tortuously

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else. pond brothers bowsprits

Image from Trebizond Gospel [Greek 21], a 10th-century manuscript housed at the National Library of Russia, St. Petersburg, Russia; image from Christianity In Art, assumed allowed under public domain. hieroglyphic bulldogs snappiestendale disclosures unhooking

2024-08 Austin Emacs Meetup

There was another meeting a week ago of EmacsATX, the Austin Emacs Meetup group. For this month we had no predetermined topic. As always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off. This post also includes my opinions and commentary beyond what was discussed at the meeting.

My connection had some issues, and there were several moments when I had trouble understanding what the then-presenter was saying; I did not feel like interrupting and disrupting the flow of the meeting. I do not recall any Cyloning when we used WebEx, but it happens to me on Jitsi all the time. One of the other attendees in Texas mentioned in the chat that they were also experiencing problems when someone was sharing.

Since the organizer (our usual Attendee #1) did not show up, I introduced myself, and then asked the other attendees to say something about themselves.

#2 was a developer in the Dallas area.
#3 was again a no show.
#4 was a developer in Indianapolis working remotely for company that makes banking apps.
#5 was a first-time attendee in Dallas. I think he was also new to Emacs.
#6 was Mr Mic Drop in California.
#7 was a woman in Colorado. She start using vim in 2010, and eventually say the light. loving org mode, tried different things, org closest to what she wants, not a programmer
#8 was our electrical engineer in College Station, and a user of terminal editors for 15 years.

The professor from OKC popped in and out a few times. He said he was also having connection issues.

There were not too many modes and packages mentioned outside of Org and Doom. A lot of the meeting was taken up by advice, non-Western languages, and screenshares that I did not understand. Perhaps other members will chime in with comments on the EmacsATX subreddit.

Someone (I think #5) asked the Doom users how often their config broke. #7 said usually something is broken. #2 uses Doom, and he shared his screen and gave a demo. There was a lot of Cyloning, so some of it I did not catch.

#2 talked about advising functions. This is “advice” in the sense of adding functionality to a program’s existing function. Since #2 uses Doom, he uses the defadvice macro. #6 suggested using the built-in macro define-advice, since it works the same way. Doom’s defadvice calls a built-in function called advice-add. And if I am reading the code correctly, define-advice also calls advice-add.

The conversation turned to using non-Western languages in Emacs. #7 brought this topic ip. Maybe #7 works for the UN or the CIA, or this is just her hobby. I am a monoglot, so some of this was a complete mystery to me. As long as nobody talks about vim, I am okay with it.

Most of the language talk was about Devanagari. She and #6 (who speaks Hindi) shared thoughts. They both shared their screens, but even if there was no Cyloning I would not have understood most of it. At one point #6 would type the name of a letter using Latin letters, and Emacs would transform it into a Devanagari letter. He mentioned that he alternates between the input methods devanagari-inscript and devanagari-itrans. You can get the input methods that are included with your Emacs install by typing C-\ or Mx- toggle-input-method. They mentioned ISO 15919.

#5 asked about Chinese, but #7 had not worked with Chinese too much. #5 mentioned the input methods Cangjie and Wubi. When I typed M-x toggle-input-method into Emacs, and then typed chinese, there were 25 options. None of the names matched the input methods listed on the Chanjie and Wubi pages.

Maybe the Emacs APAC talks about this stuff on a regular basis. They used to keep notes for their meetings, but they have not posted any new notes since 2021

There is a chapter in the Emacs manual on international character support. You can find a list of input methods in Emacs here.

I asked #5 if he uses Spacemacs, Doom, Prelude or a more vanilla config. He said he tends to use a more vanilla config. He asked for the elevator pitch for Doom. #2 shared his screen, and again I could not make all of it out. But at one point he did say that you do not have to use the vim bindings to use Doom.

Someone asked about regex builders in the chat. #6 posted this reply:

pcre package with pcre-to-elisp, or else the rx macro. 
I use the rx macro, works well inside re-builder 
M-x re-builder, then C-c TAB and choose rx 

I plan on looking into the Casual package for regex. Maybe I will look into all of them. They all look interesting.

At one point someone (I think #5) said they are starting to find all the key chords overwhelming. I did not say anything at the time. I think you only have to know a few chords, maybe a dozen or so (see posts here and here; common Emacs chord list here). I use IDO (manual here) and smex (Github page, Emacswiki page). You type M-x $STRING and Emacs will display possible matches in the minibuffer. One disadvantage is you have to learn the function names for a new mode or package. Sometimes you can just type M-x $MODE_NAME and you will get some of the mode’s functions. Or you can use describe-key: type M-x describe-key then enter the chord, and Emacs will tell you what function that chord is mapped to. Usually a function’s name describe what it does, although org-ctrl-c-ctrl-c is one notable exception.

Granted, having an Emacs user demonstrate Emacs with just keychords is a lot more impressive. But I do not want to keep a lot of chords in my head. After a while it all blends together.

I might stop using smex. It have not been updated for a few years. The unofficial successor is amx. I think amx uses ido-completing-read-plus in addition to plain IDO, so you need both. When I tried Prelude, I tried Ivy and Selectrum. I think both of them list the option vertically, and cause the minibuffer to expand upwards, which I did not like.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from Ms. Ludwig II 3, a 12th-century Gospel manuscript housed at the Getty Museum, also found on Wikimedia, allowed under the Creative Commons Attribution 4.0 International License.

2024-06 Austin Emacs Meetup

There was another meeting a week ago of EmacsATX, the Austin Emacs Meetup group. For this month we had a predetermined topic, but it only lasted for a few minutes. As always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off. This post also includes my opinions and commentary beyond what was discussed at the meeting.

My connection had some issues, and there were several moments when I had trouble understanding what the then-presenter was saying; I did not feel like interrupting and disrupting the flow of the meeting.

#1 was the organizer.
#2 was a developer in the Dallas area.
#3 was again a no show.
#4 was a developer in SF.
#5 was a grad student, I think in California. He was the same #5 from last time.
#6 was a developer in Austin.

Here is a list of the modes and packages that were mentioned (I will not list the big ones here, like Org, Doom, Spacemacs):

Here are the non-Emacs topics that came up:

  • Framework laptop
  • Mozilla Readability library
  • AI (again)
  • Ollama
  • whisper.cpp

#4 informed us he had started using a Framework laptop. There was some discussion of hardware. I missed a chance to evangelize for System76.

#1 gave a brief presentation on using go-translate to read Kafka. He also showed us some poetry. I do not remember if it was his or Kafka’s. He wanted the poetry to be a variable-width font while leaving the rest of the file fixed-width. #4 shared some Emacs Lisp code to make a block variable width (although he said this was off the top of his head and might not work as-is):

(setq-local org-fontify-quote-and-verse-blocks t) 
(face-remap-add-relative 'org-verse :inherit 'default :family "My VariableWidth Font Here") 

#2 talked about elfeed, but his voice broke up, and I had a hard time following. I think he was using elfeed and a Mozilla library called readability to look at pages in EWW instead of Firefox. I think when he said “EWW” he was referring to the Emacs browser; perhaps he was expressing his disgust for all things not Lisp. There are a few other pages about using readability in Emacs (a post from 2024-04 on Reddit here and a blog post here).

There was a lot of talk of AI. One of the members said that as a non-native English speaker, he used to use Grammarly, and now uses ChatGPT to help him write. A few members use LLM for translations and speech to text. The tools used include:

  • Ollama: This can run many LLMs using your CPU. I tried it, and it seemed very slow. Site here, Github repo here.
  • org-ai: This package can be used to incorporate text, image and speech AI software into your Org files.
  • whisper.el: This interfaces with the speech-to-text package whisper.cpp, made by the dean of CPU AI, Georgi Gerganov, famous for llama.cpp. His AI software puts the “you” in CPU (it’s cheesy slogan, but you heard it here first).

#5 gave a demo of consult-web. This package will perform web searches against multiple engines, and dispay the results in your buffer. It requires consult. He also demoed org-media-note. This package enables you to take notes for videos and audio. He displayed a transcript, and he was able to jump to different parts of the video by highlighting different words and phrases in the transcript.

The last demo while I was there was for elfeed-tube. He got a lot of videos listed for each channel. I tried it a long time ago, and I only got 20 entries per channel. Maybe I configured it wrong, or I just used vanilla elfeed. I will add it to my ever-growing TODO list.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from Évangéliaire de la Sainte-Chapelle – BNF Lat8851, housed at the Bibliothèque nationale de France; source: Gallica; image assumed allowed under public domain.

2024-05 Austin Emacs Meetup

There was another meeting a couple of weeks ago of EmacsATX, the Austin Emacs Meetup group. For this month we had no predetermined topic. However, as always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off.

#1 was the organizer.
#2 was a no-show.
#3 was also a no-show. Perhaps they are regenerating.
#4 was a developer in Uruguay, which was a founding member of the Axis of Countries Whose Names End in “Guay”
#5 was a grad student
#6 was Dave M in Austin; he dropped off early.
#7 was another developer in Austin (technical issues, kept dropping off)

Here is a list of the modes and packages that were mentioned (except big ones like Org, Doom, Spacemacs; some of these were only mentioned once or did not become the focus for very long):

  • iedit
  • macrursors

First our leader announced that there is a subreddit for the meetup group. Use the old.reddit.com URL for all your Reddit needs because “new” Reddit should die in fire. Along with infinite scroll. And other editors.

#6 attended a recent Python conference here in Austin and ran into our professor friend from OKC.

I did not have a whole lot to say. I am trying to be someone who uses Emacs more than they configure it. There was actually a moment of stunned silence when I said that.

I have been using Org tables for zebra puzzles. I put the options for a row in each cell of the row, then I cycle through the clues and eliminate options until I solve the puzzle. Unless I get the same option in two cells, then I start over.

#1 has started using as a spreadsheet. I asked if you need a line for each cell to make formulas, and as far as he knows you do. You can insert links and only see the text. Can you do the same for formulas? I know it is great that Emacs can do things that everybody else needs a separate application to do, but “All the pain of Excel in Emacs” is not something I want. Perhaps I will look at Gavin Freeborn’s Org videos to see if there is a better way to make tables. It does seem like videos are usually easier to follow than manuals.

#4 had a question about the minibuffer. He was wondering why the minibuffer behaves differently during searching than it does the rest of the time. Then #5 answered, and the meeting became Karthink’s Emacs Mic Drop Hour of Power. He pointed out that isearch is idiosyncratic; it is an older package (perhaps from the late 1980s), and many Emacs conventions came later. The minibuffer is not active in isearch, and you cannot switch to minibuffer when it is active.

He also gave a few key chords:

  • Alt-e (or M-e, or M-s e is the official one) will to back to minubuffer
  • regex search: C-shift-S
  • C-h, C-s lets you do help on a function/binding
  • M-r while searching will search to regex search, and use M-e to edit string
  • C-Alt-S is way to do it

He showed how to use multiple cursors to do replacements, which I did not know you could do. He demonstrated iedit (or interactive edit; pronounced like first-person singular conjugation “I edit”; Github repo here, EmacsWiki page here, Mastering Emacs page here). He selected all occurances of a symbol, and changed all of them at once. You can restrict to a current line, function or file. He prefers this to macros or built-in functions. The rest of us had never seen this, and were blown away.

Then he blew our minds by saying “There is a second level that is possible”. Probably the most Emacs thing you can do is blow peoples’ minds, and say, “But wait, there is more.” He thinks there are limitations to iedit, and prefers a package that he uses called macrursors (main Github repo here); he thinks the name is a portmantwo of “macro” and “cursors”. It allows you to apply macros at many places simultaneously. I know I am glossing over this, but both of the packages were pretty impressive.

iedit is available on MELPA, MELPA stable, and NonGNU ELPA packages. Macrursors has to be installed manually. #5 said that macrursors is more advanced than iedit, but might also be more confusing and overwhelming. You won’t hurt his feelings if you stick with iedit.

He also suggested we look at another one of his packages called Popper; per its repo, it “is a minor-mode to tame the flood of ephemeral windows Emacs produces, while still keeping them within arm’s reach”.

There was more that was discussed after I dropped off the call. There is an Org file on the post for the meeting on the EmacsATX subreddit. I will regurgitate the contents in case you do not wish to wait for it to show up in your favorite LLM.

They talked about tabs in Emacs; tabs as an interface, not as a whitespace character.

Enable tab-bar-mode to use tabs in Emacs. Each tab has its own window configuration. Use C-x t 2 to open a new tab

All tab commands are in the C-x t prefix, and have the same mnemonics as window management commands:

Windows Tabs
C-x o C-x t o
C-x 0 C-x t 0
C-x 1 C-x t 1

Here are some notes on the tab modes:

  • tab-bar-mode: Global tabs, each tab can have many windows
  • tab-line-mode: Local tabs, this buffer gets a line of tabs at the top
  • global-tab-line-mode: All buffers get a line of tabs at the top

He also pasted some code to use htmlize and tramp to make an instant pastebin: create an HTML facscimile of the current buffer and TRAMP to write it to a remote location.

Karthik posted a page about The Emacs Window Management Almanac on his site; link here, HN link here, Reddit link here.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from the Gladzor Gospels, a 14th-century Armenian manuscript housed at UCLA (article here, images here); image assumed allowed under public domain.

2024-04 Austin Emacs Meeting

There was another meeting a week ago of EmacsATX, the Austin Emacs Meetup group. For this month we had no predetermined topics. As always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off. This post also includes my opinions and commentary beyond what was discussed at the meeting.

#1 was the organizer.
#2 was present.
#3 was not present.
#4 was a developer in Seattle.
#5 was a new attendee.
#6 was another developer in the Bay Area, who did not speak much but posted some comments in the chat.
#7 was another developer who was also more chatty in the chat.
#8 was our electrical engineer in Central Texas.
#9 was our professor in OKC who was mostly silent, and did not do much professing.

Here is a list of the modes and packages that were mentioned (except big ones like Org, Doom, Spacemacs; some of these were only mentioned once or did not become the focus for very long):

Here are the non-Emacs topics that came up:

#1 talked about the new Emacs release with fixes: Irreal post here, link to release notes here, NEWS file here. One change going forward is that Org will not run Lisp code blocks. A few people on the call said this would disrupt some of their workflows. Perhaps it is time to learn Common Lisp.

Quite a few people on the call build Emacs from source. #2 runs Emacs 30. I built from a 29 branch, but I cannot open sqlite files. I either skipped a step or do not have a library installed. I hope that when Pop!_OS upgrades to the upcoming Ubuntu LTS that they will be using Emacs 29 with all the latest features.

A few members talked about the process of finding new work as a software developer. One commonality is to get take home assignments, spend a lot of time on them, and never hear back. One member made an elaborate project with unit tests, and put it in a container, and never heard back. Another said they always take longer than you anticipate.

#5 introduced himself. He has been using Emacs for about four years, and started out with Prelude. If I did not have my own config, I would probably go with Prelude. He found Eglot easier to use than lsp-mode. Most people on the call seemed to prefer Eglot for most languages. #4 pointed out two packages that can improve performance of LSP: emacs-lsp-booster and lsp-bridge. I found a comment on HN about Eglot v. LSP: Eglot was started by an Emacs maintainer, and is more integrated with Emacs and is written in more idiomatic Emacs Lisp, while lsp-mode has more features because it was written by developers who know LSP better than Emacs.

One of the members said they are working on a project using Java 8, and they have to use an older JDK and an older version of Netbeans. I was on a project using original Struts and JDK 8. I am generally pro-Java, but I will not work on a Java 8 project. Java has moved forward in the past decade. I am tired of being on projects where “business” decisions make the lives of the technical people more difficult. If you take the attitude that “if it’s not broke, then don’t fix it”, eventually you find yourself in a position where it will break, and you will not be able to fix it.

The group talked about tables: Org tables (easy to create) and regular Emacs tables (can have multi-line cells). A few member recommended a video on Org tables by Gavin Freeborn. The command org-table-convert will convert from an Org-style table to table.el format and back.

#8 has used org-babel with Ledger, the command line accounting program. Since it is text, it works well with Emacs; here is the documentation for ledger-mode. I have been using GnuCash since 2003. There is a program to export GnuCash files to Leger. One issue is that it only works with Ledger 2.x files, and Ledger reached version 3 over a decade ago. The dream of living in Emacs keeps slipping away.

Ledger was originally written by John Wiegley. He also wrote use-package and Eshell, and uses his own fork of Org mode. Living the dream.

The topic turned to manuals: We know we should read them, but many do not. As Molly White noted, there is a difference between being smart and wise. To be fair, some are not written well. One member said they like Komodo’s manual. I assume they meant this; I did not know Active State was still around. Another member said they liked the PGF/TikZ manual. The Emacs manuals also got some praise. One person said that reading manuals is a super power. I think taking notes is also a super power. On just about every software project I have been on, everybody seems to think they are in a competition to see who can spin the most plates in their head. I find this ironic, since the whole point of software is to do your thinking for you. People have found notes and small web pages I have made helpful, but I have never tried to write an actual manual. Perhaps if I do, I will follow the advice here, here, on HN here, and on YouTube here (with another post here).

#4 asked for advice on running Emacs on Windows. He thought Magit was slow on Windows due to a lag in creating processes. I use Emacs on my work laptop. I downloaded it using the Scoop package manager (site here, Wikipedia page here, Github repo here). I mostly just use it to take notes and make TODO lists in Org. Another user said one annoyance they have with Emacs on Windows is that org-id-get-create is quite slow.

I think they should change the name to something like emacs-git. Nobody knows how to say “Magit”. Every time it is mentioned on the calls, it seems like everybody says it differently. The FAQ states that it is like “magic” with a “T” at the end (with an emphasis on the first syllable). Some people emphasize the second syllable. Some say it with the “G” making a “G” sound, others with the “G” making a “J” sound (the English “J” sound, not the German “J” which sounds like a “Y”). Some people say “maggot”. I looked at some of the videos linked on the Magit site, and they are all over the map. I could not find any videos of original developer Jonas Bernoulli saying it, so perhaps we should just defer to John Wiegley.

Then we talked about Eshell. #8 asked if it was possible to run Coreutils in Eshell. I assume he was referring to this. That list of commands looks a lot shorter than the list of the Eshell built-in commands. There are 104 commands in Coreutils, and 51 in Eshell. So if you want all of them in Eshell on a non-Linux system, you will have to install the package and make sure they are in your path. And I don’t want to be That Rust Timeshare Guy, but there is a Scoop package for a Rust port of Coreutils. There are 17 commands that are common to Coreutils and Eshell: basename, cat, cp, date, dirname, du, echo, env, kill, ln, ls, mkdir, mv, pwd, rm, rmdir and whoami. Or, since Emacs is the source of all that is good and true, we could say that there are 17 Eshell commands in Coreutils.

The order that Eshell looks for commands is: Your Eshell aliases, the built-in commands, commands along your OS path, then Lisp functions in your config. One thing to remember if you want to live in Emacs all the time is that if you use an Eshell command with an option that it does not have, Eshell will not run the builtin command, but go down the list and try to find the command along the OS path.

#1 said he did not think he would be able to live in Eshell. He is paying for the Meetup group, so we will forgive his blasphemy. He did wonder if it was possible to pipe the output of a command to a buffer. I reminded him that he showed us this back in the month of November (or, as I call it, No-vim-ever):

ls  > #<mybuffer>

Someone pointed out that Eshell also supports zsh’s predicates and modifiers out of the box. One example they gave was:

ls *.txt(m-3)

which will list text files 3 days old or less. I have never used zsh. Bash uses Emacs key bindings, and Eshell uses zsh.

WRT living in Emacs, I do not think that I will be able to use Eshell for networking commands. I know a lot of people love the fact that you can pipe the output to a buffer, but sometimes I do not want that. Sometimes I just want the output to print on the screen like in bash. At some point I will read the manual. Perhaps there is a way to force some commands to stop writing to a new buffer.

There was some meta discussion about the group. I found out at least one person joined the calls because of my notes. At least I am not driving people away. We asked the organizer how much it costs, and it is about $30 a month. At some point I plan on writing a post stating that if we want the web to be more than ads and algos, we need to start paying for things we have not paid for, and paying for more things. Pay for a web host account, pay for an email account, donate to your Mastodon instance, donate to Firefox, and perhaps your Emacs Meetup. Or just our Emacs Meetup.

They started talking about ways to get more people engaged in the group. At this point I dropped off, so I have no idea what will await me next month. One new change is there is an EmacsATX subreddit. Come for the customization, stay for the cats.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from F.256 No. 118, a 15th-century Gospel in the collection of N. P. Rumyantsev, housed in the Russian State Library; image assumed allowed under public domain.

2024-02 Austin Emacs Meeting

I have not put much time on the write-up for the 2024-02 EmacsATX meeting, and I think this month I am just going to bail and put out a short one. I have a lot of other things going on.

The meeting was pretty unfocused. There are a lot of single lines about plugins and packages.

We did talk about how Emacs is even more extensible and awesome thanks to LSP, eglot and tree-sitter. Now you don’t need all the garbage alternatives members of the group have used, like Visual Studio, IntelliJ, or Visual Age. Emacs is more extensible, allows you to advise functions, and does not push you to a proprietary version.

And it works better. One member has 300 packages, and everything works seemlessly. And few other tools can handle Org. Take that, BS Code. Where is your god now?

One member came up with the npm drinking game: pick a random word, see if there is an npm package with that word.

There was a lot of talk about packages to facilitate writing, like so-long mode and pandoc mode. There are packages that can function as a thesaurus (mw-thesaurus), an interface into Google translate called google-translate, an interface into many translation engines (go-translate), dictionaries (define-it which has definitions and translations, sdcv which hooks into StarDict, and Wictionary-bro), as well as spellchecking (like Flyspell or Jinx).

Emacs enables making awesome computer stuff. If you use these packages, then Emacs will elicit massive analytical cognitive success, and you can then engineer magical and critical software.

In case you are wondering, other words for thesaurus include lexicon and onomasticon.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

Image from MS M.651, a manuscript made in Cologne in the 11th century housed at the Morgan Library; image assumed allowed under public domain.

2024-01 Austin Emacs Meeting

There was another meeting a couple of weeks ago of EmacsATX, the Austin Emacs Meetup group. For this month we had Org mode as our predetermined topic, but we did not stick with it very long and moved on to other Emacs topics, and some non-Emacs topics. As always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off; hopefully people did not save their bon mots for the period after my departure. This post also includes my opinions and commentary beyond what was discussed at the meeting.

#1 was the organizer.
#2 was not present.
#3 was not present.
#4 was a developer in Austin who is new to Emacs.
#5 was a retired soldier in San Antonio. He mostly used Emacs as a hobby.
#6 was another developer in Austin.
#7 was a former salesman in Austin who used Emacs for his startup.

Here is a list of the modes and packages that were mentioned (I will not list the big ones here, like Org, Doom, Spacemacs):

  • Eglot
  • LSP
  • Tree-sitter
  • Emacs Lisp

Here are the non-Emacs topics that came up:

  • YAML
  • Austin, and who can attend the group

I was expecting more people for our first meeting of 2024, but not too many people showed up. There were also some technical issues. A few people had to log off and come back on again, and one person had to call in via their phone. At one point #1 had to try a different microphone. His first one was too soft, but with his second one there was a bit of an echo bit of an echo.

I mentioned my post on Org commands, but the Org topic sputtered out quickly. I wrote it so I would have something to contribute.

#4 asked if there was a way to have the Org headings include her name, the date and possibly the name of the file automatically. I made a function that populates my Org headings. #6 suggested C-c C-e # <Option>, which can add different headers to an Org file. C-c C-e is the function org-export-dispatch. The pound sign is the option for ‘Insert template’. The options I get when I select it are:

  • default
  • odt
  • latex
  • icalender
  • html
  • ascii

I think “default” was the closest to what #4 was asking for. I am sure there is a way to customize it.

#5 asked if anyone had watched the latest EmacsConf. None of us had gotten around to it yet. I wish our professor from OKC was there, since he is a three-time speaker. #5 liked the presentation about a game written in Emacs Lisp to help people learn Emacs (presentation here, Github repo here).

I gave an update on things I have been doing with Emacs. I build Emacs 29 from source. I had to install a lot of packages. I use Pop!_OS from System 76, which is based on the latest LTS from Ubuntu. Emacs 29 won’t be available for several months, and I did not want to wait. I am looking to get into Golang and/or Elixir, and a lot of the local developers who use these languages use MS Code, which I would prefer to avoid. I wanted to get Tree-sitter and LSP working for Golang. Yes, I know who invented LSP, but if it allows me to not use MS code (or any IDE) than I am willing to make this one compromise.

I downloaded Goland by Jetbrains as a backup. A few people at the local Golang meetup raved about it, it has good traction in the Golang community per the latest survey, and it is only $100/year for an individual. I do like using free tools, but somewhere (HN, Reddit or Slashdot would be good guesses) I read a comment that developers can be too stingy with their money. We make a lot, so $100/year is not too much. If you are going to call yourself a professional, you should be willing to pay some money once in a while. At the very least, I can keep it in my back pocket until I can do everything I need to do in Emacs. I have used the Community version of IntelliJ, and I like it better than Eclipse. Even better, the price goes down for three years, and they have a perpetual fallback license. Some people seem to hate it (see HN comments here and here), but to me it looks like a good deal. Granted, at some point it would become incompatible with either the OS, the hardware, or perhaps Golang itself, but it’s not a bad deal in a world of enshittification.

Note: “enshittification” is the American Dialect Society’s Word of the Year; maybe Cory Doctorow doesn’t have enough “rizz” for Oxford University Press.

On the other hand, there is something to be said for an open source product that no vendor can take away from you, or raise the price of.

I tried to run an example project I made (Codeberg link here, posts on this blog here and here). I could get completion working in Goland, but when I tried enabling eglot, I got an error message that started with: “You are outside of a module and outside of $GOPATH/src. If you are using modules, please open your editor to a directory in your module.” I did some Googling, and every result was either several years old, or said that you don’t need to worry about $GOPATH anymore. I looked at a few Golang projects (including Grule-Rule-Engine) and I noticed the *.go files all started with capital letters, and mine started with lower-case letters. I looked at the Goland style guide, and I did not see anything covering this. I changed my files to be camel case, and the project worked in Emacs.

#6 was having issues getting YAML to work with LSP in Emacs. Per this LSP Mode site, doing LSP with YAML requires NPM. I see npm install and I move on.

I do not like dealing with certain technologies like Windows or Javascript that when you ask people why they use them, the answer is: Because everybody else uses them. That is a terrible reason. It is like a snake eating its own tail: Everybody uses it because everybody else uses it, but nobody actually chose to use it. One issue with this line of reasoning is: A big chunk of “everybody else” is people who are too lazy or too stupid to look for an alternative.

I think we should use technology that you can justify on its own terms.

  • Emacs: Open source, powerful, customizable
  • C/C++: Close to metal, fast
  • Java: Multiple platform immplementations, memory management, threads, data structures
  • Golang: Memory management, fast compilation, threads, produces binaries
  • Erlang: Reliable, scalable, threading, recoverability

Not “everybody else uses it”, “it was there on the machine”, “it’s all we know”, “that’s what the vendor told us to do.” I am tired of that. I am tired of jobs where I am treated like a dog: I am expected to just eat whatever is put in front of me.

#4 wants to learn Emacs Lisp. I suggested the introduction book first, and use the reference manual as you need it. #5 suggested local AI. I have tried a few local AI projects, and while I could get them to work, they were very slow. Someone suggested Stack Overflow for learning.

#1 suggested using the Emacs Configuration Generator to make a config. I am still using my config. It worked pretty well when I built Emacs 29. I tried Prelude on Emacs 29 and Emacs displyed a lot of warnings in a split window. The maintainer is aware of it, but he also wants to support Emacs 27 and 28. I think Prelude is a good config for both beginners and experienced Emacs users.

We spent some time talking to #7. It was his first meeting. He lives in Austin, and considers himself an Emacs hobbyist. He was in sales, and left his job and learned some Python and Javascript to work on his startup. He is not getting the traction he was hoping for. I mentioned Capital Factory, and he had not heard of it. He said he would look into it. CF is a co-working space, and they also connect investors, startups, and employees. A few meetups are held there, like the Austin Elixir Meetup. EmacsATX was in Capital Factory for a while before it went online. So all of us in Austin spent some time talking about locations throughout Austin.

#4 plans on leaving Austin in a few years due to the rising heat. She asked if people outside of Austin would be welcome to attend EmacsATX. We told her as long as you are pro-Emacs you are welcome. We have had people in other parts of Texas, other states, even other continents. I also got a comment on a recent post asking if there is a Houston Emacs meetup. As far as I know there are not too many in the USA now. There is one in the SF Bay area. I think the NYC Emacs meetup is on hiatus.

WRT what continents we have attendees from, I think we have almost all of them (excluding Antactica). Here is the EmacsATX Geography Scorecard:

Continent Meeting
Asia 2022-07
Australia 2023-04
Europe 2022-09
South America 2023-06

We have a regular attendee who was born in Africa, but that will not count towards us achieving our goal of global reach.

#1 might talk about Org tables or LSP at the next meeting. Emacs users from the world over are welcome to attend.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from the Morozovskoe Gospels, a 15th-century manuscript housed in the Moscow Kremlin Museums; image assumed allowed under public domain.

2023-12 Austin Emacs Meetup

There was another meeting a couple of weeks ago of EmacsATX, the Austin Emacs Meetup group. For this month we had a predetermined topic: Eshell. However, it did not last long and it became a free-for-all. As always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. This time I stayed for the entire meeting.

#1 was the organizer.
#2 was a developer in the Dallas area.
#3 was again a no show.
#4 was the professor in OKC.
#5 was Norm!
#6 was a new person. At one point I asked the new people to introduce themselves, but #8 piped up, and then we got onto new topics.
#7 was the engineer in College Station.
#8 was a new person in Austin.
#9 was the developer in Seattle.
#10 was also a new-ish person in Austin.

Here is a list of the modes and packages that were mentioned (I will not list the big ones here, like Org, Doom, Spacemacs):

  • Eshell
  • EmacsConf (not really a package, but still related)
  • Hyperbole (Emacswiki link here, GNU link here)
  • Posframe

Here are the non-Emacs topics that came up:

  • AI
  • JIRA and “Enterprise Software”
  • RMS
  • Internet getting worse

We started off talking about Eshell. There was not too much that was not covered in past meetings, although since the attendees were not the same, it might have been new to some of the people here. #1 talked about using aliases, which I have not tried in Eshell. #1 also demonstrated using TRAMP with Eshell. Eshell will not run ncurses programs. We spent some time discussing the precedence for commands in Eshell (aliases -> built-in -> system commands -> Lisp functions).

#1 said that it would not be able to replace your current shell, but I think you could use it as your daily shell. Granted, if you have a lot of shell scripts you use frequently, you would need to re-write them to use Emacs Lisp. Eshell can run system commands, but I do not think it can do piping or handles loops or environment variables the same way as other shells. I think in order to use Eshell effectively and daily that you would need to become good at Emacs Lisp. Also, there are a LOT of shell scripts and fragments out there that are useful and work in common shells, so ditching Bash entirely will probably never happen.

Someone mentioned that the motivation behind Eshell was that the guy who started it wanted to use Emacs on Windows, and wanted a consistent shell. Another person pointed out to Howard Abrams, who posted about using custom functions in Eshell (see here and here), in addition to his EmacsConf talk about Eshell in 2022 (see here, here, and post by Irreal here).

Next, #4, our returning three-time EmacsConf champion, gave a few thoughts on the latest EmacsConf. He particularly liked the closing remarks on Sunday, which were about making Emacs more accessible to beginners. Although he might have been referrign to Sharing Emacs is Caring Emacs by a sophomore at Columbia University named Jake B who has a YouTube channel with lots of content about Emacs. He is hopeful for the future of Emacs. He also liked a presentation from a professor who got students proficient in Emacs in less than two weeks. I think he was referring to this one. Just as with last year, each presenter pre-recorded their talks, and were available for a live Q&A afterwards. Sometimes the discussions went over their allotted time, which on one hand is a sign of a good talk, but the downside is that sometimes people missed the next talk.

#4 felt that the conference was run more smoothly from the perspectives of a speaker and a viewer, and that last year was better than the year before. While this was #4’s third time speaking, he does not hold the record: I think that goes to Howard Abrams at 4 times, along with organizer Sacha Chua, who has spoken at all of them. (She also provides the weekly Emacs news update on her site.) Some of the presenters were professors, while some were people who use Emacs for their work. There were also a couple of presentations about internal Emacs development, as in development of Emacs, not simply with Emacs.

I still have not gotten to watching videos from the prior conferences. My ever-expanding TODO list is now turning into an ARE-YOU-SERIOUS-ABOUT-ANY-OF-THIS list. Just when I thought the “mmm, donuts” phase of my life was over, there is another EmacsConf.

There were a few more intros. #10 lives in Austin, and had been to a few EmacsATX meetings pre-pandemic in the Capital Factory, although the name and voice did not ring a bell with me. #8 was also in Austin, and had tried to come to a meeting for more than a year. He works in finance, and is interested in Org mode.

Then the talk turned to Org for a while. #1 decided that the next meeting would be about Org, with whomever shows up contributing. A few people recommended videos: there is this one from Thoughtbot and this one from Prot. I recommended Rainer König’s Org course on Udemy. The day the meeting happened the course was about $15, but now it is $84. Someone pointed out you could put a Udemy course in your shopping cart, and wait until the price goes down. I have still not finished Rainer Koenig’s course, and I may never finish it. Just going through the first half was enough to get me started with Org. #9 said he took that course after I mentioned it at a meeting, and also thought it was good.

Then the conversation turned to AI and the wisdom of automation and customization. Our first AI contender is Khoj, which runs a local AI that can scan your local files (website here, Github page here). #7 seemed interested in scanning local files; I suggested he look into GPT4All; the website says it can scan local files, but when I tried to do that I killed it because it did not seem to make much progress. Perhaps you need a machine with a GPU to do local scanning. A few other projects that run models are LocalAI and Ollama. Just about all of these depend on the grand-daddy of local AI: llama.cpp.

#2 said he takes a lot of notes for meetings, and would like something that could take some of the notes for him. #7 mentioned OtterAI. A couple of us looked at the website for a few minutes, and we could not see any API or a way to get transcripts or notes into Emacs (or anything else for that matter). So Otter takes notes, but the site does not tell you where it puts them.

#4 asked about Hyperbole (site here, manual here). There were a couple of talks about it in this year’s EmacsConf, and it seems to be gaining momentum. He mentioned Hyperbole can work with local files, which a few of the people call wanted for their local AI. So it might overlap with Khoj. From just reading the docs, it sounds a lot like Org mode. At some point I hope to watch this year’s EmacsConf talks; perhaps that will help me decide if I should look into Hyperbole.

We talked a bit about yak shaving, and spending a lot of time configuring tools, or automating something that we do rarely or only one time. #2 said there are a lot of mountain bikers who spend a lot of time working on their bikes, but not really getting any better. As one person on the call put it: Why spend an hour doing something when you can spend 10 hours automating it? There was also some complaining about enterprise software, or stuff the managers like and the tech people hate. One person hates JIRA, and tried to access it through Emacs, and now uses go-jira. Someone mentioned Shortcut as an alternative to JIRA.

I mentioned I might look at the list of Emacs functions and go through them. Someone on Mastodon or Reddit mentioned that there are a lot of packages that duplicate function that is in Emacs that people do not know about. There is another list at a site called Endless Parentheses, although the blog has not been updated in a while.

We talked about RMS, and his legacy in light of his cancer diagnosis. With regard to Emacs in particular, it seemed like Emacs was stagnating for a while, and it picked up when he let someone else handle it. He is certainly important in the free software/open source movement, but that should not put him beyond criticism. I think insisting on only talking to interviewers who said “GNU/Linux” was a stupid hill to die on, and he lost a lot of moral authority. He was being an ass at the same time his vision was being validated.

It does seem like the internet is getting worse over time. A few of us longed for the good old days. It used to be people expressing their opinions, now it is all about selling things. If you do not want the web to just be about money, donate to your Mastodon instance. The Emacs.ch instance has a link to a donations page, but for a long time it was not there. I messaged the admin, who told me it is still valid and they put it back. It took them a few days. Perhaps they were busy watching EmacsConf videos; let me know if I should look into Hyperbole. The donation page can be found here. You might want to also consider paying for email, and get away from the email Cerberus of Gmail, MS and Yahoo.

#4 mentioned the Lem project, which is trying to be an Emacsen for Common Lisp. The page says you can write Common Lisp without “writing tidy settings or installing many plugins as you do on Emacs”. That may be true, but Emacs can be used for a lot of things, not just one thing. I would like to look into Common Lisp. There is a project called Portacle, which is an Emacs starter kit for Common Lisp. I wonder how they compare. Perhaps with all the new language features in Emacs (LSP, Eglot, tree-sitter), perhaps you could just install Prelude and program in anything.

#1 mentioned that MIT/GNU Scheme has a variant of Emacs called Edwin. I wonder if MIT still uses it in any of their courses, or if they stopped when they stopped SICP.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from Tetraevanghelul Ieromonahului Spiridon, a 15th-century Romanian manuscript; image from Capodpere 2019, Google Translate page here; image assumed allowed under public domain.

2023-11 Austin Emacs Meetup

Ancient manuscript writerThere was another meeting a couple of weeks ago of EmacsATX, the Austin Emacs Meetup group. For this month we had no predetermined topic. However, as always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off; hopefully people did not save their bon mots for the period after my departure.

Also we changed the name of the month from “November” to “No-Vim-Ever”.

#1 was the organizer.
#2 was a no show.
#3 was again the developer from OKC.
#4 was a new person. She is a software developer looking into Emacs and other editors. This was her first meeting.
#5 was our professor in OKC.
#6 was a hardware developer in north Texas.

Here is a list of the modes and packages that were mentioned (I will not list the big ones here, like Org, Doom, Spacemacs):

  • Games
  • Eshell
  • Calc
  • TRAMP – The manual always writes it “TRAMP”, but other pages on the gnu.org site go back and forth between that and “Tramp”.
  • MinEmacs
  • nano-emacs
  • Emacspeak

Here are the non-Emacs topics that came up:

  • Routers
  • Helix text editor
  • Vim
  • Keyboards

When I joined the call #3 was sharing his screen and playing a text adventure game that comes with Emacs (probably Dunnet). Then #3 started the Emacs Doctor. It is just a bad ELIZA and it was as dumb as the magic eight ball.

Why did you say that?

Because it’s true.

I mentioned that someone made an Emacs package to play Space Invaders in Emacs.

I asked if anyone knew of a router that did not connect with Phone. I have a wireless router that is about twelve years old. I have it configured that I can only change the configuration from a wired connection, which I think is good for security. I have looked into new routers, and a lot of them allow you to configure them from Phone, which I think is a stupid idea. I think doing everything on Phone is a bad trend. I have seen people pull halfway out of parking spaces and stop or stop in the middle of crossing a street because they are looking at Phone. As Pascel wrote in section 2:139 of Thoughts: Mankind’s problems come from his inability to sit in a quiet room alone. Phone is not the answer.

Unfortunately nobody knew of a router that did not use Phone, or if it was possible to disable configuring from Phone. #3 used several routers to have a mesh network throughout his palatial estate, and so liked the option to use Phone. Personally I wish everyone would move away from Phone.

I feel like people just repeat what they hear without asking themselves what they actually want. Now it’s all Phone, SaaS and ChatGPT. What everybody else calls “progress” seems to me like another way to give away the keys to the kingdom.

Then the discussion turned to Eshell. #1 showed us a way to pipe command output to buffer in Eshell:

ls  > #<mybuffer>

#1 uses a lot of aliases in Eshell. We talked a bit about doing math in the Eshell and using Eshell in the REPL, although you can also do math in a scratch buffer. None of us used Calc. One reason I do not use Calc is I do not like the way it makes two small windows instead of using a large window. Perhaps there is a way to do that that I am not aware of. #3 tried to connect to a Vagrant VM running on his machine with TRAMP, and it took him several minutes. But once he did, he was able to use Eshell on the VM.

#4 was here for their first meeting. She started with vim on Ubuntu, and looked at Helix, which I had never heard of before. She is using MinEmacs, which is a lightweight Emacs configuration. She tried Doom, but found it overwhelming. I tried Doom, and I also found it a bit much. It seems like all the bad things about ORMs: You still have to know the thing it is trying to shield you from. Plus Doom has its own script, and requires environment variables. #3 does not like it because it uses a lot of macros. The sweet spot for Doom seems to be people who are coming to Emacs from Vim; that crowd loves it. I would recommend beginners avoid Doom.

#1 and #3 both like nano-emacs. #3 mentioned Crafted Emacs and Prelude. One thing #3 said he liked about Prelude was that it was straight Elisp, and one thing he did not like about Prelude was that he thought it took a while to start up. But you can start an Emacs instance and keep it running for a long time, so startup time might not be that important. If I was not using my own config, I think I would go with Prelude.

At one point #4 said something that implied she learned about using Org outside of Emacs and decided to try the One True Editor.

#4 also said she wants an editor that is functional but also has nice aethetics. There are a lot of themes to choose from, so this should not be a problem. Right now I just use the default, but at some point I might go with one of Prot’s Modus Themes. The three I like are modus-operandi, modus-operandi-deuteranopia and modus-operandi-tritanopia. A few people on the call said they liked the look of nano-emacs. There is a site dedicated to Emacs themes called Emacs Themes. There is also a themes section on the Awesome Emacs page.

There was a little talk on how to learn Emacs. Long ago #3 used Emacs on AIX, with no docs installed. They needed to get docs from another tape, but that was never done, so he learned from C-h t, which tells you all you need to know. You can reach this with M-x help-with-tutorial. There is a good “Beginner’s Guide to Emacs” on the Mastering Emacs site. When I learned, I first learned with about half a dozen to a dozen commands that I got by on for years. I wrote them down on a piece of paper that I kept at my desk at work. It is amazing to me that people never seem to want to write stuff down. Don’t play the game of “Who can spin the most plates in their head?” It is a stupid game to play. If someone is trying to get you to play it, get them out of your life. If you are trying to get other people to play it, then you do not need to ask Reddit. I can tell you that you are the problem.

A few members asked about voice control for Emacs. One member uses a lot of apps in addition to Emacs, and has to do a lot of copying and pasting between them under tight deadlines. A few people talked about Emacspeak (website, EmacsWiki page, Github page). There is one named Talon, although I am not clear if it is proprietary or open source. #1 worked with a blind programmer that used Emacs.

#1 showed us his “40% keyboard” which has two space bars. He uses one of the space bars as the control key. I think he is using this one by Vortex. He showed it on the camera, and someone said it looked like one of the keyboards that Emacs was originally written on. I thought Emacs was originally developed on a machine with the Space-cadet keyboard, but I could be wrong. There is some speculation about how the space-cadet keyboard got its name, but I don’t think anybody really knows anymore. #3 had a keyboard that would not allow key-remapping. The vendor would not change things since they insisted nobody uses control key. so he had to change keyboards, even though he loved that keyboard. He did not give the name of the vendor. Sometimes when a vendor says “Nobody does X”, they really mean: “Our product can’t do that.”

Usually when Emacs people talk about Emacs pinky I think: Why not just move your left hand an inch? Speed is great, but it is not the only thing that matters. I think in a prior meeting someone mentioned they are trying to use the right control key more often. On the other hand, if you are doing a lot of copying and pasting between multiple programs under a tight deadline, that might not be enough. This is something I have just discovered: a lot of vendors do not want their applications to talk to other vendors’ applications.

This post was created in Emacs with Org Mode and Love. You’re welcome. And stop looking at your stupid phone all the time.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from the Trebizond Gospels, a 12th-century Byzantine manuscript housed at The Walters Art Museum, manuscript information here, image from World Document Library, image assumed allowed under public domain.

2023-10 Austin Emacs Meetup

There was another meeting a couple of weeks ago of EmacsATX, the Austin Emacs Meetup group. For this month we had no predetermined topic. However, as always, there were mentions of many modes, packages, technologies and websites, some of which I had never heard of before, and some of this may be of interest to you as well. I was only on for an hour before I had to drop off; hopefully people did not save their bon mots for the period after my departure.

#1 was the organizer.
#2 was a no show (a developer in the Dallas area).
#3 was again a no show (the Esteemed Gentleman From Oklahoma).
#4 was the engineer who lived in north Texas. He is now in College Station because his wife is in grad school. He is working for the same company remotely.
#5 was a seminary student and former software developer in the Bay Area.
#6 was a sysadmin in Kansas.
#7 was a recently retired software developer. His last day was the Friday before the meeting. He had tried to attend the meeting a few times before, and this time was successful.

Here is a list of the modes and packages that were mentioned (I will not list the big ones here, like Org, Doom, Spacemacs):

Non-Emacs Topics:

  • Font Awesome
  • Security and the software industry (this took more time in the meeting that is apparent from this write-up)
  • Learning and Tech
  • If it’s not Lisp, it’s crap

We had quite an interesting bunch this time. Like this writeup, we spent a lot of time talking about things other than Emacs (and thankfully it wasn’t ChatGPT this time).

Let me just say that EmacsATX attendees are like my children: I love them all equally. That being said, this group was one of the most interesting combinations that we have had in a while.

We did not have a set topic this time. #1 was having technical issues, so I introduced myself and talked about my Emacs journey. Then we went around the list and asked the others to introduce themselves. #1 and I both noticed that #2 and #3 are not only our most talkative regulars, but they never seem to be at the same meeting. Coincidence? I think not.

We went in random order as we went around the horn.

#7 tried to attend a few times and was never able to make it. The Friday before the meeting was his last day working. He had been a software developer for decades. He started using Emacs in 1982 on VAX machines (both VMS and Unix). He has used almost every variant of Emacs. He listed a few I had never heard of before; they are all listed on the Wikipedia page for Emacs.

Fun fact: The first variant of Emacs started out as macros for an editor called TECO which was a modal editor. The next time a vim-mer brags that Vim is a “modal editor”, we can say: Been there, done that, got a better way.

He did not mention TECO Emacs, but he did say he used Emacs on Lisp Machines (I assume he meant one or more of EINE, ZWEI or Multics Emacs), Gosling Emacs and GNU Emacs. He called GNU Emacs “Stallman Emacs”, which may or may not appease Stallman (considering how much time he spent pestering people about saying “GNU Linux” instead of just “Linux”; it is amazing how many people think “freedom” means “You are free to do what I think you should do”).

He said that the tty on Vaxes was different and you had to hit the keys separately, which sounds very un-Emacs to me. He also said he is a big user of Eshell, even on Windows. He is the only person that I have met that I know of who has used one of the famous Space Cadet keyboards. I have done some Googling on them, and nobody seems to know why they are called “Space Cadet” keyboards.

#4 is still working as an engineer, but he has relocated from northern Texas to College Station because his wife is attending graduate school. He mentioned that he wrote his dissertation in Org.

#5 was a former software developer from Texas who is now a seminary student in the Bay Area. He used Emacs for programming, and now he uses it to write papers. And now he can profess two gospels.

#6 was a sysadmin who is a closet Emacs user, and uses Org for as much as they can.

One of the participants said they liked nano-emacs, which is an Emacs configuration repo that has nothing to do with the GNU nano editor. Nano-emacs requires a few fonts, so that led to discussion of other packages for fonts and icons, like svg-lib (which is by the same person who wrote nano-emacs), all-the-icons, and Font Awesome. Font Awesome is a freemium font and icon toolkit that is not part of Emacs. There is an Emacs package that connects with Font Awesome (called fontawesome); I have not used Font Awesome, so I do not know if you need the fontawesome package to use the Font Awesome package from Emacs. A few of the members used these packages to make their Org files look better. If you use Emacs and want to get more into design, these are good places to start.

I do not know a lot about design, but I do have a few opinions. I like a high contrast between the background and the font, and I hate the animated icons that fall like rain, like on the Anti-Meta Fedi Pact site (link here, archive here); bad aesthetics aside, stay away from FaceCrook and anything associated with Mark Snakerberg whenever possible.

Then the discussion went to non-Emacs technical topics for a while. Someone mentioned The Cathedral and the Bazaar by Eric S. Raymond (link here, Wikipedia page here). We went back and forth on whether or not one of the central theses of the essay is still true: Linus’s Law, or “given enough eyeballs, all bugs are shallow”. The code that caused Heartbleed had been in OpenSSL for two years before someone found it. I pointed out that while a bug could be in open source code for years, once it is discovered, developers pinpoint and fix it very quickly. Many proprietary vendors are not diligent about fixing bugs, and sometimes have a hostile relationship with the security community (Oracle is a prime example of this). #4 mentioned the article A Generation Lost in the Bazaar, which is a rebuttal to ESR’s essay.

This led to a discussion about the relationships between both open- and closed-source software and security. In open source, developers work on what interests them, while in proprietary firms the priorities are features, sales and avoiding bad publicity; for them, security is at bottom the list. #7 said he had worked in several industries, and the one that cared the most about security was finance, and that was because it was imposed upon them by regulation. He spent a lot of time in what he called “audit-proofing mode”, which actually sounds like an Emacs package.

Then we talked about what I would call a prevalent anti-development bias. #4 said that at his job they use some CAD tools, but his co-workers refuse to learn any technology beyond that. Meanwhile, by learning some programming and scripting he has saved himself a lot of work by automating a lot of tasks. I find it irritating that as technology people we are told we have to keep up with technology, AND learn “the business”, yet the “business people” never have to learn anything at all about technology, and get to coast with MS garbage. Many times I have been brought in to explain why something went wrong, and after explaining things, some business pinhead will say something like, “That is a technical explanation, and I do not do technology.” First off: What answer are you expecting? “Gremlins did it”? Secondly: Everything runs on software these days. Learn about technology, or go back to pen and paper.

To a certain degree, some people are willing to learn some technology, but only something by MS, which I really do not understand. They will learn the ins and outs of a product by the biggest software vendor on the planet, but ask them to learn something not from MS, and suddenly “Tech is not my area.”

God forbid anything get in the way of talking on the phone all day.

We agreed that the world would be a better place if more people knew Lisp and were willing to learn it. I used to think Lisp was strange, and while I am not the world’s foremost Lisp expert, once you learn it then it is not that hard. Perhaps I will write a post about it. #4 (and I think #1) mentioned that Structure and Interpretation of Computer Programs (aka SICP) changed his life (page here, PDF file here). As the Teach Yourself CS site put it: SICP is unique in its ability—at least potentially—to alter your fundamental beliefs about computers and programming. (I have heard the same thing about Thinking Forth, which is on my ever-expanding TODO list.) We agreed that MIT made a mistake going away from SICP (see here and here). MIT thought that since most programmers do not build systems from the ground up anymore, there is no need for the “first principles” approach, or what SICP co-author Gerald Sussman called “analysis-by-synthesis”. Now we just hook black boxes together, which Sussman calls “programming by poking”. Maybe he’s right, but what about whoever built the black box? Shouldn’t they know theory and first principles? And if MIT is not going to teach it, then who will?

Lisp has atoms and expressions, and that is it. Much simpler than other languages.

I mentioned I might go through How To Design Programs as a preparation for SICP. It was written by the leaders of the Racket project (site here, Emacs package here). They wrote HtDP as a version of SICP for people who do not have the hard-core math background that an MIT would have (see Wikipedia page and linked PDF file). A few of the people on the call with STEM degrees who had been through SICP said that while it had some math in it, the multi-variate anti-matter temporal calculus with pesto sauce in SICP was not that hard. At least I think that is what they said.

Even the Racket team is trying to move away from S-expressions. They are implementing a new language called Rhombus (see paper here). Prefix notation in Lisp is not that hard (although I admit the one place it falls down for me is inequality operators). Just about everything other language uses infix notation. I am not sure how being like everything else will make Racket more popular. Everybody wants the power of S-expressions without using S-expressions. I just do not get the push from some people to use something else when S-expressions are not that hard. There are even a few SRFIs about it: 105, 110 (which has the same two co-authors as 105) and 119. Every time I look at one of these they usually look like Python. Rhombus looks like it uses more punctuation characters than Racket.

Not only do Lisp variants use fewer characters most of the time, even the parentheses in other languages are doing more work than in Lisp. As this HN comment pointed out, parentheses in C are overloaded: The parentheses in for (;;) are not the same as those in 2/(2+4) which are not the same as those in (double) p, which are not the same as those in p(42)….Lisp has parentheses that do one darn thing in the read syntax—at least when they are not literal as in “(” or #\(.

Every time someone in the Elixir community brags that they have macros that are as powerful as macros in Common Lisp, I always think: Wouldn’t it have been less effort to just learn Common Lisp? With Racket, people who have made a Lisp implementation are now working a whole new language….to do what their Lisp implementation does. The author of Beautiful Racket, Matthew Butterick, has a few thoughts on Rhombus. He has a better handle on what is going on in Racket than I do. He does not see the point of Rhombus, and it will probably not increase Racket’s popularity. He also posts that the port of the underlying Racket engine from C to Chez Scheme is not without issues (post here), since the Racket team has to maintain their own fork of the Chez Scheme repo. He wrote that post in 2021; as I am writing this, the Racket fork of Chez Scheme is both 1597 commits ahead and 2324 commits behind the main branch of Chez Scheme (number current as of 2023-10-24_20:18:54). I question how well the Racket project is being run these days.

Nevertheless I might go through HtDP at some point in the future. I have learned to not make promises to myself.

One of the authors of HtDP, Shriram Krishnamurthi, went his own way and made a language called Pyret, which someone brought up in the meeting. He has another book called Programming Languages: Application and Interpretation (aka PLAI), which does use Racket and I think he still uses in one of his courses. The second edition from 2012 is online and the third is available as a PDF from the PLAI website. There is a playlist on Youtube of lectures from one of his courses that he gave in 2012; I think it is the course that PLAI was used for, but I have not looked at them so I am not sure.

Perhaps all of us Emacs users are cursed: We think efficiency means automation and using the best tools, while to a lot of people efficiency means coasting along with inferior tools that everybody else knows simply because everybody else knows them.

Before I left I gave a few thoughts on getting started with Eshell. This post is already pretty long, so I will post about Eshell in a couple of days.


2023-10-30_17:53:41: I logged into LinkedIn today, and someone who stayed on the call sent me a few links for things that were discussed after I left the call. In the future I will be more diligent about checking my messages. Here are the links:

  • Orgmunge, which is a Python module that per the repo’s README files allows you to “modify Org documents programmatically from within Python.” I skimmed the README, and it looks like there are no links to the main Org website. Perhaps this is a sign that Org is gaining some traction.
  • ejc-sql: This uses Clojure and JDBC to turn Emacs into an SQL client. Clojure is a variant of Lisp that is written in Java and runs on the JVM. So I am sure it is a powerful package, but since it uses Clojure you need to bring in the JVM and a lot of other dependencies to use it. On the other hand, you can use it with a lot of databases, including MS SQL Server and Oracle. Sometimes open source projects do not connect to proprietary databases either due to licensing issues, philosophical purity or spite. This project has been archived by the owner, but I could not see in the README or the commits why they chose to do that or if they recommend a replacement.
  • Khoj is an “offline-first, open source AI personal assistant that is accessible from Emacs, Obsidian or your Web browser” (Who cares about those last two? Not me.) (site here, docs here, Github repo here). Like all things AI it has some Python dependencies. It looks like you can run this locally against your own files and data.

This post was created in Emacs with Org Mode and Love. You’re welcome.

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”. Plus it gives participants some deniability. Most people’s numbers are based on the order they are listed on the call screen, and the same person may be referred to by different numbers in different months. A few regulars have regular numbers.

I am not the official spokesperson for the group. I just got into the habit of summarizing the meetings every month, and adding my own opinions about things. The participants may remember things differently, and may disagree with opinions expressed in this post. Nothing should be construed as views held by anyone’s employers past, present or future. That said, if you like something in this post, I will take credit; for things you don’t like, blame somebody else.

Image from a late 9th- or early 10th-century Gospel manuscript made at the monastery of Saint Gall in eastern Switzerland, manuscript housed at Bavarian State Library, webpage information here, image from World Document Library, image assumed allowed under public domain.