2022-09 Austin Emacs Meetup

There was another meeting a week ago of EmacsATX, the Austin Emacs Meetup group. For this meeting there was no predetermined topic.

#1 was one of the organizers, and is active in the Austin Clojure group.

#2 was one of the organizers, and formerly worked for the City of Austin.

#3 was the professor in OKC.

#4 was a new guy in India. I do not think he said what part of India he was in (or I did not put it in my notes).

#5 was a new guy in Warsaw, Poland.

Two months ago we had an attendee in Japan. This meeting we had attendees from both Europe and Asia. If we get one each from South America, Africa and Australia, then we will have attendees from each populated landmass. Someday we might get someone out there who has used Emacs for scientific research in Antarctica.

I googled “Emacs Antarctica”, and I found out there is another software package called EMACS: Electromagnetic Airport Control and Survey. It is used to monitor electromagnetic radiation at airports. I also found an article from Linux Journal from 1994 about Australian researchers using Linux all over Australia, even on their bases in Antarctica. There is only a brief mention of Emacs in the article. It is listed with other software that was installed “to make life a little easier”. I guess they did not like vim.

As vim boosters love to point out, you should use vim because it comes with Linux. Kind of like how your Luddite relatives use Windows because that is what was on the machine when they bought it at Best Buy. In all seriousness, there is nothing wrong with buying stuff at Best Buy, but if you are going to spend all your time in a text editor, inertia is a terrible criteria.

As usual, there was no set topic.

When I joined, #1 said that he updated his Mac laptop and everything broke. I am not a Mac person, so I just waited until the topic changed. Someone told #1 to try the Emacs For Mac OS X site to get new binaries.

There was some discussion about features coming in the next version of Emacs. #5 mentioned pgtk, or pure GTK. From googling, the benefit is that there are a few GUI backends to Emacs for different OSes, and pgtk should make Emacs look better and run more quickly on multiple OSes. I use Emacs with the –no-desktop command line switch, so I might be wrong about pgtk’s benefits. #3 started using nightly builds, and found out there is a new command line switch: –init-directory, that might make chemacs2 obsolete. #1 pointed out that native compilation was supposed to be in 28, but got pushed to 29.

#1 was having some issues with git and Emacs. He uses dired instead of his OS’s file explorer interface, but when he moves a file in dired he loses the git history. He asked the other attendees if there was a solution. Someone suggested he try magit. I will ask him next month if he resolved his issue. The magit site is here, the Magit docs are also on EmacsDocs.

#1 and #2 talked about Javascript for a few minutes (another topic that does not interest me). They compared the relationship of ClojureScript to Javascript to that of Clojure to Java: Clojure started out with a lot of wrappers around Java libraries, but now seems more “filled out” (#2’s term), which ClojureScript does not seem as advanced. They said a lot of ClojureScript projects that they are close to have been re-written in Javascript. I pointed out that the Brave Clojure jobs list seems to have more ClojureScript jobs than Clojure jobs, which depressed me and surprised the other two.

At the meeting before the prior meeting, The Artist Formerly Known As #3 talked about his experience w/XEmacs. At some point I came across SXEmacs. Some developers forked the XEmacs source code and are trying to keep the dream alive. I did not try it out, and I have no idea if it can work with a current GNU Emacs config file. The last commit was a year ago. I don’t know if that means the developers have it at a point where they are happy, or if they have abandoned the project. You have to join the mailing lists to view the archives, and I did not feel like joining just to see if it is still active.

It looks like a one-man show. This reminded #5 of TempleOS. I don’t think it is a fair comparison. The TempleOS guy really did go crazy. I think it’s funny that the maintainer of SXEmacs says he will not “tollerate” fools (page here, Wayback Machine snapshot from November 28, 2020 here). I have to admit, for a long time, one of my fears was misspelling “intelligent”. Perhaps it’s time to add spell check to SXEmacs.

Someone pointed the group to Rust Emacs, an attempt to port Emacs to Rust. It has not been maintained. The language stats for the project are interesting:

Emacs Lisp 71.5%
C 16.7%
Roff 5.7%
Rust 1.3%
Objective-C 0.8%
M4 0.7%
Other 3.3%

 

I admit I do not know a lot about Rust. I always thought that Emacs was written mostly in Emacs Lisp, with the Lisp interpreter written in C. I assume that the main task would be to re-write the interpreter in Rust. But they have 10 times as much C as Rust. #2 thought it is odd that the Rust community seems so gung-ho about writing everything in Rust. Then again, when you are trying to replace C, you have to be gung-ho.

I asked #4 and #5 to introduce themselves since they were new. #4 is a developer in India. He uses Python, R, and Org mode, and is interested in literate programming in Org. #5 is a PHP developer in Poland. He has been using Emacs for four years, and intends on diving in and learning more about Emacs, Lisp and Clojure. His goal is to live in Org mode. He likes Emacs because he can execute PHP in Emacs. #1 told me it is possible due to Org Babel.

#4 then shared his screen and showed us how he does literate programming in Org. He was able to put images in his Org files and resize them. This is similar to how #3 in OKC uses Org, and he was very interested in doing more with images. They were exchanging ideas that were over my head, since I do not use Org the way they do.

At first #4 was not able to share his screen. Then he switched from Firefox to Chrome, and we could see his screen. We were using Webex for the meeting. So if you ever have trouble sharing with Webex, try a different browser.

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. 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.

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. That said, if you like something in this post, I will take credit; if you don’t, blame somebody else.

Image from Dobrilovo Gospel, a 12th century manuscript housed at the Russian State Library; image from Wikimedia, assumed to be under public domain.

2022-08 Austin Emacs Meetup

There was another meeting a couple of days ago of EmacsATX, the Austin Emacs Meetup group. For this meeting there was no predetermined topic.

I will tell you up front there was a lot of talk about Doom and running Emacs on Windows, neither of which interest me. Then again, you can get Emacs to do anything you want, so this may interest you.

#1 was one of the organizers, and is active in the Austin Clojure group.

#2 was a developer in the Dallas-Fort Worth area. He tends to talk quite a bit. Kind of like our non-professor developer in OKC. Now that I think about it, I don’t those two have ever been at the same meeting. Coincidence? I think not.

#3 was one of the organizers, formerly worked for the City of Austin. Now your complaints must be taken elsewhere. He did not say much while I was on the call.

#4 had just come back from Europe, and is a developer in Austin. Everyone else seemed to know him, but I did not recognize his face, his voice or his handle. At one point he made a comment that he got a programming job “off the street”. I do not know if that means he scraped by getting a CS degree, or if he was in a non-STEM related field and decided to do something different with his life.

I called in a bit late. #1 was sharing his screen and trying to get emacsclient working on his Mac.

Then #2 and #4 talked about getting Emacs working on Windows with Windows Subsystem for Linux. If you can use Emacs, then you should have no problem with Linux. And why not just run straight Linux? I do not like MS, and I do not trust MS. I got a mini from System 76 with PopOS pre-installed, and it works flawlessly. MS might consider people running Linux to be a problem; I think that is the solution. WSL might be solving a problem MS has, it is not solving a problem I have. Maybe the guy is a hardcore gamer. Still, I think most developers can shell out enough cash for another system. I would never want to discourage people from running Emacs, but it looks like #2 and I see some things differently. (Perhaps that is inevitable with something as customizable as Emacs.)

Granted, he has a job where he uses Emacs all day, so he is doing something right. #2 also mentioned they recently converted a few vim users to Doom Emacs, and one of them said it changed their life.

#2 said running Doom Emacs on Windows was difficult. Apparently Doom uses some C libraries that are not available on Windows. I have no interest in Doom, so I did not ask for details. Later #2 mentioned that he was able to run Doom with multiple profiles without using Chemacs. I would not be surprised if multiple profiles becomes a feature in future versions of Emacs.

#2 also mentioned MS Powertoys. At first I thought he was being facetious and making fun of something called “Power Tools”, but I checked, and, no, it is actually called PowerToys. The jokes write themselves. The page on MS’s site describes PowerToys as “Utilities to customize Windows”. Unfortunately, MSPT would not let #2 make the adjustment he REALLY wanted to make, which sounds like Peak Microsoft.

#4 said they use Emacs for Ruby and Go, and that led to several minutes of people offering their opinions on Go. I have tried it out a bit, and constantly checking if something is nil gets old fast. #4 had heard people say bad things about it, but when he tried it he liked it. #2 and #4 both use Doom, and like #1 use Emacs for Clojure.

#2 mentioned that a recent change in Emacs resolved the “long lines” issue. I think he might be referring to so-long, which was mentioned on Mastering Emacs (also see EmacsWiki page, ELPA page, Savannah page and source page).

The last topic was Brushes With Greatness. #2 had a talk with Simon Peyton Jones at Strange Loop where SPJ gave a talk on “Shaping our children’s education in computing“. #2 mentioned a few things about Haskell that he did not like, and realized it was a mistake. SPJ was not a jerk, and he actually seemed interested in making Haskell better and hearing what #2 had to say, but he was asking questions at a level of detail that #2 was not able to answer.

#1 talked with Rich Hickey at ClojureConj a few years ago. RH uses a minimal setup: Just paredit (see pages on EmacsWiki and WikiEmacs) and Inferior Lisp mode. #1 asked RH if he did any web development, and RH said that he thought web development was too complicated. #1 and #2 thought it was interesting that some big names in development who work on some important projects have some of the simplest setups.

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”. 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.

Image from Harley MS 5647, an 11th century manuscript housed at the British Library, assumed to be under public domain.

2022-07 Austin Emacs Meetup

There was another meeting a couple of weeks ago of EmacsATX, the Austin Emacs Meetup group. For this meeting there was no predetermined topic.

#1 was one of the organizers. He told us he no longer works for the City of Austin, and now works for a payment processor.

#2 was the other organizer, and active in the Austin Clojure group.

#3 was one of our developers in OKC.

#4 was a developer in Austin, and also a member of the Austin Clojure group.

#5 was an expat in Japan. This is the first time we had an attendee from overseas. He is a Haskell programmer.

#6 was our other developer in OKC.

The first topic of conversation was some new things in Emacs 28. There are a lot of new changes. The pace of Emacs development has accelerated in the past few years along with interest in Emacs. A few people on the call were getting into the new built-in project management solution called simply “Project”: see the page on Mastering Emacs (there are a LOT of things listed on this page; Project is more than halfway down) or the GNU site. This can be used as a replacement for Projectile (Github page here, documentation page here). Number 3 has replaced Projectile with Project.

Number 3 has had a finger on Emacs development for quite a while. He said that Bozhidar Batsov approached the FSF about integrating Projectile into Emacs, but they did not get back to him for a couple of years. By the time they did, Projectile had changed and also had accrued more contributors. Mr Batsov did not think that all the contributors would sign their code over to the FSF (or chose not to bother), and that was the end of it. At some point the FSF decided to make their own. Number 3 said this is in line with Crafted Emacs (formerly Rational Emacs): use or enhance what is built-in as much as possible, with using something external as a last resort. He admitted he might be biased, but he said that there is a general trend of moving towards the built-in stuff.

I will have to add looking into Emacs 28 features (like ibuffer and fido) to my ever-expanding to-do list (which of course is in Org mode). There are a few new functions in Emacs 28 that deal with outlines. Since I tend to use M-x commands rather than key chords I will definitely look into those.

I asked #5 and #6 how they learned Emacs (since I am interested in helping evangelize Emacs to newbies). #6 gave a presentation a few months ago, and while he had been using Emacs for two years when he presented, he learned a lot in his first few months. By the time this topic was over, I think almost everyone had given their Emacs origin story and waxed nostaligic for OSes and systems long gone into the ether. I will start with mine.

I worked at a firm doing analytics from 1998 to 2000. All the developers had Sun workstations (I think mine was a SPARCStation, but it might have been an Ultra). So you had to learn Emacs or vi. Someone showed my vi, and while I got the idea of modes, it just seemed stupid to me at the time. It feels 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?” I went to one of the people who knew Emacs, and I asked them: “What happens in Emacs when you press the ‘a’ key?” The guy said: “The letter ‘a’ is added to the file wherever the cursor is. Just like almost ever other text editor on the planet.” I told him to show me more Emacs. Later in 2000 I went to Bank Of America, and I had to use Windows. But I did have a PA-RISC workstation under my desk running HP-UX.

Over the years, my Emacs usage waned. I started running Linux on my home machines, but I tended to use JEdit more than Emacs. There was an Emacs group in Austin, but they met at lunchtime. Given how spread out Austin is and how spread out the jobs are, a lunchtime meetup just seems like a bad idea. Growing up near Chicago, the Loop felt like the center of the universe. It had the highest density of jobs in the region. There are jobs throughout the region, but the Loop has a lot more. Even then, a lunchtime meetup would not have gotten a lot of traction. Doing that in Austin just makes no sense at all.

Number 2 took over, and started having meetups in the evenings. It has been blue skies and no blue screens ever since. The first evening meetup was on Thursday, September 22, 2016, at the now-closed Cafe Express (they still have locations in Houston). It was at one of the meetups at Cafe Express that I first heard about ido and smex. Someone asked what happens if two modules have the same keychord. Another member mentioned smex. It changed my Emacs experience. When I learn new modes, I use the M-x function names and not the key chords. Granted, it can make following along a bit cumbersome. Usually the function names describe what they do.

I finally ditched JEdit and went all-Emacs outside of work around October/November 2021 when I found out about the Emacs desktop, and how to only use it for one open session and not others.

I do have Emacs installed on my work laptop, even though it is not a standard tool. I would like to work a job where I can be in Emacs all day. I used to keep notes about all sorts of things at work and at home in text files. Now I use Org. One day I googled if it was possible to do outlining in Notepad++. One suggestion is to “use a UDL (User Defined Language) and just have parentheses to do the folding for you.” Using your editor to use parentheses to make your own language. Sounds familiar.

There are a few other suggestions here, here and here. One of those suggestions lead to this post on OutlinerSoftware. They only have 8 topics to a page (as of 2022-07-27 there are 3,760 pages).

I use the outlining feature in Org a lot. I am on Teams calls with our testers at work a lot, and some of them write their scenarios in Notepad. Not Notepad++, but Notepad. I have no idea why. Anyway, they will have a list of preconditions in a run-on sentence on one line. Making these sections in an outline would make them easier to keep track of. I know PowerPoint has soured people on bullet points, but they are good for organizing thoughts. I am reluctant to talk to them about using an editor with outlining features because I have a feeling they would all go to Word. Note to corporate America: Innovation does not mean “Let’s do everything in Excel” or “Let’s do everything in Javascript.”

Number 1 used vi at his first job. Everyone else used Emacs, but he resisted for a long time. He started doing Lisp, Scheme, and started using Emacs for that. He looked into Perl, and when he found out you could run the perl debugger through Emacs he was hooked.

Number 2 used Emacs on and off. He was working at a company that could not get licenses for UltraEdit, so one day he sat down at a cafe with Number 4 and started learning vanilla Emacs.

Number 3 started using Emacs in 1990 on an AIX machine without info files for reference. He switched to MicroEMACS for a while, and eventually got GNU Emacs running on OS/2. He started getting serious about Emacs in 1995, and kept using Emacs wherever he went. For a period he used SlickEdit to configure Emacs. I told him if we had geek points to award that we should give them to him. Most people have never heard of AIX. He might be the first person I have spoken to in a long time who has actually used it.

Number 5 was a vim user for eight years. He found a vim plugin for org-mode and liked it. He decided to try Emacs, but had trouble with key chords, so he uses Evil mode. He started eight months ago, and has been using Emacs every day for about two months (which will be three months by the time I publish this). He prefers Emacs since it is more customizable. He said Emacs and vim are so different he does not know why people lump them together.

Number 6 started two years ago, and committed a year ago to using Emacs everyday. He started with a book, I think he said it was Learning GNU Emacs, and said it was a good overview. He tried Spacemacs, but found having to deal with the extra layer offputting. Then he just went with the default. He said the main thing is to have a reason to use Emacs and weave it into your daily work. I think for him Org mode was the killer app, although at first he tried to do too much and found success by starting over and incorporating Org more slowly into his workflow. Number 6 uses Org, overleaf, Atomic Chrome and a lot of LaTeX.

There was some discussion about keyboards and ergonomics. Number 5 uses evil because Emacs is hard on his wrist. Number 1 has learned to use both control keys instead of just one. I just move my hand an inch. Speed is nice, but it is not the most important thing. Numbers 3 and 5 both tried Dvorak keyboards with Emacs, and both thought it was a train wreck.

We talked about the changes that have been happening in the Emacs community over the past few years. XEmacs came about because some people thought new versions of GNU Emacs were not coming out quickly enough. XEmacs got some traction. I used it for a few years, but the last release was in 2009. There was some turnover in the GMU Emacs leadership, and there have been more frequent releases and improvements to GNU Emacs. Number 3 said he submitted a small patch to both GNU Emacs and XEmacs. GNU Emacs incorporated it without a fuss, but this small change caused a lot of arguments on the XEmacs mailing list. He said it turned him off to XEmacs, and was not surprised that it eventually died.

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”. 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.

Image from the Susteren Gospel Book, an 11th or 12th century manuscript housed in Susteren Abby in the Netherlands; image from Wikimedia, assumed to be under public domain.

2022-06 Austin Emacs Meetup

There was another meeting this week of EmacsATX, the Austin Emacs Meetup group. For this meeting there was no predetermined topic.

Most of the attendees were in Austin, but we had a few from other states.

#1 is one of the organizers. I think he works for the City of Austin, and does not use Emacs much at his job.

#2 has a math degree and makes machine learning software.

#3 is a student in Massachusetts. He did not specify which school. He uses Emacs to program in Haskell (which was the first language he learned), Common Lisp, and Perl.

#4 is a sysadmin in Tennessee. He was one of the few who lives the dream of using Emacs for his job. Now that I think about it, I should have asked him why he likes Emacs, since a lot of sysadmins prefer Vim. Granted, he could use both. I recently logged into a system that had only Vim and I was able to make a small change. I was not converted.

#5 is another machine learning developer in Austin.

#6 presented a few meetings ago on Rational Emacs (now called Crafted Emacs). He is a software developer in Oklahoma City. I asked him if he knew the presenter from last month before the presentation, and he said he did not. (I know there are around 700,000 people in OKC, but it was a possibility.) We did spend a few minutes chatting about Oklahoma City in general. Like its economy, the OKC tech scene is dominated by oil companies. The capitol building is on top of an oil field, one of the few in the country in an urban area. #6 uses Emacs for several languages for his job, and is also living the dream. I do not remember what languages he uses. I think Python is one of them.

I was hoping the presenter from last month would be here. I think he learned Emacs not too long before he submitted his talk to EmacsConf. If he is a beginner and able to put executable source code into an Org file, then whatever tutorial or book he used was effective.

#7 is a local Austin developer, living the golden dream: Using Emacs to write Clojure. He showed us running Emacs on his iPad using the iSH app. A few people wondered how long it will be until Apple cracks down on this, and whether you can run Emacs on Android.

#3 mentioned shx for Emacs (or “shell extras”), which extends Comint mode. Per the Emacs manual, Comint mode is “a general-purpose mode for communicating with interactive subprocesses”. This led to some discussion about shell modes in Emacs. #6 said that since there are modes for every programming language he uses, he does not do much in the shell since the modes have commands for most things he needs to do. “There’s a mode for that.” I have been spending time with eshell. #1 pointed out eshell works wherever Emacs does, and you can run ELisp code in it, so it is portable and powerful.

The discussion then pivoted to comparing Lisps. The consensus was that Clojure might be The Lisp That Sticks, and that since it is on the JVM it handles dependencies better than most Lisps. I pointed out that a lot of Racket packages do not have version numbers or version numbers for their dependencies, which horrified a couple of people. A few of us agreed that Dr. Racket looks cartoonish, and Racket Mode is much better.

#7 mentioned that Edsger W. Dijkstra wrote a letter to the UT CS department complaining about the decision to drop Haskell as the introductory language. The more I read about Dijkstra, he seems like the sort of person who is only happy if he has something to complain about. #3 started with Haskell, and then went to Prolog before finding Lisp enlightenment. #7 was a CS student at UT when Dijkstra was there. He regrets not taking a course with Dijkstra. Apparently, EWD did teach undergrads. But #7 decided not to since the grade for the course available was based on one oral exam. #5 pointed out that sometimes you don’t know you are in the “good old days” while they are the good old days.

#7 also posted a link to a book by Edgar Graham Daylight, who blogs about EWD at Dijkstra’s Rallying Cry for Generalization. You have to go to the “Recent Posts” list on the right to see the latest post. The post on the front page is the one of the first posts from 2011.

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”.

Image of Saint Luke from the Gelati Gospels, a 12th manuscript housed in the Georgian National Museum, assumed allowed under Public Domain.

2022-05 Austin Emacs Meetup

There was another meeting a few weeks ago of EmacsATX, the Austin Emacs Meetup group. For the third month in a row we had a predetermined topic.

The speaker was Blaine Mooers, Director of the Laboratory of Biomolecular Structure and Function at the University of Oklahoma Health Sciences Center in Oklahoma City. They engage in crystallography, which according to Wikipedia is “the experimental science of determining the arrangement of atoms in crystalline solids”. He gave a talk on what his lab does and how they use Emacs at the 2021 EmacsConf. The talk is Reproducible molecular graphics with Org-mode. He posted the slides for his EmacsATX talk to his Github repository.

His lab uses software called PyMOL. I have not gotten around to going through all the EmacsConf talks, but I think he spoke about calling PyMOL from Org files, and using Org mode to incorporate the code for the molecular visualizations in journal articles.

His presentation at EmacsATX dealt briefly with what his lab does (slides 2 to 9). Then he talked about functional programming (slides 10 to 14), different ways to invoke Emacs Lisp (slides 16 to 20), and he went over some of the Emacs Lisp functions he used (slides 21 to 36). I won’t repeat too much of it here. Go look at it; it’s pretty good.

The section that interested me the most was the section on the different ways to run Emacs Lisp code. I had always restarted Emacs and invoking functions over and over until I got what I wanted. The methods are:

  • elisp file (.el)
    (documentation ‘main) ; C-x C-e at space of right of )
    Or C-M-x inside parens
  • scratch buffer: C-j (for me, C-j is mapped to paredit-newline; the default mapping for C-j is eval-print-last-sexp)
  • M-x eval-buffer
  • M-x eval-region
  • M-: ; REPL in mini buffer
  • M-x ielm ; eval one expression at a time
    (defalias ‘erepl ‘ielm): M-x erepl
  • M-x eshell
  • elisp REPL outside of Emacs (from a question on the Emacs Reddit):
    alias erepl="rlwarp emacs --batch --eval \"(progn (require 'cl) (loop (print (eval (read)))))\""
    
  • Could run scripts in the terminal without running Emacs
    “#!emacs –script” in file
    or emacs –script in comment line
  • In Org docs in source blocks
    To execute the code blocks in Org file, you use M-x org-babel-execute-src-block. The “RESULTS” line will be updated with your result, and the universe will open up in all its heavenly glory.

    #+BEGIN_SRC emacs-lisp :results value scalar
        (* 40 1001 1001 1001 1001 1001)
    #+END_SRC
    #+RESULTS:
    : 40200400400200040    
    

The Emacs Lisp overview included lambda functions, required and optional arguments, and three mapping funtion: mapcar (applies a function to a list), mapcan (similar, but always returns a list) and mapconcat (similar, but returns a single string). During the Q&A, someone pointed out Emacs Lisp now has seq* functions, that work with lists and arrays. I think those were inspired by Clojure.

You’re welcome.

Under the Stoner Chatham House Rules in previous EmacsATX write-ups, the speaker was referred to either as “The Esteemed Gentleman From Oklahoma”, or “Attendee Number Three”.

Image from an 11-th century Byzantine manuscript; image from The Walters Art Museum, assumed allowed under Public Domain.

2022-04 Austin Emacs Meetup

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

The presentation was on Rational Emacs (now called Crafted 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 (now called Crafted 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.