41554 blogs · [ { "id": "01a08766-3848-738d-a14f-27168835d834", "title": "Vulpea: sync that is finally, actually async", "url": "https://www.d12frosted.io/posts/2026-07-06-vulpea-async-sync", "published_at": "2026-07-06T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-2716888885c8", "title": "Vulpea schemas: structure you can see and fix", "url": "https://www.d12frosted.io/posts/2026-06-30-vulpea-schemas", "published_at": "2026-06-30T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168930fb8c", "title": "Chasing a GitHub 429 across my Emacs CI", "url": "https://www.d12frosted.io/posts/2026-06-29-chasing-a-github-429", "published_at": "2026-06-29T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271689a54fa5", "title": "Vulpea v2.4: unlinked mentions, schemas, and renaming", "url": "https://www.d12frosted.io/posts/2026-06-19-vulpea-v2-4", "published_at": "2026-06-19T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168a56d870", "title": "PARA, not GTD: organizing notes by what they are, not where they live", "url": "https://www.d12frosted.io/posts/2026-06-18-para-not-gtd", "published_at": "2026-06-18T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168b43d61a", "title": "vui.el: Building a Pomodoro Timer", "url": "https://www.d12frosted.io/posts/2026-06-14-vui-pomodoro", "published_at": "2026-06-14T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168bc0bf8b", "title": "Pace-Aware Rate Limits in the Claude Code Statusline", "url": "https://www.d12frosted.io/posts/2026-05-06-pace-aware-rate-limits", "published_at": "2026-05-06T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168c508106", "title": "Steady Hands", "url": "https://www.d12frosted.io/posts/2026-03-16-steady-hands", "published_at": "2026-03-16T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168ccbf885", "title": "The Struggle You Choose", "url": "https://www.d12frosted.io/posts/2026-02-02-the-struggle-you-choose", "published_at": "2026-02-02T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168cd6346a", "title": "Vulpea v2.1: queries, fixes, and performance", "url": "https://www.d12frosted.io/posts/2026-02-01-vulpea-v2-1", "published_at": "2026-02-01T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168d5ac7d5", "title": "Vulpea: 171x faster autosync startup", "url": "https://www.d12frosted.io/posts/2026-01-31-vulpea-171x-faster-startup", "published_at": "2026-01-31T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168d6e32d6", "title": "How We Evaluated AI Coding Tools at Scale", "url": "https://www.d12frosted.io/posts/2026-01-29-ai-evaluation-experiment", "published_at": "2026-01-29T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168dbcf1bc", "title": "emacs-plus: Liquid Glass Icons for macOS Tahoe", "url": "https://www.d12frosted.io/posts/2026-01-08-emacs-plus-liquid-glass-icons", "published_at": "2026-01-08T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168dd74a09", "title": "emacs-plus: Community Patches and Icons", "url": "https://www.d12frosted.io/posts/2026-01-07-emacs-plus-community-system", "published_at": "2026-01-07T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168ea3bcfa", "title": "emacs-plus: Pre-built Binaries via Cask", "url": "https://www.d12frosted.io/posts/2026-01-06-emacs-plus-cask", "published_at": "2026-01-06T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27168f6fd8ec", "title": "Claude Code Notifications That Don't Suck", "url": "https://www.d12frosted.io/posts/2026-01-05-claude-code-notifications", "published_at": "2026-01-05T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169017c9ac", "title": "The Depth Counter Pattern: Nestable Batch Operations", "url": "https://www.d12frosted.io/posts/2025-12-23-nested-batching-depth-counters", "published_at": "2025-12-23T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271690b14448", "title": "Cursor Preservation Across Buffer Rewrites", "url": "https://www.d12frosted.io/posts/2025-12-16-cursor-preservation-buffer-rewrite", "published_at": "2025-12-16T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-2716915746a8", "title": "Implicit Identity Through Call Order", "url": "https://www.d12frosted.io/posts/2025-12-14-implicit-identity-call-order", "published_at": "2025-12-14T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271692108cf2", "title": "Knowing Less, Producing More", "url": "https://www.d12frosted.io/posts/2025-12-08-knowing-less-producing-more", "published_at": "2025-12-08T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271692c6963c", "title": "vui.el: Patterns and Pitfalls", "url": "https://www.d12frosted.io/posts/2025-12-07-vui-patterns-and-pitfalls", "published_at": "2025-12-07T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271693419ed4", "title": "vui.el: Under the Hood", "url": "https://www.d12frosted.io/posts/2025-12-06-vui-under-the-hood", "published_at": "2025-12-06T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271694032fc4", "title": "vui.el: Optimisation Hooks", "url": "https://www.d12frosted.io/posts/2025-12-05-vui-optimisation-hooks", "published_at": "2025-12-05T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271694272d03", "title": "vui.el: Lifecycle Hooks", "url": "https://www.d12frosted.io/posts/2025-12-04-vui-hooks-deep-dive", "published_at": "2025-12-04T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271694eb7b5e", "title": "vui.el: Context and Composition", "url": "https://www.d12frosted.io/posts/2025-12-03-vui-context-and-composition", "published_at": "2025-12-03T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271695629ba8", "title": "vui.el: Building a File Browser", "url": "https://www.d12frosted.io/posts/2025-12-02-vui-real-ui", "published_at": "2025-12-02T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271695f88421", "title": "vui.el Quickstart", "url": "https://www.d12frosted.io/posts/2025-12-01-vui-quickstart", "published_at": "2025-12-01T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271696bad2c6", "title": "Building Complex UIs in Emacs: Lessons from Three Approaches", "url": "https://www.d12frosted.io/posts/2025-11-30-building-complex-uis-in-emacs", "published_at": "2025-11-30T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271697842e80", "title": "Vulpea v2: a story of breaking up with org-roam", "url": "https://www.d12frosted.io/posts/2025-11-28-vulpea-v2-breaking-up-with-org-roam", "published_at": "2025-11-28T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271697c64a3a", "title": "Quantifying the Descent: A Script for GitHub Contributions", "url": "https://www.d12frosted.io/posts/2025-11-27-gh-contributions", "published_at": "2025-11-27T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169829d74a", "title": "The Emacs Widget Library: A Critique and Case Study", "url": "https://www.d12frosted.io/posts/2025-11-26-emacs-widget-library", "published_at": "2025-11-26T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271699192040", "title": "Why I ditched Nix after ~4 years", "url": "https://www.d12frosted.io/posts/2025-11-25-nix", "published_at": "2025-11-25T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-2716995852cf", "title": "emacs-plus: Emacs Client.app", "url": "https://www.d12frosted.io/posts/2025-11-24-emacs-plus-client-app", "published_at": "2025-11-24T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-271699d038f1", "title": "Fresh Coat of Paint: Redesigning d12frosted.io", "url": "https://www.d12frosted.io/posts/2025-11-22-site-update", "published_at": "2025-11-22T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169a7c95e5", "title": "Vulpea v0.3", "url": "https://www.d12frosted.io/posts/2022-07-14-vulpea-0.3", "published_at": "2022-07-14T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169b5fc856", "title": "emacs-plus: PATH injection", "url": "https://www.d12frosted.io/posts/2022-05-12-emacs-plus-path-injection", "published_at": "2022-05-12T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169b9b44f5", "title": "emacs-plus: stats", "url": "https://www.d12frosted.io/posts/2022-04-24-emacs-plus-stats", "published_at": "2022-04-24T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169bc7e7e9", "title": "Automatic setup of spaces with yabai", "url": "https://www.d12frosted.io/posts/2022-04-23-yabai-spaces", "published_at": "2022-04-23T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169c7056da", "title": "War and World", "url": "https://www.d12frosted.io/posts/2022-03-03-war", "published_at": "2022-03-03T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169d605fd3", "title": "Path to org-roam v2", "url": "https://www.d12frosted.io/posts/2021-06-11-path-to-org-roam-v2", "published_at": "2021-06-11T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169e07ced6", "title": "Fixing PATH in fish with nix-darwin", "url": "https://www.d12frosted.io/posts/2021-05-21-path-in-fish-with-nix-darwin", "published_at": "2021-05-21T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169e344e73", "title": "Task management with org-roam Vol. 7: Capture", "url": "https://www.d12frosted.io/posts/2021-05-21-task-management-with-roam-vol7", "published_at": "2021-05-21T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169e6f1bca", "title": "Project management tool for Emacs packages", "url": "https://www.d12frosted.io/posts/2021-04-26-emacs-project-management", "published_at": "2021-04-26T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169e7ad0e8", "title": "Towards future-safe emacs.d", "url": "https://www.d12frosted.io/posts/2021-04-09-emacs-d", "published_at": "2021-04-09T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169ebb09b8", "title": "Retries with straight.el", "url": "https://www.d12frosted.io/posts/2021-04-08-straight-el-retries", "published_at": "2021-04-08T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169efcf8fc", "title": "Task management with org-roam Vol. 6: Select a person and view related tasks", "url": "https://www.d12frosted.io/posts/2021-01-24-task-management-with-roam-vol6", "published_at": "2021-01-24T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169f543e68", "title": "Task management with org-roam Vol. 5: Dynamic and fast agenda", "url": "https://www.d12frosted.io/posts/2021-01-16-task-management-with-roam-vol5", "published_at": "2021-01-16T00:00:00+00:00" }, { "id": "01a08766-3848-738d-a14f-27169f921636", "title": "Task management with org-roam Vol. 4: Automatic tagging", "url": "https://www.d12frosted.io/posts/2020-07-07-task-management-with-roam-vol4", "published_at": "2020-07-07T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8ca93f9e4e", "title": "Task management with org-roam Vol. 3: FILETAGS", "url": "https://www.d12frosted.io/posts/2020-06-25-task-management-with-roam-vol3", "published_at": "2020-06-25T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caa328f7f", "title": "Task management with org-roam Vol. 2: Categories", "url": "https://www.d12frosted.io/posts/2020-06-24-task-management-with-roam-vol2", "published_at": "2020-06-24T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caa47ba23", "title": "Task management with org-roam Vol. 1: Path to Roam", "url": "https://www.d12frosted.io/posts/2020-06-23-task-management-with-roam-vol1", "published_at": "2020-06-23T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caaded8d0", "title": "Org-roam tags", "url": "https://www.d12frosted.io/posts/2020-06-10-org-roam-tags", "published_at": "2020-06-10T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cab32c577", "title": "Emacs: moving to beginning of line", "url": "https://www.d12frosted.io/posts/2020-06-04-beginning-of-line", "published_at": "2020-06-04T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cac31a609", "title": "Readings Vol. I: precondition encoding", "url": "https://www.d12frosted.io/posts/2020-02-01-readings-vol-1", "published_at": "2020-02-01T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cace1a5e8", "title": "Predicate composition", "url": "https://www.d12frosted.io/posts/2020-01-20-predicate-composition", "published_at": "2020-01-20T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cad2c3182", "title": "emacs-plus: current state", "url": "https://www.d12frosted.io/posts/2020-01-08-emacs-plus-current-state", "published_at": "2020-01-08T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caddfa5e2", "title": "env-extra v1.0.0.0", "url": "https://www.d12frosted.io/posts/2020-01-06-env-extra-v1.0.0.0", "published_at": "2020-01-06T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caea1fb60", "title": "flyspell-correct v0.6", "url": "https://www.d12frosted.io/posts/2019-12-29-flyspell-correct-v0.6", "published_at": "2019-12-29T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caecb95bc", "title": "Emacs: reusing window for helpful buffers", "url": "https://www.d12frosted.io/posts/2019-06-26-emacs-helpful", "published_at": "2019-06-26T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caef9b697", "title": "Asking for input in Bash", "url": "https://www.d12frosted.io/posts/2019-04-12-asking-for-input-in-bash", "published_at": "2019-04-12T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caf4ba613", "title": "Revisiting Eru", "url": "https://www.d12frosted.io/posts/2018-11-04-revisiting-eru", "published_at": "2018-11-04T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8caff42ea9", "title": "Equality of booleans in Emacs", "url": "https://www.d12frosted.io/posts/2018-10-14-equality-of-booleans-in-emacs", "published_at": "2018-10-14T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb080a0c8", "title": "High quality GIF from video", "url": "https://www.d12frosted.io/posts/2018-10-13-gifify", "published_at": "2018-10-13T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb16ccb5f", "title": "flyspell-correct v0.5", "url": "https://www.d12frosted.io/posts/2018-10-07-flyspell-correct-v0.5", "published_at": "2018-10-07T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb1e65901", "title": "Random bytes generation with OpenSSL", "url": "https://www.d12frosted.io/posts/2018-01-31-random-bytes-generation-with-openssl", "published_at": "2018-01-31T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb200b73c", "title": "Structure templates in Org mode", "url": "https://www.d12frosted.io/posts/2017-07-30-block-templates-in-org-mode", "published_at": "2017-07-30T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb225c933", "title": "AppleScript and the GitHub API", "url": "https://www.d12frosted.io/posts/2017-06-15-AppleScript-and-GitHub-API", "published_at": "2017-06-15T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb2e884f4", "title": "Fish: notify me when you finish", "url": "https://www.d12frosted.io/posts/2017-06-13-Fish-notify-me-when-you-finish", "published_at": "2017-06-13T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb37bdc47", "title": "Git: conditional configurations", "url": "https://www.d12frosted.io/posts/2017-06-11-Git-conditional-configurations", "published_at": "2017-06-11T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb3f8ebe5", "title": "Deep in the black bashic", "url": "https://www.d12frosted.io/posts/2017-06-09-deep-in-black-bashic", "published_at": "2017-06-09T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb439715f", "title": "Being an org-mode addict", "url": "https://www.d12frosted.io/posts/2016-12-20-Being-an-org-mode-addict", "published_at": "2016-12-20T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb52cf6ba", "title": "Errors in shell scripts", "url": "https://www.d12frosted.io/posts/2016-06-27-errors-in-shell-scripts", "published_at": "2016-06-27T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb54b9fbb", "title": "Using Spacemacs with several Emacs versions", "url": "https://www.d12frosted.io/posts/2016-06-24-Spacemacs-and-different-emacs-versions", "published_at": "2016-06-24T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb5d2a4f3", "title": "flyspell-correct v0.1", "url": "https://www.d12frosted.io/posts/2016-06-22-flyspell-correct-0.1", "published_at": "2016-06-22T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb60bfe2d", "title": "Emacs and Composability", "url": "https://www.d12frosted.io/posts/2016-05-10-emacs-and-composability", "published_at": "2016-05-10T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb60ce6c1", "title": "flyspell-correct", "url": "https://www.d12frosted.io/posts/2016-05-09-flyspell-correct-intro", "published_at": "2016-05-09T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb6e9ad42", "title": "Cabal and executables", "url": "https://www.d12frosted.io/posts/2015-04-05-cabal-and-executables", "published_at": "2015-04-05T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb76d95ba", "title": "Make the Fish fly", "url": "https://www.d12frosted.io/posts/2015-02-07-make-the-fish-fly", "published_at": "2015-02-07T00:00:00+00:00" }, { "id": "01a08766-3849-708a-9f34-af8cb7aec0bb", "title": "CanonicalPath v0.3.0.0", "url": "https://www.d12frosted.io/posts/2015-02-04-canonical-path-v0.3.0.0", "published_at": "2015-02-04T00:00:00+00:00" } ] posts Claim your blog
Back to d12frosted.io
Blog · corpus.blog/blogs/d12frosted.io/posts

d12frosted.io

d12frosted.io

2026

2025

2022

2021

2020

2019

2018

2017

2016

2015