I talked to someone about the extensibility of emacs, but the person I was speaking to assumed that any IDE is just as extensible by using Plug Ins.

Without turning the conversation into a university style lecture, what is one or two simple actions I can do in emacs to show someone what separates it from other IDES.

Pick any that you like from https://emacsrocks.com. My favourite is https://emacsrocks.com/e13.html well worth watching until the end where it all comes together.

permalink
report
reply
2 points

You might be interested in this talk at next weekend’s Emacs Conf:

How to show not tell people about the wonders of Emacs

permalink
report
reply
1 point

Probably the most simple examples for me are

  1. Showing the multitude of packages for something like an email client, Margit, etc and how you can mix them together with org linking, using babel, etc. showing the deep level of integration you get

  2. Simply show functionality in the editor and how you would like it to change. Rather that writing a whole package to do it. Use the help to go to the source and redefine that function in your config. Doesn’t require them to know elisp to understand but it gets the point across that everything is at your fingertips.

permalink
report
reply
1 point

It’s the always-on REPL that’s the kicker.

(defun invert-case ()
  (backward-delete-char-untabify 1)
  (insert (funcall (if (< last-command-event ?a)
		       #'downcase
		     #'upcase)
		   last-command-event)))

(add-hook 'post-self-insert-hook #'invert-case)

Then C-u C-M-x on invert-case to convey the larger point that emacs is always running within a gdb-like harness. Your buddy will immediately bristle at the prohibitive investment necessary to achieve this pointless and trivial hack, at which point he’ll have truly grokked emacs.

permalink
report
reply
1 point

Brilliant!

permalink
report
parent
reply
1 point

First I wouldn’t concern myself too much with trying to explain what differentiates Emacs from an IDE. Life is too short to get into such debates. I can’t really summarize why anyone should care about Emacs vs their IDE of choice.

For me what separates Emacs from vscode for instance is not the IDE aspects but the integration with the broader ecosystem. I’m a PM that works with technical and data heavy products. The details matter. I frequently walk through the pipelines and code of my product to understand how it is implemented by the team(s).

For example you can break my underlying product down into 3-4 large blocks of pipelines. Each pieline has 6-7 stages that mix Spark and other Python jobs. For each pipeline and stage I have my own little literate org file that points to code, has small samples of inputs and outputs, and generally speaking allows a non data engineering professional such as myself keep up with people that are far better and keeping this all in their head.

I write down questions as I do this to browse and/or raise with the team. I can, when questioned by our senior leadership, truly explain what it is our team did and the impact it had.

I can’t do that with an IDE. I can’t see an easy way to do that with any of the other note taking tools. I can’t jump between code browsing, executing and writing as seamlessly anywhere else.

permalink
report
reply
1 point

True. I kind of fake it in notion by linking to the file and line on github, but it isn’t as good

permalink
report
parent
reply
1 point

For each pipeline and stage I have my own little literate org file

Damn, your verbose description checks all the boxes for a bullshit job.

permalink
report
parent
reply
2 points

Haha, why is that? To be clear that’s not an expectation of the job. It’s a self imposed process so that I understand wtf is going on. I enjoy it personally and feel it makes me better at what I do. Why do you think it’s bullshit?

permalink
report
parent
reply
1 point

Lol

PM

Bingo!

permalink
report
parent
reply
1 point

PM as in “project” or “product” manager? I’ve never experienced the former that wasn’t an oxygen thief, but I’ve heard unicorns exist. My current product manager is quite good imo: shields engineers from idea ferries from all levels; talks to support and customers; has good track record of picking projects that successfully increases product adoption; etc. I wish our product manager took the time to understand our codebases as the op here does. I think with that knowledge it would be easier to convince the PM of the importance of certain refactors and why certain requests estimates are more difficult and or tedious that the PM expects.

permalink
report
parent
reply
1 point

Wow. I wish the PMs where I work understood data concepts to the depth you do.

permalink
report
parent
reply
1 point

I’d rate this as a story about the benefits of literate programming, and emacs org-babel is certainly best-of-breed for that. A more mainstream workflow for it might be through Jupyter notebooks, but they have several deficiencies compared to org-babel, chief of which is that one can’t present blocks out-of-order in Jupyter, but can do with org-babel-tangle. as far as I know, no literate-programming solution can pull code off disk and put it in a document (the anti-tangle direction), let alone update a doc when code is modified. It’s doable (start with git-actions, maybe?) but difficult. The lack of anti-tangle stopped my team from adopting literate programming as a collaboration tool, but it’s still great in the downward direction, i.e., from doc to code.

permalink
report
parent
reply
1 point

I’m hoping Quarto will Jupiter - it’s still not as flexible as org-babel but better version-controlled than Jupiter.

Pluto.jl apparently is reactive and immediately updates.

permalink
report
parent
reply
1 point

I’d agree but it goes a bit beyond. Each file has pointers to the source code that is locally checked out. Sure it’s not dynamic (e.g. my comments and understanding of what’s going on don’t sync with the codebase as it changes), but it still allows me to keep a mental map of what’s going on and where each piece of the pipeline resides.

It’s a mixture of roam, literate programming and an IDE for me. E.g. I can easily spin up a vterm, ssh into a spark node and test some of the code if I don’t understand what it’s doing thoroughly or to check if something isn’t doing what is intended.

In my use case, collaboration is not required. I’m doing it for me so there’s no real cost to the documentation and understanding getting out of date. I find emacs an invaluable tool to deepen my understanding and test things in the codebase. An IDE just doesn’t fit the bill in that regard.

permalink
report
parent
reply

Emacs

!emacs@communick.news

Create post

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

  • Windows
  • Mac OS X
  • GNU/Linux and BSD (Just get it from your distribution’s package manager)

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for “emacs” and “vi” link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

Community stats

  • 18

    Monthly active users

  • 562

    Posts

  • 2.4K

    Comments