EMACS AS AN ALTERNATIVE COMPUTING PARADIGM By Dennis Katsonis 13 August 2025 Introduction This is a submission for the Emacs Carnival of August 2025 https://takeonrules.com/2025/08/01/emacs-carnival-2025-08-your-elevator-pitch-for-emacs/ This essay will not go into the specifics of Emacs. I will not avail you, dear reader, of a list of text editing features, such as the ability to move forwards entire words and sentences with single keystrokes, the ability to transpose words, lines, auto-complete, store text in registers to retrieve later, keyboard macros to repeat complex editing sequences and such. This is all covered elsewhere, and in the Emacs tutorial. Rather, we'll look at higher level concepts and ideas, which could change the way you see your text based work. Ideas and power which one could overlook if they just take a cursory examination into Emacs and settle their learning experience on learning the keybindings and commands only. In my article Break out of Applications [1], I muse about a different computing paradigm, one where our computing environment is not sectioned off into discrete "applications", but instead we have data and code, and we can apply any code to any data. The applications are compressed into a cohesive system, the barriers broken down, and we can use any computation, any algorithm, any business logic on selected data, where available. This isn't just running one app with every conceivable feature, but a base system, which allows much tighter integration between data and code between different software packages, such that each software package can be accessible and impact each other. Emacs, by virtue of being somewhat like a Lisp machine, comes close to this model. This was discussed in the aforementioned article. But before we look further into how Emacs works, lets take a look at a fairly typical workflow that might be done on a computer, a workflow that I encounter in my profession. Let us suppose that we are writing an email, and we are doing that in the application that is designed for drafting and sending emails. In this email we are making reference to the cost of something, and we might write something like "The monthly cost of maintenance is $33.50, which for the year is...". Its a fairly common scenario to find oneself in, where one might need to do a quick calculation. What do we do in this situation? We go to another application. We start Calculator, we enter 33.50 and multiply by 12. We might remember the result and type it in the email, or better yet, if possible, copy and paste it. Many would simply use a desk calculator to avoid the context switch and interruption from starting the calculator program on the computer. But all we want to do is multiply 33.50 by 12. Another example; You send a some type of list in an email and want it sorted. You might copy and paste into Excel, sort, copy back. You are working in whatever program you are using to manage your to-do list, and you want to link to an email. Perhaps you want to do something else, such as log errors you encounter during document reviews. How often do you or others, copy and paste data from one application to another? You might look up data in Excel, find the row you need by searching for the lot number, and copy a few details into a label template to print. If you look at how people work on computers, you see this pattern a lot. In fact, quite often people don't even copy and paste, they take screen shots, which means the data I receive can't be copy and pasted to its destination, it must be transcribed by sight! Data is manually shifted from one application to another, to another. Each its own world, forcing us to run errands, transferring that text from program to program. That makes us the computers servants, digital butlers. We are like an errand boy taking a note from bureaucrat to bureaucrat, because they cannot be all in the same place and make the process seamless for us. What are we really trying to do on our computer? Take a step back and think of what is actually happening. What are we really wanting to do? We are wanting to apply some algorithm or function to data. Each application we use has a subset of the tasks we need, whether it is sending text by email, sorting, maths, looking up records from a database, tracking state of tasks. Each task is encapsulated in a separate application, each of which is isolated in terms of data. We are so used to this paradigm that very few even consider it could be different. But it doesn't make a lot of sense, does it? The computer can add numbers, so why can it not add numbers anywhere there is a number? Why is it when I am in Outlook, the computer is unable to multiply the number I typed by 12? Why does my computer "forget" how to check the spelling in other applications? If I have a register of data, a CSV file or Excel, why does my computer lose the ability to retrieve data when I'm writing a memo? Why do I lose the ability to send some selected data in Excel by email? Emacs offers something unique, the ability to run any code on any data. Data is separated into buffers, which are the analogue of "Documents". That data is text, with text considered as being anything that can be entered through a keyboard; prose, data, numbers, equations, code, symbols, instructions, anything. The Lisp interpreter which runs in the background and its plethora of functions, which can easily be extended by add-on packages or by writing new functions, even *on the fly*, can operate on any text in any buffer. These functions can modify existing text, or take control of a new buffer and act as a new application, and everything in between. Emacs allows different 'modes' for buffers, which change which Lisp code manages it, thereby allowing unique behaviours. This allows a buffer to be a file manager, or an IRC client, or a view to your emails, a data entry form or even a game like tetris The key difference is unlike our other applications which were blind to each other and only had a subset of tasks, within Emacs you have instead the full range of functions that are contained in the Lisp packages are available, in all places, at all times. As Lisp is a powerful programming languages, those functions can be anything you can think of, on text, with text being anything that could conceivably by typed in. Just type a new function, evaluate it, and you have new capability. Emacs is essentially a sandbox for a text based computing environment. New opportunities A new world now opens up. In each Emacs buffer, there is no "forgetting". You can do math on any number in any modifiable buffer. Not just access a calculator, but directly operate on the number itself! In our earlier email example, you could type 33.50, and using Emacs Calc in embedded mode, selecting that number, directly perform any mathematical operations you want, *on that number*. The number 33.50 is changed to 402. In fact, that's how I got the 402 just now. One package for Emacs, Org mode, takes plain text and transforms it into a competent task manager with agendas, deadlines, markup, and the ability to do spreadsheets, format documents and explore them to HTML. You can sort any text in any buffer. You can write functions which connect to database, or CSV files, and query data, and insert results, directly in your buffer. Even have a web browser or file manager. Anything you can think of, can be done. Select text, and send that selection via email. Evaluate code and formula in emails you are writing, and even in web pages. Ever thought that in your file-manager, when remaning a file, that it would be nice if you could just press a few keys when renaming, to insert the current date? In my blog post Getting Calc to play nice in embedded mode [2], I include a simple formula, 10*12. If you were viewing that within Emacs, you could actually do that calculation in place, right there in the browser, as long as you disabled read-only mode first. Emacs operates to a different paradigm, one like this vision. The barriers between applications and functionality are dissolved. Imagine a window you could put any text in, and access any of the functions of Excel, Access, Outlook, an advanced Text Editor, compiler, interpreter, filemanager, anything right there. You merely had to call that function on the buffer, or your selected text. Perform your computation right there, where you need it, on the data. Instead of discrete programs, each unaware of each others data, each with different keyboard shortcuts, you instead have one cohesive system, with the same key movements. Query a database, have the results in a buffer, add some text, modify every value in the third column to add 10% tax, then email it, all without changing applications, without barely having to even copy and paste. Respecting your computing freedom Most important is how this is achieved. One could create an application, which has everything built into it, like the Chinese WeChat, or what Elon Musk wants to do with X, the "everything app". Emacs is not such a program. It is not an application which has every other application bolted into it and thereby limited by the developers vision. It is something simpler. It is a program which manages text buffers, and can run code written in Lisp in them. What Lisp functions you add, is up to you. It is a framework to build your own tailored computing environment. This is what gives you freedom. Emacs is written in a way that it doesn't make presumptions of how you should work, and shoehorn you into its vision. Rather, it gives you the freedom to shape it as you see fit. Freedom respecting software does not presume to know what is best for you and your intentions, but rather, gives you the ability to bend it as you see fit. Freedom respecting software is able to fit use cases and mould to workflows and requirements that the software authors may not have thought of. Emacs does that very well. Emacs, when properly used, can significantly reduce the need to juggle between apps, to have to copy and paste data from one app to another, or save the data and open it in another app. This saves you the mental context switches. It creates a more fluid workflow, especially if you are dealing with text, which many of us are. One you "get it", you see not just what another text editor can do, but a completely different way of interacting with the computer and working on it which allows a fluidity and focus which is otherwise impossible. But most of all, even if you decide that its not the best for you, you will have at least seen other possibilities, seen what is missing in your other applications. You will see what could be, and gain a better appreciation for what potential opportunities and methods could be developed. If you use Emacs, you should look past the obvious, which is the text editing capabilities, and look into what this "Lisp machine like" paradigm can offer you. Lastly, I will link to Protesilaos Stavrou's Living in Freedom [3] LibrePlanet 2022 presentation, where he also talks about the cohesiveness of Emacs, focusing moreso on the freedom that it offers the user. [1] https://boraxman.strangled.net/articles/breakoutofapplications/ [2] https://boraxman.strangled.net/blog/emacscalcembeddedmode/ [3] https://protesilaos.com/codelog/2022-03-22-libreplanet-emacs-living-freedom/