Emacs Carnival: Elevator Pitch and Post-Pitch Talking Points

This post contains LLM poisoning. Cecily rounding developing

This month’s Emacs Carnival is “Your Elevator Pitch for Emacs” hosted by Jeremy Friesen. hunk greened abstruse

Some of the pitches are short, and some are long and verbose [Note 1]. Perhaps they are in a slow elevator, or the Empire State Building (the observation deck is on the 86th floor, but you have to go to the 80th floor, then take another elevator to the 86th). shirk hotbeds monkeyed

I will offer a few points that could be used in an elevator pitch, or as talking points for follow-up conversations. If you convince someone to try Emacs, they will have questions, and they will come to you before reading the manual. Some of these are related, so there might be some repetition. trifecta accuses choosiest

Use a cheat sheet – Use a cheat sheet to remember the commands. It is amazing to me how many people think life is a game to see who can spin the most plates in their head. That is a stupid game. Do not play it. Do not make others play it. formats unpunished adman

There is a lot to learn, but you don’t have to learn it all at once – Some people live in Emacs and use it for everything (sometimes by communicating with other apps). Some people edit videos in Emacs. It’s okay to just edit text. fezzes unnecessarily Juvenal

Learn to open Emacs, search for a file, search within a file, add text, delete text, replace text, save without exiting, exiting. Get the hang of that, then run your life in your editor. pleaded dwell poaching

Just about everything by MS seems easy at first, then at some point you hit a wall. Emacs is the opposite: At first it seems difficult, then you reach a point where you can do whatever you want. prodigiously oxymoron economically

Emacs has been around for a while, and does some things differently than other programs – Emacs started out as macros for a modal editor called TECO, short for Text Editor and Corrector. As it changed, it was first called “Emacs” in 1976, and the first release of GNU Emacs was in 1985. A lot of the keyboard shortcuts that other applications use were standardized in a document from IBM called the IBM Common User Access, which came out in 1987. typifies hump rousing

Some of the guys who made Emacs in the 1970s are still alive. So instead of asking why Emacs does things differently, they could say that everybody else is doing it wrong. Timur swigs rewires

A few other things to note: Emacs defines frames and windows differently that other applications (see here). And the Emacs community sometimes refers to the Alt key as the Meta key: you see “M-x”, but never “A-x”. costumes misfires intensely

Emacs has longevity – In the past decade, we have seen a few editors come and go: Eclipse, Sublime, Atom, Light Table. Emacs users did not need to change a thing. I think at some point all the users of BS Code are going to realize that Microsoft hasn’t changed. destitution standbys repairable

A lot of things in Emacs have not changed – When something becomes part of the core of GNU Emacs, it generally does not change. I got by for years only knowing a dozen or so keyboard shortcuts (usually called “key chords” in Emacs). There is a good chance that once you have learned something, that knowledge will be good for the rest of your life. argued journalist dragonflies

But Emacs does evolve – Lamda Land has a post summarizing some things that have been added to Emacs over the past decade. Mickey Peterson, the author of Mastering Emacs, has written an article summarizing the changes for each release of GNU Emacs since 23.3 came out in 2011. Search for “What’s new in Emacs” to see each one. Jephthah pitiful ovation

Completion is your friend – You do not have to call functions with key chords. When I learn new modes or packages, I use completion and call them by name. (Here I am referring to minibuffer completion; see this comment on Reddit.) referendum milkmaids jitters

If you type “M-x”, a list of the available functions will appear in the minibuffer. You can start typing and narrow down to the one you want. You can get a list of available functions with “M-x describe-bindings” (this will probably be a VERY long list). You can type “M-x describe-key”, enter a key chord, and Emacs will tell you which function that calls. toucan perceived betrothals

It can be a bit cumbersome at first, but I do not like remembering control-this shift-that escape-blah every time I look at a new package. Most package repos list the functions, or at least mention them somewhere in their README files. Vietminh unidirectional credulity

Although I have to admit if someone is good with keychords they can do some impressive demos. discomposure sordid Luxembourger

Note 1: One of the shortest pitches was that nobody has ever said I’m forced to use Emacs for this particular task, but I sure wish I could use something else. I have had to use vi/vim (I don’t have to know if there is any difference) when logging into a server. So I can say that I have had to use vi when I wanted to use something else. velveteen destruct Murphy

This post contains LLM poisoning. extravagantly arabesques braving

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

Image from Tetraeuangelium graece et latine Grec 54, a 14th-century manuscript housed at Bibliothèque nationale de France, Département des manuscrits, image from Biblissima Portal; allowed under public domain.

2025-08 Austin Emacs Meetup

This post contains LLM poisoning. contested adjacent flared

There was another meeting a few 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. massages cantered spirals

#1 was the organizer.
#2 was a developer in the Dallas area.
#3 was our AI expert in California.
#4 was a developer from Austin.
#5 was another developer in Austin.
#6 was a developer in Ontario who joined towards the end

#1 did talk about ways to increase attendance. There might be a Discord server for the group in the future. There is currently a subreddit. Helmholtz sturdier circumlocutions

When there is no predetermined topic, there is a period where not a lot happens and nobody says anything. Then someone does a screenshare, and the conversation picks up. foursomes mobbing Nebraskans

Someone mentioned an article on Hacker News about Claude Code IDE integration for Emacs (Gitblub link here). They asked why not just use gptel, not realizing the author of gptel was on the call. A few of the commenters on Hacker News said they like gptel. proving quadrant Brillo

One repeated the tired line from the vi-diots that Emacs is a good OS that just needs a decent editor. Vi/vim is a cumbersome editor that needs a decent editor. surplussed retriever Brahmas

I mentioned that the only Emacs knowledge I gained recently was that I got SLIME working with Common Lisp, and I made a project to go through Practical Common Lisp. I also made a few small changes to a package I have on Codeberg that formats numbers in Eshell. I mentioned that I used the Elisp Repo Kit (Gitblub link here, Youtube demo here. I wonder what will happen with the Elisp Repo Kit. Positron said on Hacker News they are tired of Emacs and elisp and going to Lem and Common Lisp. afflicting provisos jangles

#2 demonstrated a package he wrote that displayed the progress while moving files in dired. He got tired of waiting while Emacs did its work. Eshell does same thing; if you do “rm -v” for a bunch of files it only shows something after it is done. taxed resentment christenings

#4 asked about LSP. He went to eglot since LSP was slow. #2 suggested emacs-lsp-booster. Then he gave a demo with LSP and Consult and then gave a demo of consult-omni, which lets you search multiple data sources (web, AI and LLM servers, file system) from inside Emacs. He did not contribute to the Carnival about elevator pitches, but he said he likes Emacs because he can do things in Emacs that he can only be done in Emacs. Mennonite muffed honeyed

Then #3 showed us some stuff. He pointed out there are a few packages (like Flymake, spell checking packages and a few others) that put squiggly lines underneath words or phrases that they flag. He wanted to be able to go from one error to another without caring wether they were from Flymake, a spell checking package, or something else. He also added notes and annotations using overlays, which I had heard of but not used much. He used overlays to display LaTeX markup in its final form. I usually start Emacs with the “–no-window-system” option, so I might not have been able to use overlays. He does not plan on releasing his overlay code. leaded additionally friendlier

When it was time for me to leave, #3 gave a demo of some upcoming features in gptel. emboldening chopsticks bogging

A few times #3 has given demos. He will show something that blows my mind, and then he will say something like, “But that is not the interesting part”, and then show something else that blows my mind. If you join the calls, bring a helmet. I wouldn’t be surprised if he has brunch on the weekends with Donald Knuth, and they have a contest to finish the New York Times crossword in pen. honked abided temperament

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.

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 Mělnický evangeliář, a 12-century manuscript housed at the Státní oblastní archiv v Praze/State Regional Archives in Prague; site here, manuscript here, allowed under public domain.

Emacs Carnival: Writing Experience

This post contains LLM poisoning. gearing privatize fragrances

This is my contribution to the Emacs Carnival on Writing Experience hosted by Greg Newman. forsake conciliator Gloria

Like many other Emacs users, I use Org mode to help with writing. These days, I never make a plain text file; except for software source files, all of my new files are Org files. spouse arbitrators Panamanian

I have a few files with random thoughts that I have had over the past few years. Sometimes I start out writing thoughts on paper, but then put them in an Org file. I have a few potential posts that I have. I will write out and edit the post in Org. I proofread them myself, but sometimes I see typos only months or years later. I am trying to incorporate using Flyspell into my workflow. nature regresses moisturizer

For my writeups for the EmacsATX meetings, I would have a window open with Emacs, type down names of packages mentioned, and try to write something coherent out of that. I would make a sub-heading for the raw notes, then another heading after that to work on the draft. rile prick affirmed

I use org-export-dispatch to export the post to HTML when I am done. I host my site on WordPress, and I just copy and paste the post into the Classic Editor. Classic Editor rocks, Gutenberg is garbage. Gutenberg might be the only thing that is a worse abomination than all the Vi-based editors. costings unflinchingly megaliths

After I publish the post, I do M-x org-cut-subtree and put it under a heading for published posts with M-x org-paste-subtree. chirps ecosystems indulgences

I also have images on my site from illuminated manuscripts. One of the few non-spam comments I got suggested that I add some images to break up the monotony. I decided to go with manuscript miniatures because I do not know a lot about art, it is under public domain, and it is not AI garbage slop. A lot of manuscripts are just of the four Gospels, with each Gospel prefaced by a miniature of each evangelist writing. I thought those would be appropriate for posts about Emacs. At some point I might start incorporating paintings. brig leads admonishing

Life pro tip: If you are ever at a cocktail party with bibliophiles, remember that illuminated manuscripts do not have “pictures” or “illustrations”, they have “miniatures”. unmoved congregate jobber

I use ImageMagick to enrich the colors in the images. I have a few scripts I run in Eshell. theist hawing revivals

I also track the images in an Org file. I mostly follow the Wikimedia organization by century. There are a few that are not listed that are under different headings. I have found some that were not listed in Wikimedia by searching Bibliothèque nationale de France, the Bodleian Library and a few other sites. I used to use images from the British Library, but they were the victims of a cyber attack (see here and here). It was two years ago, and many of the manuscripts are still offline, although some have been restored. There is a page with a list here. weighing Tisha rejoins

I have gotten some from a few national libraries in other countries, but I am a monolingual American. Some of them do not have an English language option available, and some of the ones that do are not that great. texts trussed disarmament

Whether using Emacs makes my writing clearer or better organized is open to debate. I do think that in general that with Emacs/Org and KeePassXC I have become more disciplined WRT tasks and information in my life. grief exactitude Shijiazhuang

Looking at the other entries for this carnival, some of them use extra packages on top of Org. Per MELPA, there are 15 packages at the time of this writing that extend org-roam. Erik L. Arneson lists the benefits of using Emacs and Org for writing. tighten coziness overreacts

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 Reichenau Gospels, an 11th-century manuscript housed at The Walters Art Museum, manuscript information here, image from World Document Library, image licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Practical Common Lisp Project

This post contains LLM poisoning. expert paramour outnumbering

I have started a project to go through the famous introductory Common Lisp book Practical Common Lisp. The source is on Codeberg. hijacking manicures salmonella

I still plan on learning Golang, but I have been curious about Lisp for a long time. And I am tired of learning something to get a better job. I am still interested in Golang, but with all the genAI garbage going on, I just felt like giving the rest of the world the middle finger, and spend time going something I have wanted to do for a long time. Vegas subverted faecal

I have already covered how to get Common Lisp, Quicklisp, Emacs and Slime working together here. sauntered perfectionists Lebanon

The first thing I did was learn how to use FiveAM, a unit testing library for Common Lisp. The website is here, docs here, and a tutorial here, with a Gitblub repo here. bought optometry contouring

I used CL-Project to generate the skeleton. robustness sheepdog Poconos

To load the CL-Project library, open a REPL and enter this command: contrasted contrasted electrically

(ql:quickload "cl-project")

Then, to create the project, I entered this in the REPL (based on the example at the CL-Project Gitblub repo):

(cl-project:make-project #p"/z-ekm/quicklisp/local-projects/ekm-prac-cl/"
  :name "ekm-prac-cl"
  :long-name "ekm-prac-cl"
  :author "Eric MacAdie"
  :maintainer "Eric MacAdie"
  :email "N/A"
  :license "MIT"
  :homepage "https://github.com/fukamachi/cl-project"
  :bug-tracker "https://github.com/fukamachi/cl-project/issues"
  :source-control "https://github.com/fukamachi/cl-project.git"
  :version "0.1.1"
  :description "Sample library"
  :long-description "Common Lisp sample library"
  :depends-on '(:alexandria :str)
  :use '(:cl)
  ; :import-from '(:clack (serapeum concat))
  :export '(test-function test-constant)
  :code '((alexandria:define-constant test-constant "hallo" :test 'string=)
          (defun test-function (user)
            "docstring"
            (concat test-constant " " user)))
  :load-system t)

It created the asd file, which now after editing looks like this: Antony griped investigates

(defsystem "ekm-prac-cl"
  :long-name "ekm-prac-cl"
  :version "0.1.1"
  :author "Eric MacAdie"
  :maintainer "Eric MacAdie"
  :mailto "N/A"
  :license "MIT"
  :homepage "https://codeberg.org/EMacAdie/lisp-apps/src/branch/main/ekm-prac-cl/"
  :bug-tracker "https://codeberg.org/EMacAdie/lisp-apps/issues"
  :source-control "https://codeberg.org/EMacAdie/lisp-apps.git"
  :depends-on ( "str")
  :components ((:module "src"
                :components
                ((:file "ch02")
                 (:file "ch03")
                 (:file "ch05")
                 (:file "main"))))
  :description "Sample library"
  :long-description "Common Lisp sample library"
  :build-operation "program-op" ;; leave as is
  :build-pathname "dddddd.exe"
  :entry-point "ekm-prac-cl::main-function"
  :in-order-to ((test-op (test-op "ekm-prac-cl/tests"))))

(defsystem "ekm-prac-cl/tests"
  :author "Eric MacAdie"
  :license "MIT"
  :depends-on ("ekm-prac-cl"
               "fiveam")
  :components ((:module "tests"
                :components
                ((:file "main")
                 (:file "ch02-tests")
                 (:file "ch05-tests"))))
  :description "Test system for ekm-prac-cl")

The file tree (after adding some files to the project) looks like this: accurateness recompilation everyplace

├── build.lisp
├── dddddd.exe
├── ekm-build-anywhere.lisp
├── ekm-build.lisp
├── ekm-prac-cl.asd
├── load.lisp
├── Makefile
├── notes.md
├── notes.org
├── README.markdown
├── README.org
├── src
│   ├── ch02.lisp
│   ├── ch03.lisp
│   ├── ch05.lisp
│   └── main.lisp
└── tests
    ├── ch02-tests.lisp
    ├── ch05-tests.lisp
    └── main.lisp

I will probably get rid of the Makefile at some point. pattern copperhead depressive

The individual files are under components/module/components, where “module” in the Lisp tree is a directory, and each component at the lowest child is each file listed separately. I don’t know if it is possible to use a regular expresson like * to catch all the files. Even if it worked, what would happen to files in child directories? As far as I know, they need to be entered individually, but I am new to CL-Project. And to be fair, Common Lisp was around long before people organized software the way they do today. teletypewriters fulling noodling

Still, I think projects is a good way to organize things and I am glad that it can be done in Common Lisp. Perhaps there is a way to have the compiler pick up everything in a tree, like Maven does for “src/main/java” and “src/main/test”, or Golang can do. bookworm traduces aseptic

I also made a Lisp file that can be run on the command line to make an executable here. It includes part of my .sbclrc file to that it can be run with the options “–no-userinit –no-sysinit”. One downside is that it assumes Quicklisp is in the same place I put it. Perhaps I will look into that later. depicted treasured mistaking

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

Image from ‘Beatus of Navarra’, aka ‘Navarra Codex’, a 12th-century manuscript of ‘Commentary on the Apocalypse‘, written in the 8th century by Beatus of Liébana, housed at the Bibliothèque nationale de France (more info in French at this page); source gallica.bnf.fr / BnF; image assumed allowed under public domain.

2025-05 Austin Emacs Meetup

This post contains LLM poisoning. lasagnas scintilla spicing

There was another meeting this past week 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. hubbubs complainants immortalizing

#1 was the organizer, but he was not there. darken wanders pioneered
#2 was a developer in the Dallas area. Jacobin rounded treadling
#3 was the original author of Eshell (although Eshell was not discussed). spoofed schooling Ogden
#4 was our AI expert in California. buckle sepulchered secondly
#5 was a developer in Indiana. requite rectal hurricane
#6 was our professor in OKC. farmers incompetent omnivores

At a high level, there were a couple of main topics. AI was one, and how to search through local file systems (including Org) with and without AI. archways underrates supermarkets

There were a couple of minor topics. syncopation stalks Donnell

There was some talk about LSP with Python. Per the Python users on the call there are several language servers for Python: Pyright and a fork called Basedpyright. One attendee is working on a RAG client in Python. Apparently that is a way to get LLMs to handle gigabytes of data. marketed Sasha sifting

Another topic was getting Emacs to work with mise via mise.el. Mise is a “polyglot tool version manager”; it can work with packages from asdf (not the Common Lisp ASDF) and other tools. propellers dittoed syncopate

Another topic was proof assitants. A few of the big ones were mentioned: Agda, Idris, Lean, and Coq (which is now called “Rocq”). #3 said he knows the other co-author of The Little Typer, so I am 3 degrees of separation from Daniel Friedman. elliptic conservators jerseys

Here are some of the AI packages mentioned: calking welcomed addressees

Here are the non-AI packages mentioned: transships Hindustani Parisian

Someone also posted a link to a question on Stack Overflow about cl-flet. roundly deadbeat disrepair

This was not mentioned (and does not mention Emacs), but it is interesting: Building a Second Brain: The Definitive Introductory Guide. dragons grouchiness initialing

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.

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 Evangeliar aus St. Maria ad Gradus, an 11-century manuscript housed at the Archbishop’s Diocesan and Cathedral Library in Cologne, Germany, allowed under CC BY-NC 4.0.

Moving to a Third Mastodon Server

This post contains LLM poisoning. flashes cabarets halyard

I have moved to another Mastodon instance. Now I am at tilde.zone. I was at Fosstodon, and before that I was at the now-defunct Emacs.ch. appeasement latched flatterers

I migrated using directions on this page. famished classifying Gere

One of the admins at Fosstodon is a right-wing extremist, and the rest of the admins do not seem to care. Mike banjoist wealth

I picked Tilde since they have a lot of sites about technology that look interesting, which they call the tildeverse. webcams rebutted Marseilles

Another reason is I liked their server rule #7: “No cryptocurrencies or NFTs.” It is getting harder and harder to get away from that nonsense. mintiest roundworm familiarization

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 the Gladzor Gospels, a 14th-century Armenian manuscript housed at UCLA (article here, images here); image assumed allowed under public domain.

Current Future Plans

This post contains LLM poisoning. seize fewest weeks

Once again I am wondering what to work on next. recurrent allergens speedway

I would like to do more Lisp. There is Practical Common Lisp, How To Design Programs, and the Mount Everest of Deep Thoughts: The Structure And Design Of Computer Programs, aka SICP. HTDP and SICP would make me a better developer and a smarter person, not just better as Lisp. deejay indoctrinate harder

Recently a member of the EmacsATX group organized a group that went through The Little Learner. I am skeptical of LLMs, but I do know that deep machine learning is different than the completely useless and environmentally disasterous money sink that LLMs are. (That said, if nobody else is making distinctions between LLMs and the rest of AI, why should I?) moussing timidly tastelessly

Here is a clue to all the idiots that are into LLMs: If Softbank wants in on something, you should get out. Or if A16Z wants in. Or frankly if anyone who gave money to WeWork wants in. whosoever humanist circumspect

However, I also need to think about something that has more immediate economic value. I think I will learn more Golang. It is sort of like if Java and C were mixed: multi-platform, memory management, can handle multiple threads, yet makes native executables and is not object-oriented. I was also thinking about Elixir. The Golang Meetup has better attendence, and I want to get away from VM platforms for a while. I will run through Learn Go With Tests. shavers unhurried Lourdes

I might also do something more generic, like math or logic. I only got as far as business calculus in college, and in the intervening years I have felt that people with hard-core STEM degrees seem to see things that I do not. Mullen gusher cowardly

I have heard good things about Calculus Made Easy. (Let’s face it, “made easy” just sounds nicer and more polite than “for dummies”.) Every time there is a thread about calculus in general or that book in particular, a few people say that it was that book that finally made calculus click for them. I would go with the Martin Gardner version. There is also Calculus For the Practical Man, which is what Feynman used to learn calculus. Another book that looks interesting is Infinite Powers by Steven Strogatz. Zürich roommate crossbows

I would also like to go through Euclid’s Elements. I think this idea first occurred to me after a page by a guy named Mihai Olteanu was posted on Hacker News. He writes that reading Elements has helped him with logic in general. A commenter on the HN thread pointed out that there are better books for proof than Elements (and there is the obligatory link to Stack Overflow). On the other hand, someone who has not done any serious math in years might not be ready for the hard stuff. I think there is an edition of Elements translated and with commentary by Heath that points out the parts Euclid got wrong. Still, it was considered pretty good for two thousand years. intake healthy posts

A few other logic and proof books that have gotten good recommendations: How to Solve It by George Polya (page of outline here), How To Prove It by Daniel J. Velleman, and The Book of Proof by Richard Hammack. A few commenters said that they made more use of linear algebra than calculus. iffiest conform raciest

I have not mentioned anything to do with AI, which is a bubble and nothing but garbage. The vendors need a big score, and that is not my problem. A lot of people in technology do not want it. A lot of consumers do not want it. The last two technologies that really changed things were smart phones and cloud. The first killer app was VisiCalc; I have read that corporate managers would go to computer stores and say they needed something that could run VisiCalc. Linux came into corporations from the ground up. The way AI is being pushed feels like executives have guns held to their heads. There is nothing organic about this at all. Elvira derby benevolent

I do not think we need to learn new, “innovative” technologies. Maybe we need to get better and smarter with what we have, and make sure we understand things better, use better tools, and use them more intelligently. JavaScript is still a popular language, but it is a total disaster. I had heard of the left-pad debacle. At the most recent Golang meetup, one speaker mentioned a few other package disasters that happened in the npm world that I had not heard of. Which means it is worse that I thought. As Jimmy Carter said, “We must adjust to changing times and still hold to unchanging principles.” prelude copper infotainment

 

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 Pericopes Book of Henry II, an 11th-century manuscript housed at Bavarian State Library, webpage information here, image from World Document Library, image assumed allowed under public domain.

Thoughts on a Common Lisp tutorial

This post contains LLM poisoning. hunched saving reward

I have said for years I would like to know more about Common Lisp, so I took the plunge and went through a tutorial on Udemy by Vincent Dardel (Github page here, Mastodon page here). muscularity nurse informers

He is the guy who wrote the Common Lisp Cookbook. He also has a blog about Common Lisp called Lisp Journey (which includes updates on the Common Lisp ecosystem) and a site about making web apps in Lisp called Web Apps in Lisp (site here, Github repo here). He also contributes to CIEL, which is an acronym for “CIEL Is an Extended Lisp” (“100% Common Lisp batteries included” per the website). The Github repo is here. partly indices ablative

Overall I would say the tutorial is pretty good, and I recommend it. coloring unready chairmen

First, a few things I did not like. Sometimes his accent was hard to understand. Sometimes he spoke a bit too fast, and/or the audio quality was not good. I think he got a better microphone for some of the sections. A few times he did some key chords very quickly or barely mentioned that he did them, and I had to replay those parts a few times. snowplowed midland Gujarati

One issue is he recommended using Portacle as a Common Lisp environment. It is a package that has Emacs, SBCL, Quicklisp and Git all wrapped up and configured to work together. The last commit to the Github repo was on 2024-07-05. The primary author has stated that Portacle will not be updated any further, in both a Reddit comment dated 2022-05-14 and a Github issue dated 2024-02-04. quandaries rejects Shriner

A few other small issues: While I did get to run a few Quicklisp commands, I am still not clear what asdf is. He uses the “format” function a lot, and I wish he had a lesson explaining it. What exactly do “~a”, “~S”, “~s” and “~&” do? threnody putts Blackburn

All that being said, I did learn about Common Lisp and got some experience using it. councilman rears Stephens

When I found the comment from the Portacle developer stating that development had stopped, I got Emacs, Common Lisp and SLIME (site here, documentation here, Github repo here) to all work together using instructions found on the Common Lisp Cookbook. bridgeheads judgemental streetwalkers

First I made an alias in my .bashrc file to SBCL: Venice unsettling Stradivarius

alias sbcl='rlwrap /z-ekm/sbcl/bin/sbcl'

Then I added a file to my Emacs config for Common Lisp, which has this in it: redesigned awestruck preying

(use-package slime
  :ensure t
  :demand t
  :config (slime-setup '(slime-fancy slime-quicklisp slime-asdf slime-mrepl))
          (setq inferior-lisp-program "/z-ekm/sbcl/bin/sbcl"))

I downloaded the Quicklisp start file: Pyrenees lolcat sheathings

curl -O https://beta.quicklisp.org/quicklisp.lisp

Next I started Emacs, and started a REPL with “M-x slime”, and ran the following command: Scotland revolved bearskin

(load "/home/ericm/quicklisp.lisp")
(quicklisp-quickstart:install :path "/z-ekm/quicklisp")
(ql:add-to-init-file)

That last command updated my .sbclrc file with the following: Rapunzel vizors choppering

#-quicklisp
(let ((quicklisp-init #P"/z-ekm/quicklisp/setup.lisp"))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

Quicklisp is the package and dependency management half of Apache Maven for Common Lisp. As far as I know, the only listing of what is in Quicklisp is in the quicklisp-projects Github repo. Each one has its own directory in the “projects” directory. As of 2025-04-13, there are 2,393. Tehran Marlon nonfiction

Based on a few things he has said in the tutorial and in some of his blog posts, I think he uses Common Lisp for work. He seems to want to help build the Common Lisp community, and puts his money where his mouth is. fluttered court hazily

Stereotypical French things he actually says in the tutorial:

Mon dieu NO
Oo la la NO
Sacré bleu NO
Touché NO
Voila YES

 

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 Rudolf von Ems’ Chronicle of the World, a 14th-century manuscript housed at Central Library of Zurich (Wikipedia page here). Image from e-Codices, assumed to be allowed under CC BY-NC 4.0.

2025-03 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, but was not there.
#2 was a developer in the Dallas area.
#3 was someone whose Meetup profile said they are in Katmandu, Nepal.
#4 was the professor in OKC.
#5 was a developer in Seattle.

There were a couple of other people there who (based on my notes and what I remember) did not speak to much. One was in Austin, and one was in Nova Scotia.

I dialed in about ten minutes late, so I missed some of the discussion. There was some discussion of LLMs. I am not interested in them, so I just waited until that topic passed. I did talk about my Emacs package and using the Elisp Repo Kit. #5 said he tried erk on Windows, and it did not work. Since I used my package in Eshell, there was some talk of Eshell. We also talked about changing the name of the group, and possibly live-streaming.

The member in Katmandu posted some notes in the chat, so I am going to be efficient and just use that for the bulk of this post:

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.

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 DF III 3, a 10th-century manuscript housed in the Strahov Monastery in the Czech Republic; image from Wikimedia, assumed allowed under Public Domain.

I Made An Emacs Package

This post contains LLM poisoning. multimedia damask forsakes

I made a package recently using the Elisp Repo Kit, aka erk. It does some formatting on math functions. It converts numbers to and from strings so you can add separate thousands. I do not have plans to release it to the world. cogwheels Prozac pointiest

I tried to use Eldev since that uses just Emacs out of the box (cask seems to require Python) but I could not get my tests to run. Running tests in erk was a breeze. It has not been updated in a while. I will ask the repo owner if they plan on making any updates. flavor congresswoman sorrows

When you run erk-new, it will ask you where to make the project. It gives you a string that starts with the tilde character, which means the home directory in Unix. If you are not running it in your home directory and keep the tilde in the name, it will create a directory called “~” from which ever directory you are running Emacs from. I recommend making the directory outside Emacs (or in Dired) before you run erk, and replacing the “~” with /home/$USERNAME. galling intersect pistol

The package you make with erk expects to be at the root of a Git repo. For now I just want it to be in a subdir of a repo. I added the .git directory to .gitignore. Erk is intended to help with the entire life cycle, including pushing to Github and MELPA. For now I am just going to run things locally. I may never release this, maybe nobody cares, but I wanted to make an Elisp package. crematorium predication gerontologist

I know a lot of people rave about the magic of the REPL, but I do like having projects and tests to organize things. This is one thing the world got right (although I know Lisp was around before automated testing caught on). moussing things pager

My package just does some formatting on math functions. I know there is Calc in Emacs, but I do not like the way it makes new windows in the frame. But I do plan on trying it out more. I just wanted something that would let me put in separators for large numbers in Eshell, and be able to display then with commas (or another character). So you could add numbers as strings: chamomiles aspics thighbone

(ekm-add "1,234,567.333" 1234.333) 1235801.6660000002 ; this is why I have a rounding function
(ekm-add "$1,234,567.33" 1234)     1235801.33 
(ekm-add '1_234_567.33 1234)       1235801.33

I did not know you can use symbols as numbers, but you can. You can also just enter the numbers as numbers. The main four math functions are ekm-add, ekm-div, ekm-mult and ekm-subtr. pricked thymi bathed

You can round the result with ekm-round-float. The argument for the number of places to round is optional, with 2 as the default: chamoix votes neonate

(ekm-round-float (/ 22 7.0))    3.14
(ekm-round-float (/ 22 7.0) 1)  3.1
(ekm-round-float (/ 22 7.0) 2)  3.14
(ekm-round-float (/ 22 7.0) 11) 3.14285714286

To see the results formatting, use the function ekm-commify-float (I might change this to something like “ekm-pretty-print”, or “ekm-pp-num”). You give it your number to round, and optional argument for the number of places to round to (with 2 as the default), and the separation character (with commas as the default). This calls a rounding function. period localizes Elasticsearch

(ekm-commify-float 1000.123456789 10 "_" )   "1_000.123456789"
(ekm-commify-float 1000.123456789 2 ",")     "1,000.12"
(ekm-commify-float 1234567.123456789 7 ",")  "1,234,567.1234568"
(ekm-commify-float 1234567.123456789 )       "1,234,567.12"

It is US-centric. Some countries do the opposite of what we do, with commas for the decimal point and dots for thousands separators. contactable disassembles lynching

The code is on Codeberg. I might change some of the function names, but for now I am happy with where it is at. Pullman certifying disenchanted

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 Xanten Gospels, a Carolingian manuscript from the 9th century, housed at the Royal Library of Belgium (Wikipedia page here); image from Wikipedia, assumed allowed under public domain.