Using Git Worktrees for Parallel Branch Development
Learn how Git worktrees let you work on multiple branches from one repository, speed up context switching, and simplify parallel development workflows.
State of Radicle CI and where it's going: March 2026
This month in Radicle CI, March 2026 This is a monthly newsletter about the current state of Radicle CI, what has happened recently, and near future plans. Current status Radicle CI is in production…
Using Safari Web Inspector with web views in iOS apps.
If you have web views in your iOS app, you can use Safari to debug them.
DataSF and scraping planning applications for my inner YIMBY
I am doing a series of blog posts diving into 400 Divisadero Street, a defunct car wash and gas station in San Francisco that they're trying to turn into apartments — and have been for over a decade…
vu_common: Move iovec management into vu_collect()
Previously, callers had to pre-initialize virtqueue elements with iovec entries using vu_set_element() or vu_init_elem() before calling vu_collect(). This meant each element owned a fixed,…
Introducing CalAction Beta
Some time ago my wife came to me with a problem: she wanted to import a calendar file from the Gmail app into our shared iCloud calendar. The process however was not straightforward and involved a…
super-save 0.5: Modernized and Better Than Ever
It’s been a while since the last super-save release. The last time I wrote about it was back in 2018, when I boldly proclaimed: It seems that now super-save is beyond perfect, so don’t expect the…
Some Git Stash Commands I Find Useful
I'm trying to use the git Command Line Interface more. These are some stash commands that replicate how I've used stashes in GUI tools.
Wrapping my head around Tail Recursion and TCO
I’ve recently been going down the functional programming rabbit hole. One FP concept which has been pretty fascinating to learn about is tail recursion, along with the optimisations it can provide…
embedrock : OpenAI-compatible Bedrock embedding proxy for OpenClaw and Friends
embedrock is a tiny Go proxy I created (ok, my agent did) that translates OpenAI's /v1/embeddings API to Amazon Bedrock, so your existing AI tools work with Titan and Cohere models on…
Git: ignoring temporary changes
How to tell git that a change SHOULD NOT be considered? tl;dr: git update-index --assume-unchanged Continue reading → The post Git: ignoring temporary changes first appeared on Narf.
NOTES // Vim
I’ve been using vim for more than 10 years. Here are a list of things I usually forget from time to time that are extremely useful. You can use gi in normal mode to start inserting in the last…
Agentic Code Review: Pattern Matching for AI
How to document project patterns and anti-patterns so AI agents can review code against your team's conventions automatically ...
Building a Personal Mnemonics Bot
Every now and then I encounter a new word that I’ve never heard before. Or need to memorize the shopping list, a phone number, a date, or a fact. In school I didn’t have any system to do…
Understanding Session in Claude Code
A "session" in Claude Code: Starts with `claude` command that you run in the bash terminal to start Claude Code Multiple back-and-forth exchanges with the LLM End with ` /exit ` command or by…
Writing gloriously long sentences in Emacs with line highlighting
Everyone knows I love finding whatever Emacs tricks and dodges I can to help writers. I wrote an article a while back about the benefits [...] The post Writing gloriously long sentences in Emacs with…
How I Automated my Network with Ansible
Today, in the next eposide on my Personal AS series, I have added a third POP / fourth router, and that means I need to configure the POP all over again. That’s a lot of work, so I automated it…
[journal] Noticing, and Solving, Technical Problems in a Codebase
And a requisite aside about large language models.
Building a static site
Static sites are a great part of the small web. They are easy to configure, deploy, and maintain. You can use a static site generator or write the HTML yourself. Static Site Generators # To help some…
Claude Code's poor time awareness
From some of my interactions with Claude Code1 so far I’ve noticed that it seems to have a pretty glaring issue: it doesn’t really have a good sense of time-tracking built into it.…
Here to fix what I break: Fixing a 2-year-old bug in the Linux kernel
While reviewing one of the patches sent to the linux-hardening list this afternoon, I spotted a bug I introduced in the same code two years ago (on March 5 2024, to be precise). Over nearly a decade…
Youtube-Dl Broke/Fixing
'Some folks' use youtube-dl on a regular basis, to pull raw video and create new content. Early in 2023 it appeared to stop working. $ youtube-dl https://www.youtube.com/watch?v=8QWjCzULyNA [youtube]…
What is GraphQL?
GraphQL is a query language for APIs and a runtime environment for those queries, created by Facebook (Meta) in 2012 and released as open source in 2015.
Glimmer DSL for Web 0.8.3 Preventing Components from Shadowing HTML Elements
Glimmer DSL for Web (Fukuoka Award Winning Ruby-in-the-Browser Frontend Framework for Rails) had a new release in version 0.8.3 , which now raises an exception plus a correction hint if the user…
GNU Linux Debian 13 (vm) how to install airllm, openclaw.ai what is picoclaw.io ? the cyber security implications of AI (AI and the privacy problem: 1984 calling?)
WARNING! ALL THIS AI EXPERIMENTATION CAN MESS UP A SYSTEM AND SHOULD ONLY BE DONE IN A VM SANDBOX! the cyber security implications of AI https://www.instagram.com/p/DVo-fbnCR6I/ AI privacy and…
Bugs Cost the Business
This open letter originally appeared as a post on LinkedIn. Dear QBD Books… Good software design matters. Without good software design for your Web site, users may have trouble, and that trouble can…
Obsidian & Claude: a match made in heaven
Before I get into this: there are probably a hundred ways to achieve what I’m about to describe, and most of them are equally valid. My setup didn’t arrive fully formed. It evolved over…
The Bottleneck Moved. The Work Did Not.
A Question I Keep Getting I receive some version of this message a few times a month: “Given where technology/AI is today, what does a Junior Software Engineer actually need to bring to the table to…
I Turned 16 Months of Google Search Console Data Into a Vector Database. Here's What I Learned.
I had a simple question: what if I could talk to my search performance data instead of staring at charts in Google Search Console?
Effect notes: PRs, progress, and joys
It's been three months since the last Effect devlog and I'm still incrementally adopting Effect in Val Town . Things are going well but not spectacularly. My approval rating is a solid 'B' right now.…
Connecting the Dots in a JFR Recording
One Recording, Many Silos The Hard Way decorateBy A Recording to Play With Five Queries 1. Where does the CPU actually go? 2. Which endpoint is driving GC? 3. Wall-clock profile by trace operation 4.…
Tools I Love: Plannotator
Make working with your clanker feel more like collaborating in Google Docs.
Just In Time Software and Flow State Building
Flow State BuildingOver the past 6 months, I’ve noticed an interesting shift in my work behavior: There is no longer any distinction between when I am building with AI and when I am not.When, even…
Episode 33: From List Calculus to Array Calculi (Bird’s Laws, AoP, MoA & SaC) 🟦
In this episode, the “From List Calculus to Array Calculi” (generated by GPT 5.4) is read by the Speechify text-to-speech app.
Build Your Own Workflow
Why your workflow should be personal, and why agents make that easy
Optimization lessons from a Minecraft structure locator
Minecraft generates a bedrock floor at the bottom of the world from a random noise. Since it’s random, it can contain naturally generated unescapable regions – prisons. While small prisons are…
Xerox Machines of Loving Grace
He did not want to compose another Quixote — which is easy — but the Quixote itself. Jorge Luis Borges, Pierre Menard, Author of the Quixote How well large language models fare with the unknown is…
可能是最后一次更换博客引擎
时间线还是值得记一下: - 2017 年,PHP - 2018 年,Jekyll - 2019 年,Hexo - 2024 年,Astro - 2026 年,Self-Built 这件事其实也不是突然发生的。最近几个月,如果你能看到这个博客仓库的提交记录,大概能看出来我一直在删东西:删不必要的样式,删不必要的依赖,删不必要的中间层,上周甚至连 Tailwind 也一起剔掉了(支持裁员 🤡)。…
Why your next mobile app is probably headless
For years, companies fought to get their icon on your phone. They wanted you inside their app: their layout, their offers, their brand. For years after that, product teams lived and died by UX:…
It has never been about the typing
My friend Stefan Reinalter is asking: I find this extremely worrying, with many of people I respect saying things like “I no longer write code” or “let LLMs do it”. Why did you start programming? Was…
The Cost of Any Change
I have seen a lot of buzz lately about defects introduced to working code by AI. Some benchmarks show AI creating 1.7x more issues than humans. This is the worst AI code generation, and I expect this…
A Copy-Paste Bug That Broke PSpice® AES-256 Encryption
PSpice is a SPICE circuit simulator from Cadence Design Systems that encrypts proprietary semiconductor model files to protect vendor IP and prevent reuse in third-party SPICE simulators. The…
Your AI Output Is Fine. That's the Problem.
The convergent/divergent framework from my AI pipeline project was a theory built on one domain. I tested it against Anthropic’s knowledge-work-plugins across six domains, then against a…
Just one more prompt
Agentic coding is addictive
From 68% Recall to 95%: Fixing a Job Classifier Without Increasing LLM Spend
A legacy LLM classifier was missing 32% of the jobs it was built to find. Here's how I replaced it with an ensemble of heuristics, ML, and a multi-step LLM chain — without increasing API costs.
Python library “Requests” needs you to test type hints
Requests is a popular HTTP client library available on the Python Package Index (PyPI). Sitting in the top 10 packages by downloads on PyPI, this library is used by many, many projects. This library…
Why Your OpenClaw's Browser Keeps Getting CAPTCHAs
I’ve been running OpenClaw as my daily AI agent, and I’ve made a lot of changes along the way. But the biggest improvement came from fixing the browser. For weeks, my OpenClaw kept giving…
Deploying Perl Apps using Podman, make and gitlab
An update on my previous "Deploying Perl Apps" talk, this time focusing on Podman, systemd, gitlab-ci and using Makefiles to make things easier to run. Slides Slides for German Perl Workshop 2026 ...
I built a visual tool for the Mikado Method
The Mikado Method helps you tackle big changes safely. But drawing graphs on paper doesn't scale. I couldn't find a satisfying tool… so I built one: Nikado.
Design Intelligence
A lot of my recent thoughts about coding with agents lately (like this, and this, and this) have been circling a specific topic… design. Coding agents are now good enough to replace all of my…