ENGINEERING ★ 202 upvotes 2025

Bare Metal (The Emacs Essay)

Retrospective Overview & Key Insights

Distilled analysis of the business dynamics, operational challenges, and strategic takeaways:

In this technical retrospective (2025), @hpaone shares practical architectural lessons learned from running, scaling, or migrating production software under lean constraints.

Core Principles for Independent Builders:
1
Defaulting to simpler architectures (such as monolithic frameworks, SQLite, or managed VPS) prevents early engineering bankruptcy.
2
Evaluating true compute and egress costs reveals that high cloud bills can often be slashed by 80%+ through judicious re-platforming.
3
Code you write at 2 AM as a solo engineer must be easy to debug six months later without complex microservice dependencies.
Community Debate Themes:

HN engineers debated the tradeoffs between cloud convenience and raw server economics, database indexing strategies, and resisting premature architectural complexity.

Community Discussions & Critical Reviews

High-signal perspectives, counter-arguments, and peer founder insights debated on Hacker News (122 total discussions):

DO @DonHopkins Peer Contributor

https://news.ycombinator.com/item?id=36621699

The original terminal emulator terminal.el in gnu emacs, written by mly (Richard Mlynarik), was particularly salty. I finally tracked down a copy, but it looks like somebody complained and in 1990 it was begrudgingly cleaned up a bit, so some of the worst stuff was moved out into a separate file called term-nasty.el for posterity (you, here, now), so as not to give "in to the pressure to censor obscenity that currently threatens freedom of speech and of the press in the US" (oh, Richard > There seems no good reason to ever disallow preemption (setq preemptable t) ``` [...]

``` ;; I suppose if I split the guts of this out into a separate ;; function we could trivially emulate different terminals ;; Who cares in any case? (Apart from stupid losers using rlogin) ``` [...]

``` (?\C-b . te-backward-char) ;; should be C-d, but un*x ;; pty's won't send \004 through! ;; Can you believe this? ``` [...]

``` ;; Did I ask to be sent these characters? ;; I don't remember doing so, either. ;; (Perhaps some operating system or ;; other is completely incompetent...) ``` [...]

``` ;;-- Not-widely-known (ie nonstandard) flags, which mean ;; o writing in the last column of the last line ;; doesn't cause idiotic scrolling, and ;; o don't use idiotische c-s/c-q sogenannte ;; ``flow control'' auf keinen Fall. "LP:NF:" ;;-- For stupid or obsolete programs "ic=^p_!:dc=^pd!:al=^p^o!:dl=^p^k!:ho=^p= :" ;;-- For disgusting programs. ;; (VI? What losers need these, I wonder?) "im=:ei=:dm=:ed=:mi:do=^p^j:nl=^p^j:bs:"))) ``` [...]

``` (setq te-process (start-process "terminal-emulator" (current-buffer) "/bin/sh" "-c" ;; Yuck!!! Start a shell to set some terminal ;; control characteristics. Then start the ;; "env" program to setup the terminal type ;; Then finally start the program we wanted. (format "%s; exec %s" te-stty-string (mapconcat 'te-quote-arg-for-sh (cons program args) " "))))) ``` [...]

``` ;;;; what a complete loss ``` [...]

https://www.digiater.nl/openvms/freeware/v10/emacs/common/lisp/term-nasty.el

``` ;;; term-nasty.el --- Damned Things from terminfo.el ;;; This file is in the public domain, and was written by Stallman and Mlynarik ;;; Commentary: ;; Some people used to be bothered by the following comments that were ;; found in terminal.el. We decided they were distracting, and that it ;; was better not to have them there. On the other hand, we didn't want ;; to appear to be giving in to the pressure to censor obscenity that ;; currently threatens freedom of speech and of the press in the US. ;; So we decided to put the comments here. ;;; Code: These comments were removed from te-losing-unix. ;(what lossage) ;(message "fucking-unix: %d" char) This was before te-process-output. ;; fucking unix has -such- braindamaged lack of tty control... And about the need to handle output characters such as C-m, C-g, C-h and C-i even though the termcap doesn't say they may be used: ;fuck me harder ;again and again! ;wa12id!! ;(spiked) ;;; term-nasty.el ends here ``` Note to the gentle readers: "wa12id" stands for "with a 12 inch dildo".

Jamie Zawinski kept Lucid Emacs nasty:

https://groups.google.com/g/gnu.misc.discuss/c/U5oXKOfWinQ/m/xek-XhmQ9eoJ

Noah Friedman, Aug 3, 1992, 4:54:20 AM

In article wood...@hal.com (Nathan Hess) writes:

In article , friedman@gnu (Noah Friedman) writes:
>It's by no means necessary, but it's funny.
Along the same lines, look at lisp/terminal.el

Of course, terminal.el is actually useful, albeit not terribly powerful.

(and terminal.el is pretty mild compared to some of the other things I've seen written by mly. :-))

Incidentally, a lot of terminal.el has been rewritten in version 19.

Too bad... I liked all the variable names and comments in the original.

Jamie Zawinski, Aug 5, 1992, 12:40:38 AM

In the FSF-distributed Emacs 19, the obscenities (will) have been stripped from terminal.el, though they are preserved in a file called term-nasty.el, to avoid appearing to bow to the censors.

In Lucid GNU Emacs, terminal.el will remain as nasty as it ever was.

-- Jamie "Truth, Justice, and the Fucking First Amendment" Zawinski

BI @bitwize Peer Contributor

Man, I totally get this. I've been an Emacs user for 30 years and counting; back in the mid-90s when I started on Linux, I learned that the truly wizardly hackers usually used one of vim or Emacs and because I disliked modal editing, I chose Emacs—only to find myself tumbling down a deep, deep rabbithole that opened into an unfathomable warren network it would take me decades to begin to make any sense of.

When I open Emacs, it's like I'm five years old again, seated at my VIC-20, confronted with the infinite possibilities of the machine, challenged to explore them. Except the possibilities are so much greater because computers can do so much more and Emacs—as the programmable way to program—puts them virtually all at my fingertips. It's all a bit overwhelming, and this essay does a good job of capturing that overwhelm and the shift in perspective needed to cope.

That said, it's likely to send most people screaming back whence they came, clinging ever more firmly to their Visual Studio Codes and IntelliJs, if they be programmers at all and if not, it may turn them off programming altogether. Because that perspective shift looks like utter madness from the outside. I don't think we as a species are ready for computers yet. The possibilities, the implications.

KR @kragen Peer Contributor

This essay is amazing and delightful, but it is rather densely allusive, like classical Chinese literature; ultimately it is more allusion than plain language. I suspect that most people will find it somewhat impenetrable. But if you want to see Emacs explained by references to Dune, Harry Potter, Gormenghast, Star Wars, A Rape in Cyberspace, Neuromancer, The Matrix, Crowleyian magick, and so on, this essay is for you.

Ultimately such storytelling seems to be the best means that we as humans have to convey our subjective experiences, which purely objective descriptions are not very good at. (This is one of the weak points of the engineering mindset that I was criticizing in https://news.ycombinator.com/item?id=45650941.) So I sympathize with the project. But I wonder if it may end up preaching to the choir a bit: if you remember the intoxication of reading Barlow's Declaration of Independence, probably you already have a settled relationship with Emacs, whether intimate or traumatic, or both?

AL @alyandon Peer Contributor

``` They say there’s no Emacs — only your Emacs. ``` This hit home for me. I spent about 6 months working exclusively with emacs to get past the "this is weird/hard because it is unfamiliar to me" stage. At the end of the experiment, I went back to using vim and IDEs.

My take personal takeaways from the experience:

1) capslock/ctrl switching is helpful in so many other areas - so I kept that

2) emacs is something you want to "live in" (e.g. learning to rely on eshell) if you want to really become proficient with it

3) emacs is something you have to be willing to tweak/adjust via elisp to suite your personal preferences if you want to really really really be proficient with it

I didn't hate emacs but it also wasn't for me.

BI @billfruit Peer Contributor

While I still use emacs, I find that that despite the "batteries included" narrative about emacs, the things which are not included are causes of major frustration.

Such essential functionality like grep-find and LSP servers which is required for out of the box auto complete are not bundled with emacs. Most modern IDEs/editors have these functionality baked in.

If you install emacs for windows you find that grep-find doesn't work, because it depends on support from environment. A full text search should be built into the editor.

HISTORICAL ERA Post-ZIRP & AI (2023–2026)
COMMUNITY SCORE ★ 202 points
TOTAL DISCUSSIONS 122 comments
TOPICS & TECH STACK: