Emacs appearances in pop culture(ianyepan.github.io) |
Emacs appearances in pop culture(ianyepan.github.io) |
The air traffic control one is my favorite :)
-----
And when searching for emacs air traffic control I stumbled on https://www.idsairnav.com/main-areas/aim/airport-em-environm... haha:
> EMACS, Electromagnetic Control and Survey, is an AIM (aeronautical information management) tool that applies advanced simulation techniques to perform airport and Enroute electromagnetic environment analysis as well as airport and en-route electromagnetic site verification.
This is from the person who wrote the original article on Emacs.
At risk of being downvoted into oblivion by the emacs gang, I wonder if someone’s got a similar theme for vim?
I enjoyed the book. It got good reviews and was a Pulitzer Prize finalist.
I always whenever I see code on a show/movie I wonder if it's real, a lot of times it's a mix of random languages. Sometimes just jibberish.
Also recently watched Nirvana 1997 really good.
https://www.theterminatorfans.com/the-terminator-vision-hud-...
Also, we're really close to the 24 year anniversary of "Dilemma": https://hollawhenyougetthis.com
⸻
1. A movie which exists primarily to set up a joke in Office Space.
5 CLS
10 PRINT "PLOT BILATERAL CO-ORDINATES"
15 PRINT : PRINT
20 GOSUB 5000
25 PRINT "INPUT CO-ORDINATE X : "
31 PRINT "4";
33 PRINT "2";
35 PRINT "Y" : PRINT
40 PRINT "INPUT CO-ORDINATE Y : "
41 IF INKEY$ = "" THEN 41 : IF
42 PRINT "Z";
43 IF INKEY$ = "" THEN 43 : IF
44 PRINT "+";
45 IF INKEY$ = "" THEN 45 : IF
46 PRINT "X"
47 GOSUB 5000
50 CLS
60 PRINT "0010 N = RND(900)"
70 PRINT "0020 Z = 1 TO N"
80 PRINT "0030 X = 1 TO 31"
90 PRINT "0040 Y = 1 TO 15"
100 PRINT "0050 SET(31-X,16-Y,Z)TO(31+X,Y,"
110 PRINT "0060 SET(31+X,Y,Z)TO(31-X,16-Y,"
120 PRINT "0070 SET(X,16+Y,Z-Y)TO(X,Y,Z)"
130 PRINT "0080 SET(X,16-Y,Z+Y)TO(16+X,Y+)"
140 PRINT "0090 GOTO 500"
150 PRINT "0100 NEXT X:NEXT Y:NEXT Z
160 PRINT "0110 CLS"
170 PRINT "0120 DATA 1.13.2.67.2."
180 PRINT "0130 DATA 12.45.90.3.23.56.2.56"
190 PRINT "0140 DATA 3.6.1.43.92.56.2.9.08"
200 PRINT "0150 DIM P(9)"
210 PRINT "0160 B$ = CHR$(191)"
220 PRINT "0170 FOR X = Y - Z : PRINT X"
230 PRINT "0180 FOR Y = X - Z : PRINT Y"
240 PRINT "0190 END"
250 PRINT
260 PRINT
270 PRINT
280 PRINT
290 PRINT
300 PRINT
310 PRINT
320 PRINT
330 PRINT
340 PRINT
350 PRINTI also loved them knowing Lenny wrote some code, as he was the only person in the world who uses snake case in javascript, because I’m also a snake case heretic.
https://onlinegrad.syracuse.edu/blog/mr-robot-cybersecurity-...
And sometimes it's just a directory listing.
https://dev.to/hyenast2/neal-stephenson-s-cryptonomicon-and-...
It’s interesting how people talk about vi vs emacs, can’t remember ever meeting anyone who chose vi over vim, let alone enough people to make th at the debate.
Pleased to meet you.
Most of my console dev time is spent in *BSD, where nvi is where I land. I find the the default creature-features of vim annoying, so I end up having to configure it to be a bit more quiet, and I don't know anything so compelling about it (a vi clone (to an extreme, acknowledged)) that nvi isn't a good enough place to be. I have vim installed, but it's not my go-to.
For me, it'd be primarily having more than one undo. Not being able to undo the second-to-last change is pretty bad. In fact, vim's undo being set up as a tree that can be walked with g- and g+ is excellent. It's impossible to lose a state of the buffer, even if you undo and make changes. It's a lot more practical to navigate than Emacs' undo, too.
EDIT: I just realized that nvi can undo more than one change by having u toggle the direction and . continue in that direction. I don't think ex-vi could. busybox vi seems like it can undo multiple with u but it seems to have no redo.
Is that something you just get used to, or was I using some weird vi?
At the time I left for vscode, emacs had a REALLY bad Typescript story and it felt like a revelation doing TS in vscode.
Surely emacs has gotten a definitive TS solution since, idk, 2018? 2019? Right?
Perhaps VI would make a good snake name, though: VIper.
In this gem there is a conversation about hacking into some system, and a character asks another a completely nonsensical semi jargon question, which goes like this: "Did you try Emacs via Sendmail?". I shit you not.
This expression firmly cemented itself into Polish tech speak as a way to refer to or call out someone having absolutely no idea what they are taking about.
https://www.youtube.com/watch?v=D1sXuHnf_lo
Interview with an Emacs Enthusiast [Colorized]
https://www.youtube.com/watch?v=urcL86UpqZc
Writing an Emacs implementation in C (Gosling Emacs) | James Gosling and Lex Fridman
The Amazon file is also DRM-free, I picked that option when self-publishing: https://www.amazon.com/dp/B0GYCZJVGX
https://web.archive.org/web/20120502000130/https://jtnimoy.n...
Gotta admit that I use Emacs and favor spaces over tabs. And K&R braces. And you’re wrong if you make any other choice.
Vim and Emacs barely overlap in functionality.
We know Sick Boy (Zero Cool) would be an emacs user.
(Hah, I just looked around a bit more, and Wikipedia cites an archived mailing list message that I don't remember seeing before: https://web.archive.org/web/20181027195101/http://blade.naga... I remember at some point Emacs Lisp specifically being cited as an inspiration, but I might be confabulating that, I didn't find a source for it.)
Also, here's a fun paragraph from the opening comments of quail.el (lightly reformatted):
> [There was an input method for Mule 2.3 called ‘Tamago’ from the Japanese ‘TAkusan MAtasete GOmen-nasai’, or ‘Sorry for having you wait so long’; this couldn't be included in Emacs 20. ‘Tamago’ is Japanese for ‘egg’ (implicitly a hen's egg). Handa-san made a smaller and simpler system; the smaller quail egg is also eaten in Japan. Maybe others will be egged on to write more sorts of input methods.]
As a sysadmin, I prefer a basic "vi" as in most cases I want quick open/edit/close and don't need fancy colours and such. (I.e., vim.tiny on Deb/Ub rather than vim.basic.)
Because vim generally offers everything vi has.
vi does have one advantage though. It's a lot lighter. vim is like 5.4MiB in size with 82 shared library dependencies, while vi[1] is like 260KiB with 2 library dependencies (libc and ncurses).
(With you on spaces, though.)
As for tabs vs spaces, in theory, tabs are more flexible than spaces and allow everyone to view the file with their preferred indentation levels. In practice, I have only seen one codebase — ONE — in all my years of programming that was using tabs and yet did not end up with spaces getting mixed in with those tabs at some point along the way. (In the indentation, I mean: obviously once the non-indentation part of the line starts, you want spaces there). And that codebase had precisely two people committing regularly to it. Occasional PRs from other contributors, but only two primary maintainers.
Every other tab-using codebase I've seen (of non-trivial size and complexity, that is), someone, somewhere, had been lazy, or had a misconfigured editor, or something, and spaces snuck into the tabs. The worst offender I ever saw was a file that had been edited by multiple people over the years, who must have had different tab settings in their editors. There was one section where they had tried to line up a bunch of variable assignments and values. (Yes, I know, bad idea, but stick with me for a minute, I'm getting to the punchline). None of the pieces of code that were supposed to line up were actually lined up. (This was C# code, so indentation didn't truly matter like it would in F#, or Python, or ... well, I won't list all of them since I'm trying to get to the point). Here's the really hilarious part. I tried all sorts of tab settings to see if I could get that file to line up. I tried 8. I tried 4. I tried 2. I even tried 3, the setting for the people who can't make their minds up between 4 and 2. Then I tried really oddball settings like 16, 5, or even 7. Nothing worked. There was no tab-size setting I could use that would make the code line up. Which entirely negates the whole point of tabs, that you can set your own indentation.
That was the day I said "Forget about tabs, just use spaces, you won't have that problem with spaces." Tabs have great promise, but in practice, in my experience at least, you end up having to tell your colleagues "hey, you need to set your tabs to 4" (or 8, or 2, or ... well, you better not be using any other numbers) "before editing this file". Which basically negates the whole point of tabs. They're great in theory, but I've only seen ONE codebase that made them work in practice.
The program listing ends with line 350, but this is incomplete; the program must has more lines than those shown in the movie. The missing lines have a known functionality, and, infering them from their observed functionality, they could be something like this:
360 PRINT
370 CLS
372 PRINT
374 PRINT
376 PRINT
378 PRINT
380 PRINT
382 PRINT
384 PRINT
386 PRINT
388 PRINT
390 PRINT "CO-ORDINATES ACCEPTED"
391 PRINT
392 PRINT "PROGRAMME RUNNING"
395 GOTO 395
These specific line numbers are merely guesses, except the line number 395, which is known to be the end point, since that is the line number where the program is interrupted.The listing is also missing line 5000, referenced on lines 20 and 47. I am guessing it may have been a subroutine to play an audible beep.
So for me there isn't really any time of looking at the screen and not knowing. And if there ever was some ambiguity I would reflexively hit ESC to get to a known state.
So, not sure it would bother me. But my editor does give me an indication of whether I am in normal, insert, visual, visual block, or Emacs mode.
Vim's modelines (and Emacs' equivalent) can solve this part at least, no?
What the heck are you talking about?
Emacs undo is simply the State monad over a zipper into a persistent tree of buffer states.
I can't see how you could make it more practical?
Do you mean infinite undo? nvi has that. I'm not sure what you mean "set up as a tree" wrt undo, but i'll look into it. I think of nvi's undo as linear - I can 'u' to "undo" and implicitly set my "undo direction" "backward in time" (as one would expect). If I want to "undo, even more", '.' (dot, period) to "do that last command again" is what I'll do. If I want to "undo an undo", 'u'. That has the effect of moving the "undo direction" back towards the state of the buffer we had at the beginning of our discussion here.
...and, now I see your edit ;)
^[u..........:wq
And now it's more clear to me why that is.
In fact, I think next time I'm writing Common Lisp code, I'm going to figure out how to create Janet's | as a reader macro.
[1] https://news.ycombinator.com/item?id=6094610 [2] https://github.com/emacs-mirror/emacs/blob/master/lisp/progm...