Speaking of crazy applications of Emacs... Long long time ago, my team was tasked with rebuilding an MBS analytics system for one of the leading fintech companies. The original system ran on DEC VAX and was written in VMS Pascal (let's just say, a very unique flavor of Pascal). Rewriting it from scratch was not an option (it would take decades to implement all that complexity and to make sure it worked correctly). Instead, we utilized a combination of tools that first transformed the Pascal code into the form that was closer to more popular Pascal dialects (which included using a Scheme compiler and (drum roll) Emacs in batch mode), applied a set of hand-made patches, translated into C using p2c, and finally built on Linux. As crazy as it sounds, it worked well enough to be used as a foundation for the next gen of mortgage analytics.
Depending on the time frame, FreePascal/Lazarus might have simply been not available (or unknown) to the team.
I remember how in ~1997 at a science camp we used Turbo Pascal under DOS for most programming labs, and whenever pascal code was run on Linux machines we used p2c translator and compiled the resulting C code.
I don't think VAX emulators were the thing back then. :-) In fact, our target platform was a cluster of commodity DEC Alpha machines running an early version of RedHat Linux for AXP. I know for a fact, that we were the first system that employed Linux clusters in fintech.
This is what Ticketmaster did. Up until a few years ago, and it’s probably still the case, they heart of their reservation system was written for the VAX in the 70’s. When they had to make the hardware/OS switch, rather than port, the went to an emulator.
Yes, absolutely. You will be shocked how complex CMOs might be just to calculate plain cashflow on a tranche (https://www.amazon.com/Handbook-Mortgage-Backed-Securities-7... is a great standard treatise on the topic). Add to this interest rate modeling and prepayment modeling - and we are talking serious logical complexity. And this is the area where people get REALLY pissed when you have bugs.
If the bugs affect your shock preparedness, and liquidity status and mandated holdings/reserves, you might be in a world of hurt: Failing compliance can permit the feds to step in and seize the enterprise, if it's in the regulated space.
There are times when I wonder if calling GNU Emacs an editor is really descriptive. Editing is just one window, to what's really an integrated Lisp development and runtime environment. Compare some Lisp Machine features to the GNU Emacs features:
Zmacs -> Emacs, Zmail -> Rmail (or Gnus), Symbolics Document Examiner -> Info, Lisp Machine Lisp -> Emacs Lisp (both children of Maclisp). There may be other examples that I'm not aware of.
GNU Emacs might have started as an editor, but it's certainly grown beyond that. Maybe its become a sort of Valinor, a realm for uprooted Lisp machine users to continue the craft.
The fun thing is that a bunch of the oldest bindings are essentially a random sampling of keybinds used by different people when original TECO EMACS was coalescing into existence.
But a common pattern was that the systems majorly used with Emacs as the keybindings evolved all had mirrored bucky bits which means instead of using left pinky finger for Control key when hitting C-x C-f many would use right thumb for Control and left hand for X and F.
I mean, the other fun thing is that the vi keybindings are also a product of the really terribly anemic keyboard that the ADM-3A terminal it was developed for had, and was also a product of the conventions developed by line editors like 'ed'.
And so there's nothing virtuously ergonomic about the vim keybindings and people who try to make it seem like there's some UX genius there (and to be fair, also with emacs) are often involved in a rather elitist game of retcon.
Emacs at least evolved on systems that had much richer keyboards, and with the deliberate intent to make use of those extra keys but also make it possible for people to just muck with it and make it whatever they wanted.
In the late 80s, early 90s when I got my start on Unix... I specifically chose emacs over vi because it let me use exotic novelties like... arrow keys.
The left pinky finger would not have been used for hitting left Control in Emacs back then, rather one would have used the left _thumb_; the Control key was positioned beside the space bar on both sides.
To use the left pinky on those keyboards for left Control, you would have to leave the home row completely, and shit your wrists awkwardly....
To call these Lisp Machine features is to skip quite a bit of history :-)
RMAIL, info, etc predate Lisp Machines (ZMacs and EINE have their roots in ITS/TECO Emacs) by quite a bit. They where standard on ITS long before the Lisp Machine came about, and that is really from where GNU Emacs draws much if not most of its inspiration.
I think of Emacs as being to Elisp what the JVM is to Java. It's a platform with a whole host of applications, some of which are good and many of which are less good. Examples of applications of great quality include calc, dired, evil, magit, comint, org – you just won't get these outside of the Emacs platform, much like a few years ago you couldn't run Minecraft outside of the JVM platform.
well it's like... emacs takes the "editor buffer" concept to its logical conclusion .... it's not just files, it's anything. calling it an editor is entirely descriptive. it's just that other "editors" are far more limited in that they only edit file buffers.
This is what alienates me when I try to use VSCode every year or two. It has a wonderful extension ecosystem and seems generally quite competent, but there’s no culture of just putting stuff in a text buffer like every other thing. Extensions want their own special windows with different key bindings, the terminal is its own thing, there’s custom UI everywhere. Emacs is just how I think for the most part - here is some text I can freely navigate around and mess with. Sometimes new text is inserted or appended by me or a command, but I’m never having to switch modes in my head.
Emacs in the 2020s is getting better and better as an application platform. Everything is faster thanks to native code compilation. There are multiple frameworks for interaction, including transient, forms-mode, widget.el, probably some others. There's native support for SVG, formatting and styling text, displaying bitmap images, etc. It's cross platform. You could do a lot worse.
I like Org mode especially. In a world of digital surveillance, AI fueled spyware, SaaS and app stores, emacs based applications are a haven of trust and freedom.
Unfortunately, more often that I want. My emacs locks up for multiple seconds a few times a week. Yet, been using emacs for 20+ years, so changing to something else is difficult.
It's especially noticeable with LSP stuff.
I enjoy reading stories like this, considering Emacs is still going today --- and I am a regular!
I use emacs for many programming languages. However, when it came to .NET development (at work) - I had to stick with Visual Studio. I always toyed the idea of Visual Studio Code but, due to some of the projects, it was not easy to do when we were using .NET Framework. Once we were getting closer to .NET Core, however, I knew emacs was becomming a possibility.
My work colleagues see "emacs" on one of my screens at work. They are puzzled why I use it to generate code or do git, etc, with it - but rarely ask questions.
One thing I was surprised about, when we finally moved away from .NET framework to .NET Core (.NET 6 and later) -- I was surprised when one member of the team said he was planning to switch from using Visual Studio.. the IDE, to Visual Studio Code.
I asked why and he said is just likes it behaving more as a text editor than a full development environment. Of course, I understood what he meant by that.
Its weird, especially in microsoft stack land, to hear a .NET developer say this. Truth is -- many seem to be moving to Visual Studio Code. It had to take another Microsoft product to do that, considering we always had vi/vim, emacs, or others like sublime text, etc. Before Visual Studio Code, if I dare mention using a text editor for a .NET project, I would have been given all sorts of puzzled faces. How times change.
Today... while most are still using Visual Studio (IDE).. we now have 2 developers using Visual Studio Code. As for me... I am using:- eglot, company, yasnipet, flycheck, etc... EMACS+Omnisharp!
I even wrote functions to easily create new solutions, projects, unit tests, etc.
Programming is enjoyable with emacs. It makes me happy.
I converted 140+ CLion users to VS Code / vim / Emacs (mostly vscode) at our company.
It's not about the "text editor". It's about the LSP and implementations for it. Like it or not, before LSP, code intelligence tooling was quite bad in the "text editor" land (except for some tools like clangd or jedi). Today it's a bliss to use a performante, small footprint editor and offload code intelligence. Although, IDE-lover users swear that their IDE's built-in code intelligence is superior (which, in some cases, is objectively true).
Thanks to Microsoft, I guess. Thanks to the FOSS world for the implementations, too.
Was this before or after Nova? I’ve found CLion quite pleasant coming from Emacs - it’d been years since I wrote C++ and I’d never used CMake so I was finding myself spending too long feeding Emacs to get an environment I was happy with. It’s nowhere near as powerful as a modern Java or .NET IDE (I have indulged this new guilty pleasure and played with the whole JetBrains suite at this point) but I’ve found it plenty powerful. I still default to Emacs for ecosystems I know well though, and expect I’ll migrate back fully at some point.
We were among the first to try Nova (talking directly with the Developers) and while it's slightly better than CLion classic, the double size package and still no remote index support didn't warrant rolling it out, unfortunately.
We created a clangd-based setup with remote indexes so that our developers can open their editor (vim / vscode) and within 10 seconds they get access to full code intelligence on the 20M+ SLOC monorepo. This is unimaginable with CLion, where developers have to scope down their "view" on the monorepo to a handful of directories, and still wait half an hour for the indexing to happen
Internal. 30+y of development with multiple languages, and I'm still a rookie when I look at the code and the progress of it, and part of the revenue (maybe even most of it) doesn't even come from this monorepo codebase.
My understanding is that 20M+ SLOC is not even considered a super large code base, though, when it comes to those "textbook" monorepo examples (urban legends?)
I use VS Code for Javascript when I am working on Frontend, but even if all of our backend stack is at least .NET 6, I still prefer using Visual Studio for .NET code. Maybe I am too attuned to keyboard shortcuts in VS, but I also like hitting buttons to launch containers, debug, jump to definitions, run tests and so on. I quite enjoy working in Visual Studio. Also, before using VS for .NET I was using VS for C and C++. Even when I coded in Linux I searched for IDEs instead of text editors.
For git I prefer the command line.
I don't think there's right or wrong, use whatever tool makes you comfortable and productive.
I'm reminded of the much more positive story from Steve Yegge about a customer service system at Amazon that used Emacs as its UI. Apparently the customer-service reps loved it, and missed using Emacs when the transition was made to an all-new Java app.
I worked for a subsidiary of Capgemini, German ATC system as well, a couple years later, and I'd have welcomed a message router in undocumented elisp. It would've been a very clear step up.
You might still consider giving it a try. There is a learning curve, but it's a sigmoid with a remarkable slope past the first knee; I don't necessarily buy all of Yegge's boosterism, but I will say that in those places where I've had the reputation of getting stuff done that no one else could and faster than anyone expected, it's been my skill with Emacs that gave rise to the large majority of that reputation.
(I don't necessarily no-sell all that boosterism, either. The most basal ancestor of today's GNU Emacs dates to the mid-1970s; if the 'Lindy effect' holds true, it really is the 100-year editor.)
I'm not shocked. Same story with Wordperfect and all its F-keys, and keyboard shortcuts, over Word and its mouse driven UI. Secretaries at the time hated the change.
Text input is so much faster, and of you're typing a lot, keyboard <-> mouse movements slow you down.
I'm still learning how powerful all of Emacs' navigation bindings can be, and I've been using it exclusively since 2010. Never leaving the home row, and not needing a weird keyboard or a million fragile overrides, is a superpower - and one that also applies anywhere GNU readline is available.
I once used excel & vba as an intranet webserver to collect weekly business analytics using user input into web forms from various departments.
A very little knowledge, no proper resourcing, no support, internal politics determined the effort should fail came together to produce such a "success"
Got a seedy story like that? Seedier than that? Let's hear it!
I wrote a Perl script for a client to provide CSV records as results to search queries sent by the main application, a custom tool in Microsoft Access my friend had created.
We managed to convince the client to install the Perl script on IIS on some shitty little Windows NT box they had. There was no cloud, and no web services hype yet. Linux was still an experiment for college kids to work with... Windows NT was the future of enterprise servers that did real work.
Anyhoo, our crappy little "web service" did the job. The client's sales personnel were able to upload, search for, and retrieve the process analyses they used to sell new equipment to their customers.
I knew no Visual Basic. Microsoft was converting from XNS to TCP/IP and MSMAIL to Exchange. I wrote the automation to port mspager from MSMAIL to Exchange - if you were in a thread on MSMAIL, you cc:mspager, and everyone on the thread with a pager would get a page. I must have spent as many as six hours hacking something together to make it run.
Ah, the 90s. I also wrote a tool to catch people setting up remote dialins so a) they had internet from home b) could share those links with friends to grab stuff from the products server. It ran on Linux and used a network sniffer to catch people.
I don't even understand what was built in emacs. A "message router"? Its job was to take messages in from a set of links and transfer them out some other set of links? How did it know what links led where, or how to make progress towards the final hop? How was the path computed? If TCP/IP was already available as a layer, why not just use its routing capabilities? What was DCE and how did it help?
TCP/IP only understands routing along IP addresses.
"Message router" usually involves understanding higher level entities - In this case, it would understand that a given type of message with given information needs to be forwarded to X, Y, and Z.
DCE was "Distributed Computing Environment", and provided among other things RPC system that is still used by MS Windows NT and DCOM. In this case it was easier to make all parts of the system first talk TCP/IP, then use DCE to provide glue code between divergent environments.
It's been posted on HN before but it's probably relevant to this thread. Steve Yegge had a post about how Emacs was used heavily inside Amazon's customer support system https://sites.google.com/site/steveyegge2/tour-de-babel
I didn't know about emacs and the customer support thing -- will look it up and read it.
I believe it was reading his site (a number of years ago, might I add) that convinced me to swap my LCTRL with CAPS on my keyboard. Best decision.. ever!
Now my pinky has been much more comfortable ever since!
Of course, my co-workers hate it that I have swapped keys. They forget about and wonder why capital letters are not working, or trying to copy/cut/paste. lol.
On windows, I use to update the registry directly. Today, I use PowerToys... so I can just close it if someone else uses my keyboard.
Looks like someone deleted the wiki article and replaced it with an insult to hn and a racist slur. This is currently what I see when I navigate to the linked article:
> hn sux, pjals is probably in love with autione. niggers all.
If there are any emacs wiki admins reading this, you might want to look into correcting this.
-- EDIT --
I reached out to #emacs on librechat and it has been reverted.
A bit a digression but the community around #emacs on freenode and emacswiki.org was really wonderful when I was active on it in the early 2000s. Lots of people who were as helpful as they were knowledgeable. ALmost none of the internet trolling and bile that plagues many modern fora and real friendships formed from meeting people online. It's a great throwback to see a page from that site on HN.
Wende is the term that most Germans use without thinking twice.
It’s been a common word, which existed long before 1989, and while it is since then strongly linked to the events around the time when the Berlin wall fell, you’ll have a hard time finding a German who knows of how this word was used by the East-German political party (SED).
Spoiler: It was used to mean the opposite of what actually happened (i.e. more power to the party).
The parent comment’s link brings you to the transcript of an interview with a former German law professor who, knowing the SED’s usage of the word, made sure to always describe what happened in 1989 as a revolution.
This is actually one person begging other German speakers to start using what he thinks is the correct word.
Ain’t gonna happen.
If East-Germans stood up for themselves in the required numbers to overthrow their leaders, I guess Germans would use the word revolution.
But that’s not what transpired.
In 1989 a system collapsed. Communism. While that may also always qualify as a revolution in academic circles, German people chose Wende, which simply means turnaround.
That's interesting. In Hungary the end of communism is called "rendszerváltás" (lit. change of system) or "rendszerváltozás" (lit. change in system). There is a small debate about which term is more appropriate, although they are mostly used interchangeably but nobody calls it a revolution. The process was completely peaceful and legal, unlike other places where the change was more chaotic and violent.
Yes, please don’t assume that most people who speak German call it a revolution either.
Wende means turnaround and that’s good enough for the rest of us.
But today I learned that Hungarian is a Uralic not a Slavic language and so of course I had no chance discerning which word in «rendszerváltás» stood for system or change, which made me mad enough to want to look it up:
I know Hungarian doesn't normally have any Indo-European roots, but it can of course borrow words from neighboring languages, so I would have wondered whether váltás could have be borrowed from a Romance language, from the same root as volte/volta (from Latin volvo), meaning 'turn' (particularly given the possible cultural influence of German Wende, which we were just discussing).
I checked on Wiktionary and this nice theory is not right; váltás has been traced back to Proto-Finno-Ugric roots and has known cognates in other distant Uralic languages. Oh well! At least we live in a miraculous time where one can easily check etymologies in various language families in five seconds. :-)
But amusingly, "revolution" itself also literally etymologically means ... turn!
The names given to these important events are always controversial and are often politically motivated. For example in Hungary the 1956 revolution was called a counterrevolution under socialism, or for a more recent example the election of Orban in 2010 (who has been prime minister since) is often called another "rendszerváltás" in opposition circles.
Also, Hungarian being an agglutanative language the word "rendszerváltás" breaks down into simpler roots: "rendszer" = "rend" (order) + "-szer" (unique suffix) and "vált" (to change) + "ás" (suffix which turns verbs into nouns). I find this language really cool because of the fact that most words decompose into very simple morphemes.
Interesting. This -szer suffix seems to be used a lot. Attached to hajtó, it turns driver to fuel. Attached to autó, it turns car to car service. Attached to pàra, it tuns vapor to vaporizer. Attached to fékező, it turns braking into brake fluid.
Seems like adding -szer turns the meaning of the word into its enabler.
Unix was effectively free for a long time, ported to pretty much everything, and with source-based portability a lot of software could be adapted between places.
VMS could be way more solid than whatever was cobbled in Unix (outside expensive niche implementations) but over time Unix would grow and grow while VMS was limited in users and platforms. [1]
Digital selling off some of the software packages they used to provide with VMS only made for quicker demise.
[1] This is also oft-forgotten reason why Oracle got so widespread in enterprises - you could get Oracle with most features on most platforms, even if some were more blessed than others. It might run slower than packages optimized for given platform (think DB2 on S/390, Rdb on VMS) but it would be mostly the same database whether you connected to development server on PC, some department's VAX Cluster, or your recent acquisition's IBM Mainframe.
Yup. I am on #emacs channel at liberachat. People are trying to find an admin to revert and lock the page. No point in reverting without an admin because the vandal just edits it agian.