A vision of a multi-threaded Emacs
May 19, 2022
The Threading library Starting in Emacs 26 some very ambitious changes were added. Basic thread support was enabled, laying the groundwork for a future concurrent emacs. The docs layout this possibility:
Emacs Lisp provides a limited form of concurrency, called threads. All the threads in a given instance of Emacs share the same memory. Concurrency in Emacs Lisp is “mostly cooperative”, meaning that Emacs will only switch execution between threads at well-defined times.
Implementing a safe garbage collector in Rust
Apr 11, 2022
In my last post I introduced an Emacs Lisp VM I was writing in Rust. My stated goal at the time was to complete a garbage collector. I think Rust has some really interesting properties that will make building garbage collectors easier and safer. Many of the techniques used in my GC are not original and have been developed by other Rustaceans in previous projects.
Why use garbage collection? virtually all non-trivial programs need some way to reuse memory.
Building an Emacs lisp VM in Rust
Oct 21, 2021
About a year ago I was bitten by the PL bug. It started with reading Crafting Interpreters and discovering the wonders hidden under the hood of a compiler. I am also been a big fan of Emacs, and this started to get me interested in how it’s interpreter works. At the same time, I was reading the Rust book and trying to understand the concepts there. This all came to a head, and I decided to write an Emacs Lisp interpreter called rune in Rust.
Taking org-roam everywhere with logseq
May 26, 2021
I love org-roam. It lets me take notes in a way that matches how I think. It makes it easy to recall what I have learned and find connections between ideas. But there has always been one big problem with org-roam: it ties me to the desktop. When I am on the go and all I have is my phone, I don’t have access to my notes.
There are some stop gap solutions to try and fix this.
When pure function lie
Apr 07, 2021
Here is a simple question. Given the lisp function below (and that the function is not advised) what will the output be of (foo)?
(defun foo () "foo") Seems pretty simple right? How could the answer be anything other then "foo"? It is just returning a constant string. Or is it? The real answer to this question is…
We have no idea. It can could be any string of length 3.
Native shell completion in Emacs
Jan 04, 2020
I am obsessed with autocompletion in shell mode. Running a shell in shell-mode instead of a terminal emulator has so many advantages. You can treat the whole buffer just like a normal Emacs buffer. You can copy and paste and edit the line normally. You can hook it into native Emacs functionality. You can even display images!
However there is one big disadvantage. You loose access to the state the shell.
Using org mode to write email for outlook
Feb 08, 2019
I see many threads on Reddit and blog posts about using email inside Emacs. I mean, I already have org-mode which organizing my whole digital life. But then all my work email is provided through outlook, which does not allow me to fetch email with anything other then their proprietary software.
Microsoft outlooked was designed to be used by people writing marketing emails, not people talking about code. There is no way to distinguish what is code from what is text, or call our programming symbols from the rest of the prose.