Gödel, Escher, Elisp: The Beauty of Macros
If you are an Emacs user with a keen eye, you will have noticed that in Emacs Lisp, code is data. After all, 'Lisp' is shorthand for 'List Processing'. One of Elisp's most beautiful features is the fo...
A personal blog built with Emacs Org and SvelteKit
If you are an Emacs user with a keen eye, you will have noticed that in Emacs Lisp, code is data. After all, 'Lisp' is shorthand for 'List Processing'. One of Elisp's most beautiful features is the fo...
Your Emacs is full of markup-free hyperlinks embedded in your text, but you're missing a way to utilize them. Think about a file path in a README, a URL in an email, a commit 55a1f0 in a git log, or a...
This month I'd like to host the Emacs Carnival! I've been an enthusiastic participant for a while now. I wrote entries for May, June, and July (that last one hosted by Andy over at Plain DrOps). Now i...
Two technologies have endowed every editor with IDE superpowers this past decade: tree-sitter, a generic incremental parser that gives your editor a live syntax tree of your code, and the Language Ser...
A key feature is missing from most Personal Knowledge Management Systems (PKMSs): define a concept by pressing a keybinding on a word, and from then on all occurrences of that word become live, action...
Emacs can draw line-level indicators in the built-in fringe and margin, the thin gutters beside the buffer text. The fringe gives you a single monochrome mark per side, and the margin can technically ...
Learning Emacs is not about scouring through documents and memorizing facts.
The folks who 'grok' Emacs aren't wizards. They don't learn Emacs, per se, but instead they learn the handful of built-in commands for asking Emacs about Emacs. Those same commands work on themselves,...
Rendering an Emacs status bar as an SVG image, like with my svg-line package (demo), really is several times heavier than the native text engine. The skeptics were right. But it doesn't matter in prac...
Emacs provides four useful status bars (mode-line, header-line, tab-bar, and tab-line), but each imposes different, inconsistent limits on multi-line layout, alignment, icons, and interactivity. svg-l...
This is the sixth post in my series on Emacs completion. The first argued that Incremental Completing Read (ICR) is a structural property of an interface, not an interface itself; the next four made i...
In a 1996 Bookworm interview with Michael Silverblatt, David Foster Wallace confirmed something Silverblatt had spotted about Infinite Jest.
space-tree (see code on GitHub) is a tree-based workspace manager for Emacs. Workspaces are a battle-tested UX concept across operating systems, but in Emacs and most OSes alike, they're flat: you get...
I'm like most people when it comes to reading and note-taking.
The above, unless I've completely forgotten my Shakespeare, was a soliloquy from Juliet Consulet regarding Romeo Montagnu
My dotfiles for my MacOS rice and Emacs configuration live in two public repositories. Both repos are shared as a reference; clone, fork, or just lift the bits that look useful to you!
This is the fifth post in my series on Emacs completion. The first, Incremental Completing Read (ICR), explains what modern completion actually is, and how Emacs exposes it as a programmable substrate...
DFW famously embedded wordplay in his character names. The surname Pemulis is an anagram of impulse. Otis P. Lord rearranges to Sport Idol, the absurd authority figure of the Eschaton game he runs. Th...
This is the fourth post in a series on Emacs completion. The first argued that Incremental Completing Read (ICR) is a structural property of an interface rather than a convenience feature. The second ...
Content note: This essay necessarily discusses child sexual abuse and incest as implicit elements of Infinite Jest, and includes excerpts from the novel containing explicit language. The argument is s...
This is the third post in a series on Emacs completion. The first post argued that Incremental Completing Read (ICR) is not merely a UI convenience but a structural property of an interface, and that ...
ICR is not a convenience feature. It is a structural change in how the cost of an interaction scales with the size of the underlying data.
Emacs theming has a dirty secret: most face customizations are written against one theme and silently break against every other. You pick colors that look right in your dark theme, switch to something...
Window management in Emacs is either too simple or too opinionated. split-window-right and split-window-below are basic primitives that require manual sequencing. purpose and shackle give you declarat...
Your payments team patches a JWT library CVE on Thursday. Your inventory team patches the same CVE on Monday. Your notifications team hasn't noticed yet. All three services started life as a git clone...
Emacs loves prefix keys. C-x, C-c, C-c w, C-c p … the deeper your configuration goes, the longer your prefixes get. The problem is that many commands you'd want to call repeatedly sit behind th...
Modern UIs are over-engineered and excessive. This is easy to say in an age where people walk around with computers attached to their faces, only to get… a subpar user experience. It's also eas...
There are a few Spotify clients for Emacs. Most of them predate the modern completion ecosystem, so they build their own UI from scratch: custom buffers, custom keymaps, custom rendering. spot takes a...
There are plenty of typing tutors on the web. keybr.com is one of the best, a progressive trainer that unlocks keys one at a time as your speed and accuracy improve. But it runs in a browser, and if y...
Completion is not a feature or UI, but instead it is a system composed of at least half a dozen orthogonal concerns that most users never think about separately. The previous post in this series argue...
Few events in modern history have generated as much real-time public data as COVID-19. This post draws on four federal datasets – variant proportions, hospital admissions, vaccination progress,...
Medicare Part D spending on GLP-1 drugs grew from $2.3 billion in 2019 to roughly $27 billion by 2024. This post traces that explosion through CMS spending data, beneficiary counts, state-level adopti...
Every year, about 1 in 31 hospitalized patients acquires an infection they didn't have when they were admitted. This post visualizes CMS hospital-acquired infection data across ~4,789 US hospitals, ex...
Mental health is the defining public health story of the 2020s. This post maps both sides of the equation – need and supply – using CDC PLACES ZIP code-level prevalence data and HRSA men...
Americans pay more for prescription drugs than any other country. This post uses CMS Medicare Part D spending data – covering ~3,600 drugs from 2019 to 2023 – to visualize where $276 bil...
Medicare is a single national program with a single set of rules, yet what it spends per beneficiary varies dramatically by geography. This post uses CMS standardized spending data to explore why high...
Public health statistics are usually reported at the national or state level, but they obscure enormous local variation. This post uses the CDC's PLACES program – 40+ health measures at ZIP cod...
Before March 2020, telehealth was a niche feature of the US healthcare system. Then the pandemic hit, and CMS suspended virtually every telehealth restriction overnight. This post tracks the largest n...
The federal government rates every US hospital on a 1-5 star scale across five quality domains. This post visualizes the full landscape of 5,400+ hospitals – where they cluster, how ownership t...
When you check into a hospital for a hip replacement, the hospital generates a bill for $85,000 – and Medicare pays $12,000. This post uses FY2023 CMS data on 146,000 hospital-DRG combinations ...
If you get sick in Boston, you have a choice of specialists within walking distance. If you get sick in rural Mississippi, you might drive two hours to see a primary care doctor. This post visualizes ...
In 1999, roughly 8,000 Americans died from opioid overdoses. By 2023, that figure was approaching 80,000 – a tenfold increase in a single generation. This post uses CDC Vital Statistics data to...
If you've ever worked with a relational database, you've almost certainly seen an entity-relationship diagram (ERD). Maybe it was generated by DataGrip or pgAdmin, or maybe someone drew it in Lucidcha...
Every engineer I've worked with has used the phrase "technical debt", but everyone seems to have a different notion of what this phrase actually means. I've also found the phrase to be quite controver...
Keep Dijkstra's words in mind as you read. This entire post – every schema language comparison, every trade-off analysis, every design decision – is really about one question: do we trus...
Every software organization eventually confronts the same uncomfortable question: where is the architecture diagram?
Data models live everywhere in a modern system: function signatures, bounded-context boundaries, database schemas, event payloads on the wire, etc…. And for good reason – the model isn't...
Literate programming, a concept introduced by Donald Knuth in 1984, inverts the traditional relationship between code and documentation. Rather than writing code with occasional comments, we write a d...
Building a personal blog might seem like a solved problem in 2026, but I wanted something different. Not just another static site generator output, but an interactive reading experience that reflects ...
This page demonstrates the custom blogging framework used to build my technical diary: chiply.dev. This diary delivers a highly contextualized reading experience, with side-line components that enhanc...