Emacs
Why Emacs:
Even as LLMs consume the world, I think emacs still has a place – maybe more of a place, since the frictions around customizing emacs are going to zero. Some work flows that I previously managed with emacs I manage with agents (e.g. managing git), but others still belong in emacs (like managing what I’m working on, and moving between streams quickly).
Truly customizable and extensible
I can shape my editor into a tool that fits me, instead of contorting myself to fit someone else’s UI design.
Once you get the hang of it, modifying emacs becomes easy and fun. LLM agents make it really easy.
Emacs is really fun!
That’s the main reason I like it!
Fun is a signal, not frivolity.
Fun leads to flow, and flow leads to deep work and curiosity and creativity.
Better than a clicking based GUI or a CLI:
I also find that the transient menu style interface fits much better in my brain than CLI or standard click-on-dropdown-menu based GUIs.
Stuff that I use frequently becomes muscle memory, and for stuff that I don’t use frequently I get gentle, immediate and usually useful hints from the system about what I’m trying to do.
Great Aesthetics
Who doesn’t want to look like an 80s hacker when they work.
All-encompassing
Emacs can absorb pretty much all parts of your workflow into the same extensible system.
Favorite features:
Org mode:
Org babel as a replacement for jupyter notebooks
Literate code!
Here’s an example of an org babel file as a generic data science notebook!
Here’s what it looks like when published to html.
There are some missing features, and I’ve written a package that adds the ones I’ve missed the most a package that adds them.
Org todos / agenda
I love that I can collect todos from my org babel notebooks! No more running todo lists, org just collects them in their natural contexts.
Org publish:
I can take all my notes, with code and diagrams and latex, and easily publish them to the Internet. That’s how this webpage is generated, and it only takes a few lines of config to get going.
Magit
I don’t think I would have learned git so thoroughly without magit. I love having all the options clearly available to me, it makes visualizing staging hunks of code clear, and it simplifies rebasing by having all the information visible and/or automatically loaded based on cursor location.
Dired/dirvish
- wdired is magic – I love being able to treat things that don’t feel editable as editable, actually. (Consult-ripgep embark has the same flavor.)
- ! or & then command (e.g. firefox) on the highlighted file(s) = yay
it’s also smart about guessing what you want to do! - Tab on a file or a folder!
- M for changing permissions
- Mapping W to dired-do-eww
- Bookmarks for your file system