💾 Archived View for tilde.team › ~steve › blog › emacs-intro.gmi captured on 2024-05-26 at 15:15:00. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

-=-=-=-=-=-=-

Emacs Introduction

Back

How can I even begin to describe the immense impact Emacs had on my life? Let me briefly describe my history with Emacs. Some 10 years ago, I was in academia. My advisor was a linux guy and he used Emacs. We just began working together and we developed a Fortran simulation software. He suggested using Emacs and I followed on my mac. I was somewhat used to sublime text but Emacs enticed my curiosity. Then he introduced me to Org-mode. He was also a department head and was able to organized his research notes, articles, meetings, budgets, committees and trips all in Org-mode. I was blown away, I had to learn it. Fast forward to today; I use Emacs for my work - developing, research notes, meetings, code snippets, documentation and in my personal life as well - journaling, email, RSS, gemini writing and browsing and more. It's an indispensable part of my life, helping me interact with the digital world and replacing some aspects of the analog world of writing.

Emacs extensibility is almost infinite. Based on a small C core, functionality is implemented using a Lisp variant called Emacs-lisp, or Elisp. Emacs is actually a lisp machine which means it's reading, evaluating and presenting Lisp code in real time, like a big visual REPL. Every aspect of the editor can be inspected, debugged and changed in real time. Adding to that a self-documentation system and experimentation is infinite. Emacs presents as much or as little as you want it to, according to the level you feel comfortable with.

Of course, not everything is perfect with the Emacs experience. Default values are an issue. They are the conservative decisions made based on the experience of 40 years of developers' preferences. When you just starting with Emacs, it's a barren land; shortcuts are weird, things don't behave as you expect them to. Today there are the Spacemacs and Doom "experiences". I don't like them; they hide too much and make you a dependent on their communities which are a small subset of the entire Emacs community. The way I started was copying and pasting configuration from the internet. It took me some years to understand what's going on; but that's just because I wanted to.

Emacs enabled me to look behind the curtain, on how things work and implemented. Its world is a plain text world. Everything is text, or buffers, in Emacs. I like it. It means I can read and understand it; plain text files will outlast any OS change I'll do in the future and they will outlast me. Text as data is also the main part of Gnu/linux tools narrative; piping is the passing of input and output in the form of text between different applications. It partially explains the rich ecosystem of Emacs packages, from modes (packages) for every conceivable language to modes for interacting with Reddit, Twitter, Slack, Matrix, RSS, email, IRC and more. Packages are really easy to write.

This "looking" behind the curtain gave me the confidence to try and look behind the curtain of the tools I'm using. If I can't do that with a given tool, it makes my suspicious and want to replace that tool with an open source alternative. It made me WANT to understand how things work; and when you try to understand how things work you often discover that some things are broken. At first you just notify others that some things are broken (report bugs) but then you try to fix them yourself and you start to submit patches for software you use. In other words, Emacs can turn you into a better programmer, in a sense, by encouraging you to explore, learn, fix and enhance the tools you use.

That's it for introducing Emacs. Next time I'll share some use cases.