Mindstream is a new Emacs extension for any kind of writing, including programming. It removes the barriers to starting, provides […]| countvajhula.com
Mindstream is a new Emacs extension for any kind of writing, including programming. It removes the barriers to starting, provides moment-to-moment versioning recording every change you make, and usefully organizes your work for you to consult or resume later.| Terminally Undead
This post was written for Day 8 of the Racket Advent Calendar. “#lang” is a Racket term referring to declaring the programming language in use, and this post uses Racket as a platform to discuss one approach to writing good programming languages. I’ve made an effort to explain the Racket-specific ideas as they are introduced, so if you are interested in language design but aren’t a Racketeer, I hope you’ll still read it and that you’ll find it interesting.| Terminally Undead
A number of years ago, at my first job out of college, I was working for a company that found itself in the swell of the then-nascent cloud computing wave. The work that my team did was mainly write proofs-of-concept for new products that would then be scaled in collaboration with a broader, global engineering team. There was one “concept” that I had in mind, though, that, due to various competing team priorities, I never got to work on and “prove.” It was in relation to applying Reed...| Terminally Undead
[In tribute to Bram Moolenaar, 1961 – 3 August 2023, creator of Vim. The undo tree was one of the major “improvements” that Bram made over Vim’s predecessor, Vi. This was also the one big topic missing from this series, and I felt that now was the right time to add it.]| Terminally Undead
So, you’ve written a Racket library and now you’d like to make it widely available. How to go about it? This post documents a widely used (yet apparently undocumented) best practice.| Terminally Undead
Note: I originally developed this as a programming exercise as part of a tutorial for the Qi programming language in the Racket language ecosystem. But as it is equal parts programming exercise and short story, I thought I’d post it here as well. You can read this post in one of two ways, either (A) as an “Advent of Code” style programming exercise that you can do in your favorite language, or (B) as a short story — just read and look at the pretty pictures. If you’re doing (A), I...| Terminally Undead
[This is about Symex.el, the Emacs extension for structural editing with Lisp. If you are unfamiliar with Symex, you could read the post introducing it, or TL;DR: just know that “symex” is short for Lisp symbolic expression / S-expression, and this extension provides a full-featured modal interface / Evil state for editing Lisp code.]| Terminally Undead
A quick movement out of the corner of your eye, but it’s gone as you turn to look. A rustle in the trees, or did you imagine it? A shadow passing overhead, and a blinding flash as you look up. Was that the Sun, or the gleam in the eye of Symex the Squirrel, as it soared above the treetops?| Terminally Undead
When we say something like 5 + 3, we aren’t usually surprised to learn that we are speaking of 8. And when we write this as a program for a machine to execute, we expect it to evaluate this expression to 8 as well. Everyone is familiar with the sign + since we all learned it in elementary school, and we know what happens when we add two numbers together.| Terminally Undead
As a Racket developer, if you’ve been running tests and code coverage on your GitHub repos using Travis (for instance, via Greg Hendershott’s travis-racket), you will eventually discover (as I did a few days ago) that Travis is no longer free for open source projects, as it once was. An unfortunate turn of events. In response, the trend among open source developers seems to be to migrate to Github Actions, a free, disturbingly convenient, and admittedly good option, from what I can tell.| Terminally Undead