Current projects
Humbug is a project that explores building a secure and reliable operating system for human/AI collaboration.
Traditional operating systems are designed to securely use and share hardware resources. The best ones attempt to protect users from buggy and malicious software. The weakest link in this security chain is the human user, who can be tricked into running unsafe software or leaking access to sensitive data.
The introduction of AI suddenly makes this a lot more complicated. Our default model of the last few decades was an unpredictable human interacting with what should be a predictable system. With AI participant our unpredictable human is suddenly dealing with an equally unpredictable AI too.
We need to rethink our approach to security, privacy, and trust.
[find out more]
AIFPL is a pure functional, higher-order, programming language designed for use by AIs.
Inspired by Lisp, AIFPL is designed to offer LLMs a powerful programming model that can be safely used unsupervised.
[find out more]
Metaphor is an AI prompt creation language designed to help users generate high-quality prompts for a wide range of AI models.
It has a simple declarative syntax that allows users to define roles, context, and actions in a structured way. As with programming languages, Metaphor files can be included in other files, allowing for modular and reusable prompt definitions.
[find out more]
More projects
Find all my earlier projects in the projects section.
Latest blog posts
Published: 2026-01-06
I've been building Humbug for over a year, and it's one year this week since I released v0.1. For all that time I've been planning for a future v1.0 of Humbug, but no specific version felt like it warranted such a big bang change.
I started Humbug with a view that it could help engineers, product managers, security analysts, etc. all collaborate with AI in a new sort of tool.
That vision has worked out far better than I imagined. I now use it daily for building and testing software, for reviewing design ideas, editing and critiquing specifications, assessing third party code, and even maintaining my blog site. With lots of agentic features, and 100k net-new lines of code (with many hundreds of thousands more that came and went), the v0 prefix has been feeling increasingly stale.
The obvious thing would be to move to v1.0, but I've been starting to realize that aside from being rather arbitrary, I couldn't see an obvious way I'd ever move to a v2.0 in the future. Semantic versioning just doesn't feel right.
[read more]
Published: 2025-09-24
LLMs are famously bad at counting letters in text. They're not very good at complicated maths, either, but they are pretty good at writing programs that can do these things. If they have tools available, they sometimes resort to writing Python scripts to do this sort of work, but those risk the AI doing weird or potentially dangerous things. If we could give them a safe programming environment, however, that would be pretty awesome.
For a long time I've wanted to build a pure functional programming language because I could see a lot of uses for it. For LLMs, though, this would offer the safety I had in mind. The language can be very expressive but sandboxed. It doesn't need access to filesystems or networks, for example. Instead, it can rely on the LLM setting up any inputs and interpreting the outputs.
Previously, I've put off trying to build this because it would have taken months to get everything I wanted. Now, of course, I could use an LLM to help me build this (Claude Sonnet).
[read more]
Published: 2025-09-14
In the last year we've seen a few agentic development tools being released, but most of them have been proprietary so it hasn't been easy to work out what's going on inside them. I figured it would be interesting to build something open source and to help me understand them better.
A lot of software engineers love terminals and I'm no exception (I have 6 open as I'm writing this), so I thought an agentic terminal would be fun to explore!
I wanted to enable both an AI and a human user to be able to interact with a terminal, run commands, and check results. This would give the human user an assistant to help with tasks in the terminal, but would also allow the AI to come up with creative ways to help meet user requests where using shell commands would be a good way to help.
In this post, I'll walk you through how I went about building this, why I built it the way I did, and how I used AI to help do this more quickly.
[read more]
Published: 2025-08-11
I'm going to try to convince you we need to rethink some of our ideas about operating systems.
That's a pretty bold concept, given that all our major operating systems have been around for a very long time. They've been very effective, and have become progressively more capable as hardware has evolved. Importantly, as the base of our software stack, operating systems are the single most difficult thing to change because that entire software stack depends on their stability.
Even so, my argument is the AI era has already changed a few fundamental assumptions significantly enough that we need to reconsider some things we've not questioned in years!
[read more]
Published: 2025-08-09
A recurring problem throughout my career has been finding effective ways to keep track of all my research notes as I work on a new problem.
This week I'm going to try something new and add them to this site (davehudson.io). We'll have to see if this works or not!
[read more]
More blog posts
Find all my blog posts in the blog section.
Latest open source research notes
Published: 2026-01-17
After a couple of weeks of fairly significant development I figured it was time to release v38.
[read more]
Published: 2026-01-16
Last week I had Claude generate some huge speedups on the original AIFPL implementation. I figured I'd spend an hour or two and see what else can be done!
[read more]
Published: 2026-01-09
One of the more interesting design ideas for Humbug has been to make it easy for Humbug to build and run tools as it needs them. The original calculator tool was replaced by AIFPL, and in the last few months I've seen AIs use AIFPL quite extensively to help calculate things or perform repetitive data processing tasks.
My vision has always been that AIFPL will continue to expand in scope so the AIs can do even more work, safely and autonomously. As a consequence I'm going to add some new tool capabilities to let Humbug parse common file formats and present them to AIFPL scripts. This should be a pretty exciting innovation.
What I realized earlier is many of those file formats use dictionary-like data structures, but AIFPL wasn't particularly quick at processing them. An hour or so and 1000+ lines of code later, AIFPL now supports association lists (alists) as a native data type.
What was interesting was the conversation with Claude about this because native alists are not common in Lisp/Scheme implementations, but are incredibly useful. The AI strongly argued for the native type inclusion and the simplifications in syntax that a unique special form would provide. This feels like real innovation because this was definitely swimming against the tide.
[read more]
More open source research notes
Find all my open source research notes in the notes section.