-
A creation-first interface
One of the primary wonders of computing is that creation on a computer is essentially completely free, once you have one -- the world of information is a post-scarcity one where the only cost is your time, and that's it. Bits can represent anything, from prose to poetry to images to film to interactive games to music, and bits can be created and infinitely duplicated (taking poetic license here, don't come after me, I know they're technically being modified not created) at zero cost, on your own... -
Emacs and the UNIX philosophy, part 2
See also: UNIX, Lisp Machines, Emacs, and the Four User Freedoms. Each of the main tenets of the UNIX philosophy has essentially a kernel of truth to it:However, it misunderstands how best to achieve each and every one of these options. Human-readable text is a good medium for data, but it is too flexible to be the data interchange format, by itself, and lacks out-of-band capabilities, as I've said before. Breaking down functionality into entirely separate programs/processes is way, way too hard... -
Emacs as ultimate retrocomputing hobby
Emacs satisfies all of the preconditions for a retrocomputing hobby:It also has many neat advantages over other forms of the hobby. Namely:This makes it the ultimate retrocomputing hobby! -
Emacs should shell out
There are two approaches to adding tools and functionality to Emacs. The first one is to take an existing program with IPC functionality or a command-line interface -- usually most profitably the latter, for as much as I think the UNIX philosophy is incomplete and short-sighted, the idea of making sure that as much program functionality as possible can be called from the command line, and having everything communicate through text streams, ensures the composability and scriptability of programs ... -
Emacs Tips
-
Emacs Lisp really isn't bad
It seems to be common wisdom in the Emacs community that Emacs Lisp is just this terrible programming language that everyone hates, on the level with something like PHP. However, I just don't think that's the case. Emacs Lisp is strongly typed, has an extremely complete and extensive standard library, it has all of the power of a full Lisp including live mutation of a running system, procedural macros, symbolic programming, and homoiconicity, a copy of the Common Lisp standard library (including... -
Emacs versus Acme
The similarities between Emacs and Acme (Acme was created as the premier visual text editing environment for the Plan 9 research operating system at Bell Labs) are fascinating case in multiple discovery not unlike both Liebnez and Newton independently discovering calculus: both have the otherwise very unique property of being most commonly used as text editors, but under the hood actually being malleable, programmable, text-oriented computing environments designed not just for reading and editin... -
Emacs should *never* become multi-threaded
There's a lot of discussion in Emacs community around how Emacs should become multi-threaded. While I think a lot of these ideas are interesting and could work, I think they're ultimately misguided. Most of the fundamental appeal of Emacs is that, at its core, it is a big, huge ball of mud -- and by mud, I mean global mutable state. The fact that it's just this huge ball of state that anything can access and modify at any time, from anywhere, and immediately see the changes live, without hinderi... -
Gap Buffers
A lot of people criticize Emacs's use of the gap buffer, and suggest that it go with a more complex data structure at the core like ropes. While I think there can certainly be room for improvement with this core data structure, I don't think ropes are a good solution, and I think this is far from a crippling issue. Let me start with the second point first. One of the biggest arguments against gap buffers is that they're simply not optimized for multiple cursors. I'm not a big fan of multiple cur... -
Living in the terminal vs living in Emacs
The other environment that many tech-savvy people tend to try to live their whole lives in, that offers a coherent integration between everything and a limited but flexible set of core components, is the terminal/shell. I think I've given a fuckton of evidence on this page (and in my blog post on this) that, as a text-oriented computational environment, Emacs is infinitely superior: its component pieces are fully transparent, scriptable, malleable at run time, far better integrated, can communic... -
On the importance of using what's already in Emacs
One of my biggest pet peeves is people not understanding and making use of all of the powerful functionality that Emacs already provides. (That's why I created Quake Emacs). So many packages have been integrated into Emacs's core, and Emacs itself has been extended with so many incredibly powerful features over the forty years of its evolution, and yet so many of them are poorly documented or marketed, off by default, or badly configured out of the box, that oftentimes people prefer to use huge ... -
Org is a general-purpose information management hypertext system for Emacs
One of the most common philosophical misunderstandings that I see people have about org-mode is that they assume that it must have a particular intended workflow, like any other literate programming, personal information management, project planning, note-taking, or other similar such system. This makes sense, since org-mode does represent a cohesive thing, the closest analogue of which, for most people, is some kind of application: after all, it's not just a notation, but a set of interfaces, f... -
Some capabilities of org-mode
I'm never going to be able to describe to you what actually using org-mode is like, because it's one of those situations where there is an extremely, mind-bogglingly powerful tool for enthusiasts and professionals, and a cheap toy imitation that most casual people will end up using that imitates the most superficial aspects of the real thing, but because they don't have enough experience to know any different, the casual users won't be able to understand what the difference between the cheap toy... -
SVG Interfaces in Emacs?
One of the really interesting little things that I've seen on the margins of the Emacs world is people making use of the fact that SVGs are a really good medium for drawing arbitrary graphical user interfaces, since they allow drawing arbitrary shapes, colors, gradients, and text, in a way where it is clearly structured and you can assign relative constraints and sizes, and where that structure is coherently maintained instead of being lost when drawn to a pixel image or something, and the fact ... -
The Dao of Emacs, and my mixed feelings on Doom Emacs
One of the most powerful aspects of Emacs is that it can truly become anything you want it to be. This is definitely a good thing, as I've spent a lot of time explaining above: malleable tools give you freedom, autonomy, control over your own computing life. You can shape them to best help your workflow, your thought process, your preferences, your needs (even physical ones). They grow with you, around you, rewarding you for the time you spend with them. They have better longevity, because they ... -
Why not to use Emacs
I've talked at extreme length on this page about the reasons why I like GNU Emacs, even to the point of defending certain aspects of it that are usually treated as sub optimal even by extremely dedicated users and maintainers of the software. However, I am no fanatic. Emacs has flaws, some of which I think can be overcome, and some of which I think are the inherent consequence of the tradeoffs it needs to make to be the unique thing that it is. In fact, there's a reason I phrased the first secti... -
Unique aspects of GNU Emacs
To understand what Emacs is, you can look at it in two ways:Neither of these things is actually the case, however. If you look the C core and fundamental tool set provided to package authors and users by Emacs, what you see is:The rest is all purely in Emacs Lisp -- open to be changed, adapted, modified, or overridden completely. This doesn't look like the core of something that is essentially a text editor. It provides way too much:This deep integration into a coherent computing environment all... -
UNIX, Lisp Machines, Emacs, and the Four User Freedoms
Any true hacker knows these principles by heart. Even though I hold many disagreements with Stallman and the FSF-hardliners — for instance, I see free vs proprietary software, and the software freedoms, as a matter of structural critique and industry ethics, not personal purity; proprietary software is being unethical against me for the way it treats me, I am not unethical for using it, because I am the one on whose side the rights lie — I agree with them, fundamentally, on so many more issu... -
Imbuing text with meaning
Some of the most important meanings that you can imbue into text, in my opinion, are:For a concrete example of the first, the package Marginalia looks for any lines annotated with the file symbol in the minibuffer, and uses those lines as paths to look up file information, which it then adds as further metadata to those lines. This means that anything that provides completions in the minibuffer, independent of Marginalia knowing about the specifics of that code, or that code even needing to know... -
Imbuing text with meaning
Some of the most important meanings that you can imbue into text, in my opinion, are:For a concrete example of the first, the package Marginalia looks for any lines annotated with the file symbol in the minibuffer, and uses those lines as paths to look up file information, which it then adds as further metadata to those lines. This means that anything that provides completions in the minibuffer, independent of Marginalia knowing about the specifics of that code, or that code even needing to know...
Tag: emacs
20 files