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.

More Changes To the Site

This is a follow-up to my previous post about making changes to the site.

I moved my site to a managed host. I decided to stay with WordPress for the time being. I tried moving to ClassicPress, but I could not get it to work. I could log into the admin page and see the list of pages and posts, but when I went to the URLs they were all blank. The ClassicPress forum had some posts about this. The solutions involved editing the .htaccess file. The reason I went to a managed host is that I do not want to do that sort of thing. For the time being I am still able to write my pages in Org Mode, export them to HTML, and copy and paste into the Classic Editor. When that stops working, I will find a new solution.

I downloaded my images beforehand, and I had to re-upload them. Going through it all, I realized I could consolidate some posts. This site is a record of my life (even if nobody else is paying attention), but it’s not a legally binding document. Instead of keeping ten short posts about something I am not working with anymore, I could consolidate them into one post.

I used to use a twitter plugin that posted all my tweets to this blog on a weekly basis. The developer who made it died of cancer a few years ago, and the other options were not as good, so I stopped. I could probably just have a post for all the tweets by year. I also have some posts about an old version of Apache James that the project says you should no longer use. I will consolidate those. I will keep them because I got several comments and emails from people who told me that my pages were more helpful to them than the official docs on the Apache site. I am not using the current version of James, so you are on your own.

I have also gotten compliments about wiki pages I have made at various jobs. A lot of people like to keep more information in their heads than they need, or think the answer is to throw it into the black hole of Sharepit. As proponents of checklists like to put it: Our brains are for generating ideas, not simply holding information. At some point I will read through the Grand Unified Theory of Documentation (links here and here, with Hacker News posts here, here and here). I think the ones people find the most helpful are tutorials and how-to guides.

I just found out today about another MS product called OneNote. In addition to Sharepoint and Teams, MS has given us THREE ways to lose information.

I might also consolidate some of the Groovy Validator and Groovy Email Server posts. It looks like Groovy is not a direction I will be taking. Even Ken Kousen doesn’t spend as much time with Groovy as he wish he did. Sometimes things don’t work out.

You’re welcome.

Image from Codex Egberti, a 10th-century manuscript held in the city library of Trier; image from Wikimedia, assumed allowed under public domain.

Programming Clojure Chapter 04

I got done with chapter 4 of Programming Clojure. This chapter was about functional programming.

Interestingly, they did not spend much time in this chapter on the concept of higher-order functions. They did use them, but it was not a major part of their definition of “functional programming”. They talked more about purity, referential transparency, immutability, persistent data structures, recursion, and laziness and eagerness (for both collections/sequences and transformations).

I have noticed that when Lisp/Scheme programmers talk about “functional programming”, they tend to talk about functions: higher-order, purity, immutability, laziness. When Haskell or Scala programmers talk about “functional programming”, they talk about types as much as they talk about functions.

The section on lazy sequences blew my mind. They worked with Fibonacci numbers, and I made a lazy sequence of factorials. It is amazing that you can calculate some very large numbers very quickly without blowing the stack.

In case you were wondering, here is 200 factorial (split across a few lines so there is no horizontal scroll):


That’s 7.88657 times 10 to the 374th. My answer matches what is on Calculator Soup.

Here is my sequence:

(defn lazy-seq-fact
   (concat [1N 1N 2N] (lazy-seq-fact 3N 2N)))
  ([a b]                                                                                                     
   (let [n (* a b)]
     (lazy-seq (cons n (lazy-seq-fact (inc a) n))))))

(nth (lazy-seq-fact) 200)

I am not quite sure I understand transducers or eduction as well as I would like. (I think they may be changing the meanings of the words “eduction” and “transducer” slightly.) I think one of the ideas behind transducers is that a transducer can be more efficient and do things in fewer steps. A threading macro with multiple functions will make a sequence or collection at each step. A transducer does not. They had a couple of examples that they converted from using the threading macro to using transducers and “into”. Only the first step in ->> (the starting collection, where it comes from) and the last step in ->> (the final collection, where to put it, which was a call to “vec”) are flipped when we go to “into”; the transformation steps are pretty much the same. In their example, they combined the steps into a function with “comp”. Also: transducers go right-to-left, which is unintuitive for me.

I think you use “eduction” when you want to transduce part of a collection and not have dangling resources.

I did not understand the threading macro until I had a need for it. Perhaps transducers and eduction will be the same.

I did find a way to use the partition function to work with moving averages. You need the members of your collection to be in order from most recent to oldest. The you can get a collection of moving averages with this:

(map #(/ (reduce + %1) 
         (count %1)) 
     (partition 4 

Chapter 5 is about spec. Clojure seems to have a lot of concepts that are new to me, even more than the little Scheme I have worked with.

You’re welcome.

Image from the Liuthar Gospels, a tenth century manuscript created in southern Germany, currently housed in the cathedral of Aachen, assumed allowed under public domain. I have read there are 30 full-page miniatures in the manuscript, but I have not been able to find a pdf or any other pictures than the one on this page.

Changes To The Site

The original post is on my site ending in dot Net on Linode. This is a mirror post. Eventually everything will just be here.

I plan on making a few changes to this site.

First off, I plan on moving to a different host. The domain might change from dot net to dot info. I will see if I can get the new host to point both domains to the same place.

This site is currently on Linode. I think they will start charging me sales tax. They sent me an email asking if the account was personal or for a business. It probably won’t be a lot, but then why should I pay for it? I use a shared host for email and hosting the images. I will probably just move it all there. Plus with Akamai buying Linode, it seems like the universe is sending a message. As one commenter put it, I prefer people who make technology decisions sitting in front of their laptop, not people who make technology decisions at the golf course.

I wonder if the email about sales tax was because of the merger with Akamai.

The image of Linux that I am using is 32-bit. I don’t think there will be any updates for it. I was planning on migrating it to 64-bit, but I think it’s time to make a change. I have been with Linode a long time; according to my control panel, my instance was created on 2009-06-13 05:48.

I used to run my own email server, and I still run my own webserver. I am not sure it’s worth it for me right now. I got things to a point where I want them, but every now and then things blow up and I have to spend a lot of time fixing them. I think my time is better spent on other things. I can see why people get grumpy in their old age; you just want fewer things to deal with and keep track of. “Who can spin the most plates in their head” is a stupid game to play, whether you realize you are doing it or not. (Stupid people never realize they play it, while a-holes think it’s fun and drag other people into it.)

A few years ago when I ran my own email server, I used to host a domain where I talked about politics. Once I wrote a post that made it very clear I do not like Trump, the GOP, or the Russians, and I think the Trump campaign was colluding with the Russians (actually, he is so stupid I think they used him, and he thinks he used them). Maybe it’s an amazing coincidence, but a couple of days after that post I could not check email. The dead letter table in the database was so full it used up my disk quota. I was still able to run queries. Just about all of the emails in that table came from a .ru address. It has not happened before or since.

If you are one of those people who thinks that anything that makes Trump look bad is a false flag: You need to stop that. Sometimes things are exactly as they appear.

As stated, the URL for the site might change, so anyone getting their Emacs ATX fix might be in the dark for a period while things work out.

Another change is that I am thinking about moving from WordPress to ClassicPress. WordPress is phasing out their old GUI editor in favor of the Gutenberg editor. I do not like Gutenberg at all. I guess it is made for designers. I just want to be able to put in some text like I always have. The developers of WordPress are becoming like Microsoft: Forcing a change I do not need to solve a problem I do not have.

The developers of WordPress keep extending the date they will stop supporting the Classic Editor plugin. If you look at the reviews for the Classic Editor and Gutenberg plugins, I think it is fair to say the reaction to Gutenberg is not universally positive. It looks like the WordPress developers are trying to go all-in on Javascript. I think Javascript is a cancer on technology.

Not to get too meta, but the first version of this post became a rant on Javascript, and went off-topic. I will save it for later.

One reason to use a CMS over a static site is that it makes searching for things easier. If you allow comments you have a cheap contact form. I might also have to work on the images again. But I think in the long run this will free up some time for me.

You’re welcome.

Image from the Hitda Codex, an 11-century manuscript housed at the Hessian State Library (link to Wikipedia here), assumed allowed under public domain. It is not the same manuscript as the Hidda Codex.

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.

Clojure Functions Dealing With Sequences

I am finally through Chapter 3 of Programming Clojure. That chapter deals with sequences and collections (list, map, vector, set, and the Clojure “seq” abstraction), functions common to many types of sequences, and functions that are specific to specific collection types.

I was going to add some of the samples that I went through, but I cannot figure out how to get decent looking Clojure code in WordPress anymore. I do not like the Gutenberg editor at all, and it does now work as well with the classic editor as it used to. I found one called “Enlighter” which sounded good, but it does not do Clojure or any kind of Lisp. Given that WordPress really wants people to use the Gutenberg editor, at some point I might look for something other than WordPress.

The notes are on github (link here). I will update my page listing the functions in the Clojure API (some are in the Set API); I will just point to this page, and if you want to see the examples, then go to the page on Github.

Here are the functions discussed in the notes:

  • assoc
  • cons
  • dissoc
  • drop-while
  • even?
  • every?
  • file-seq (not in notes, in a Clojure file on github
  • filter
  • first
  • for
  • get
  • hash-set
  • interleave
  • line-seq
  • list
  • map
  • next
  • peek
  • pop
  • rest
  • select-keys
  • seq
  • set
  • some
  • split-at
  • split-with
  • subvec
  • take-while
  • vector
  • set/difference
  • set/intersection
  • set/join
  • set/project
  • set/select
  • set/union

Going through this book is taking a while (I admit I don’t do it every day). But I have tried learning languages from koans and puzzles, and I just wind up trying random functions from API and not being very productive.

You’re welcome.

Image from “Grec 74”, a 12th century manuscript housed at the Bibliothèque nationale de France. Source gallica.bnf.fr / BnF; image assumed allowed under Public Domain.

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.

Climbing Mount SICP

I have decided to focus more on Clojure, and start working on How To Design Programs (aka “HtDP”), and then onto Structure and Interpretation of Computer Programs (aka “SICP”). HtDP is written by the founders of the Racket project, and SICP uses Scheme (one of the authors, Gerald Sussman, invented Scheme along with Guy L. Steele; I think Scheme was Steele’s PhD thesis).

I looked one last time into The Reasoned Schemer. I changed to a different KanRen library. More of the examples worked, but this book is really not coming together for me as quickly as the other ones did. I think I will put aside the “Little” books, at least for the time being. I think it might be time to get ready to climb Mount SICP.

Many people have said that SICP is a good way to “level up” (as the gamer kids put it). Many people have said it gave them something like the famous “Lisp enlightenment”, that it altered their perception of how to make software and made them better. As the Teach Yourself CS site put it: Because SICP is unique in its ability—at least potentially—to alter your fundamental beliefs about computers and programming. Not everybody will experience this. Some will hate the book, others won’t get past the first few pages. But the potential reward makes it worth trying.

SICP is an introductory CS text used at MIT. The general consensus is that you will get more out of it if you have been in software development for a few years. It is a bit much for most people right off the bat. I have been through Simply Scheme, which states in the last chapter that it is intended to prepare you for SICP. HtDP was made as an alternative to SICP; the authors felt that SICP requires a lot of higher math, and if they made a less math-heavy alternative they could introduce more people to CS and help them become better programmers.

One of the authors of Simply Scheme wrote an essay entitled “Why Structure and Interpretation of Computer Programs matters”. He states that unlike other introductory textbooks, SICP does not spend a lot of time on the syntax of a specific language, but instead teaches broader concepts. Someone at the local Clojure meetup once said to me that if you can work through the problems in SICP, “you can solve any problem with parentheses”. In other words, you learn how to design programs.

A few years back, MIT (and a few other schools using SICP) replaced Scheme and SICP with other texts that use Python. Sussman said there were a few reasons for this. One is that he and Harold Abelson (one of the other co-authors of SICP) were tired of teaching the course after more than 15 or so years. Another reason is that SICP was designed for programmers who would make systems from the ground of using smaller components. Now a lot of programming is just linking or wiring together components that are black boxes. Sussman called it “programming by poking”. You could contrast this with the SICP style of “analysis-by-synthesis”. The site Lambda The Ultimate has a post with a link to a now-extinct blog post, but there is a quote that summarizes the ideas nicely. There is also a link to a thread on Hacker News. This have come up several times on Hacker News and Reddit.

There is a section in the preface to Simply Scheme that covers this:

There are two schools of thought about teaching computer science. We might caricature the two views this way:

  • The conservative view: Computer programs have become too large and complex to encompass in a human mind. Therefore, the job of computer science education is to teach people how to discipline their work in such a way that 500 mediocre programmers can join together and produce a program that correctly meets its specification.
  • The radical view: Computer programs have become too large and complex to encompass in a human mind. Therefore, the job of computer science education is to teach people how to expand their minds so that the programs can fit, by learning to think in a vocabulary of larger, more powerful, more flexible ideas than the obvious ones. Each unit of programming thought must have a big payoff in the capabilities of the program.

(I think you could also call these the “business mindset”, and the “engineering mindset”: Do things in a way that the suits think they understand, or actually knowing what you are doing.)

Per a comment on the Lambda The Ultimate post, one of the authors of HtDP said that other departments sent students to their CS intro course to learn how to think. That is where I want to go. I feel that “programming by poking” is what I have been doing. I feel like I should be better at this than I am, and that there has to be a better way of doing things. Where “progress” isn’t just learning yet another vendor’s product.

Why not level up? Why settle for poor understanding? As one of the commenters on Hacker News put it: What about the people who make the black boxes? How do you know they know what they are doing? If you could learn to solve any problem with parentheses, why wouldn’t you?

The obligatory links (I have not gone through most of these):

You’re welcome.

Image from “Evangelia quattuor, pars”, an 11th century manuscript housed at the Bibliothèque nationale de France. Source gallica.bnf.fr / BnF; image 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.