Posts from people and blogs I'm interested in.
Sources: Armin Ronacher, Daniel Griesser, Mario Zechner, Simon Willison, Thorsten Ball, Maggie Appleton
simonw/browser-compat-db Inspired by Mozilla's new MDN MCP service - source code here - I decided to try converting their comprehensive mdn/browser-compat-data repository full of browser compatibility data into a SQLite database. This new G…
In the last few months, I've started to see [job applications] that were clearly cowritten by an LLM, link to an LLM-generated portfolio site, which then links to LLM-generated GitHub projects, with purely LLM-generated commit messages. [..…
Release: datasette 1.0a35 I'll write more about this one soon, but it's a big release. Three highlights from the release notes: New "Create table" interface in the database actions menu, backed by the /<database>/-/create JSON API . I…
Tool: OPFS + Pyodide test harness I've been pondering if Datasette Lite - the Python Datasette application run entirely in the browser using Pyodide and WebAssembly - might be able to edit persistent SQLite files stored on the user's comput…
I don’t prompt Claude anymore. I have loops running that prompt Claude and figuring out what to do. My job is to write loops. — Boris Cherny Over the last months I have watched more and more people build something on top of coding agents th…
Prompt Injection as Role Confusion First, I absolutely love this: This is a blog-style writeup of the paper. I wish every paper would come with one of these. Academic writing is pretty dry - the impact of a paper can be so much higher if yo…
This morning on Hacker News I saw Moebius: 0.2B Lightweight Image Inpainting Framework with 10B-Level Performance , describing a small but effective inpainting model - a model where you can mark regions of an image to remove and the model i…
sqlite-utils is my combined Python library and CLI tool for working with SQLite databases. It provides an extensive set of higher-level operations on top of Python's default sqlite3 package , including support for complex table transformati…
Release: sqlite-utils 4.0rc1 See sqlite-utils 4.0rc1 adds migrations and nested transactions . Tags: sqlite-utils
Temporary Cloudflare Accounts for AI agents The announcement says this is "for AI agents" but (as is pretty common these days) the AI hook isn't really necessary, this is an interesting feature for everyone else as well. Short version: you…
The real valuable capability MCP offers over skills/CLI is isolating the auth flow outside of the agent’s context window, and potentially out of the harness completely. [...] Maybe the idealized form of MCP is just an auth gateway for the A…
Today we launched a new plugin for Datasette, datasette-apps , with this launch announcement post on the Datasette project blog. That post has the what , but I'm going to expand on that a little bit here to provide the why . The TL;DR Datas…
Release: datasette-acl 0.6a0 This release expands datasette-acl from table-only permissions toward a general resource-sharing system. Alex Garcia did most of the work for this release - we're fleshing out the plugin that will allow multi-us…
Chinese AI lab Z.ai released GLM-5.2 to their coding plan subscribers on June 13th, and then yesterday (June 16th) released the full open weights under an MIT license. Similar in size to their previous GLM-5 and GLM-5.1 releases this is a 7…
What happened in 2025 was this: the economics of code production were turned upside down . Instead of being very hard, time-consuming, and expensive to generate code, it became effectively free and instant. Lines of code went from being tre…
Tool: <click-to-play> — a still that plays A progressive enchantment Web Component that turns this markup: <click-to-play> <a href="URL to GIF"> <img src="URL to first frame" alt="..."> </a> </click-to-play&…
NetNewsWire Status I find this inspiring. Brent Simmons retired a year ago, and his retirement project is making one piece of software really, really good - free from any commercial pressure. The software is NetNewsWire - "it's like podcast…
Release: datasette 1.0a34 Quoting the release notes: The big feature in this alpha is tools to insert, edit and delete rows within the Datasette interface. These features are available on table pages, and edit and delete are also available…
Release: datasette-tailscale 0.1a0 A very experimental alpha plugin which lets you do this: datasette tailscale mydata.db \ --ts-authkey tskey-auth-xxxx --ts-hostname datasette-preview This starts a localhost Datasette server with a Tailsca…
I can 100% attest to the fact that Qwen3.6-27B is a very capable local model for coding tasks. Over the last month and a half I've been using it almost daily, either on my M2 Ultra or on my RTX 5090 box. I use it for small mundane tasks at…
The Fable 5 Export Controls Harm US Cyber Defense I quoted The Atlantic quoting Kate Moussouris earlier, when I should have gone straight to the source. Here she is confirming that the "jailbreak" that got Claude Fable 5 banned under an exp…
Katie Moussouris, a cybersecurity expert and the CEO of Luta Security, told me that Anthropic shared with her a copy of the White House’s report on the Fable jailbreak to get her appraisal. (She said that she is not being paid by Anthropic.…
TIL: Cloudflare CAPTCHA on at least one ampersand I'm using Cloudflare's CAPTCHA (they call it a "Web Application Firewall > Custom rules > Managed Challenge" these days) to prevent crawlers from aggresively spidering my faceted searc…
Release: datasette-apps 0.1a3 Fixed a bug where users without the create-app permission could still create apps. #27 Fixed a bug where it was impossible to grant permission to edit an app to users who were not the app's owner. The rules for…
Release: datasette-apps 0.1a2 Custom network/CSP origins for apps are now guarded by a new apps-set-csp permission, with an optional allowed_csp_origins plugin allow-list for non-privileged users. The Datasette Agent app creation tool enfor…
Release: datasette-agent 0.3a0 New tool, execute_write_sql , which requests user approval and then writes to a database - taking user permissions into account. #27 I added a mechanism for asking user approval in datasette agent 0.2a0 . The…
"They screwed us": Personality clashes sent Anthropic's models offline Lots of "source familiar with the administration's thinking" and "source close to Anthropic" in this Axios piece, which is the best collection of behind-t…
[...] Instead, I picture a specific person and I just write for them. Often this person is "me, but 3 years ago" or a good friend. — Julia Evans , write for 1 person Tags: writing , julia-evans
Why AI hasn’t replaced software engineers, and won’t Arvind Narayanan and Sayash Kappor take on the question of AI job losses through the lens of a profession that is uniquely suited to AI disruption - software engineering. In this essay, w…
The Pyodide 314.0 release announcement (via Hacker News ) includes news I've been looking forward to for a long time: You can now publish Python packages built for Pyodide (or any Python runtime compatible with the PyEmscripten platform def…
Release: luau-wasm 0.1a0 See Publishing WASM wheels to PyPI for use with Pyodide for details. Tags: lua , webassembly , pyodide
There is a bit of schadenfreude on Twitter right now about Anthropic being hit by the US government’s export control directive to suspend access to Fable and Mythos . Anthropic and their leadership have spent a lot of time and effort descri…
I have been a staunch supporter of Open Source for a long time, including experiments in funding it . I’m a true believer in the idea that Open Source always wins in the long run, but not automatically and not quickly. Right now it is being…
There is a strange thing that happens in communities that gather around abstinence from something: identity from opposition. At their best these communities are not just negative: childfree spaces can be about autonomy, choice and acceptanc…
A work in progress post about building a shitty robot.
In my last post I used the word “clanker 1 ” as an alternative to “agent” quite consistently and probably excessively. That choice ended up attracting a lot more attention than I expected in the Hacker News comment section of that post and…
Pi is now part of Earendil, but in the important sense it is still Mario’s project. He has been living with its issue tracker longer than I have, and he has been exposed to the weirdness of the new form of agent traffic in Open Source proje…
I really, really want local models to work. I want them to work in the very practical sense that I can open my coding agent, pick a local model, and get something that feels competitive enough that I do not immediately switch back to a host…
Language is constantly evolving, particularly in some communities. Not everybody is ready for it at all times. I, for instance, cannot stand that my community is now constantly “cooking” or “cooked”, that people in it are “locked in” or “cr…
GitHub was not the first home of my Open Source software. SourceForge was . Before GitHub, I had my own Trac installation. I had Subversion repositories, tickets, tarballs, and documentation on infrastructure I controlled. Later I moved pro…
If you spend enough time in US business or finance conversations, one word keeps showing up: equity . Coming from a German-speaking, central European background, I found it surprisingly hard to fully internalize what that word means. More t…
Why we need collaborative AI engineering and a tour of Ace: the multiplayer coding workspace
How I use Pi to distill multiple context windows into exactly what I need
On agent orchestration patterns, why design and critical thinking are the new bottlenecks, and whether we should let go of looking at code
Don't let AI make you the boss no one respects anymore
Lessons I learned while building my own coding agent from scratch.
A rambling rebuttal to Armin's claim that LLM APIs are a state synchronization problem.
Got Bash and some code interpreter? Skip MCP.
How I turned imposter syndrome into my learning superpower
It's not about working more - it's about caring more
Building a JavaScript AST interpreter in JavaScript: scope isolation, ES5 implementation, and all the footguns along the way.
A data-driven comparison of MCP and CLI approaches for coding agent terminal control
Why I share what I actually think and feel
cc-antidebug patches Claude Code to enable Node.js debugger support for SDK-based apps and restores the /cost command functionality for Max plan users
On chatbot sycophancy, passivity, and the case for more intellectually challenging companions
Exploring how to track and analyze changes in Claude Code's system prompts and tools to understand AI assistant evolution
Reflections on how I transitioned from Engineer to Director of Engineering at Sentry
Some tips to land the best job you ever had
Treating LLMs as shitty general purpose computers we program with natural language. Because throwing shit at the wall wasn't working anymore.
How I built a simple portable audio player for my boy, summoning the spirit of the Gameboy
A tiny tool to calculate when your baby might arrive
Revealed: How the UK tech secretary uses ChatGPT for policy advice by Chris Stokel-Walker for the New Scientist
Humanity's Last Exam by Center for AI Safety (CAIS) and Scale AI
If you're not distressingly embedded in the torrent of AI news on Twixxer like I reluctantly am, you might not know what DeepSeek is yet. Bless you.
Common Misconceptions About the Complexity in Robotics vs AI by Dan Ogawa
A real-world test of artificial intelligence infiltration of a university examinations system: A “Turing Test” case study by Peter Scarfe, Kelly Watcham, Alasdair Clarke, Etienne Roesch
Welcome to the smidgeon stream. This is a new kind of content on the Garden. One that was
How to use Zotero's translator and Tana Paste formatting to easily import papers into Tana
Reflections on the strange experience of growing a human from scratch, without any conscious understanding of how you are doing it
My fairly banal, basic, but beautiful command line setup
How to programmatically turn on LEDs and read button states
The story of a programmer trying to electronics
Fun little vacation project for fun and zero profit.
Reminiscing about the times I didn't watch TV at night but built stuff.
Thoughts on acquiring computational thinking skills based on my own experience.
Reflections on two years of working at Elicit and why it's time to leave
The emerging golden age of home-cooked software, barefoot developers, and why the local-first community should help build it
Buying fake William Morris prints on Etsy and other early signs of epistemological collapse
How to open pieces of narrative non-fiction writing, conference talks, and sticky jars
Gaining a strange disease and losing my ability to see straight
Collecting people I know who work at the intersection of design and engineering, in an attempt to figure out what a design engineer is
How to gather people and create communities in ways that are low-stress and high-payoff
Designing tentative calendar events to solve complex scheduling problems
Creating a subtle, peripheral, and synchronous sense of shared space and context on the web
Giving people a visible, useful trail of where they've been over the course of an exploratory journey
Sketchy ideas for interfaces that play with the novel capabilities of language models
An exploration of the problems and possible futures of flooding the web with generative AI content
Shareable, browser-based documents that can compile and run code
An archive of my high school desktop designs, circa 2009
Using language models to generate reverse outlines of writing drafts
Proving you're a human on a web flooded with generative AI content
On the fuzziness of calling things “artificial intelligence” and moving the goalposts
Command line bars you can quickly summon with a keyboard shortcut
Small, scoped areas within a graphical interface that allow users to read and write simple programmes
People reappropriating existing software to solve their own unique problems
A new role at an AI research lab working on tools for open-ended reasoning
How block-based interfaces can help us create more structured data on the web
Last month, April 2022, marked the 10 year anniversary of my start as a professional programmer. I started programming earlier than that, but hadn’t been paid a salary. As a teenager I built websites and IRC bots and wrote tiny Python scrip…
Daily notes as a frictionless default input for personal knowledge management systems
Bringing visual explanations and embodied knowledge to programming tools
Agent-based note-taking systems that can prompt and facilitate custom workflows
Exploring ways to build social infrastructure around books and reading on the open web
Adding spatial affordances to the experience of browsing the web
Naming your invisible audiences to free yourself from unspoken obligations
Narrative essays that I consider ideal models of the medium
Providing clear metadata on the epistemic validity of content
A history of our metaphorical understanding of the web
How to write macros without touching the terminal
An anthropological look at the cultural norms of the React community
On seeing tools for thought through a historical and anthropological lens
Longing for the paleolithic past in the Anthropocene
Why there is nothing natural about the idea of 'nature'
What we lose when our digital notes remove the freedom to move
How to build a digital garden without touching code
A Hyperlink Academy writing club where we mimic the work of others
A collection of observations on the rise of soft, sparkly, baby pink aesthetics among developers
Developer self-expression through coloured switches, keystroke actuation, and LED light displays
What's wrong with linear, static programming mediums and how might we improve them?
The lost permissioning and copyright system of the Web
Data is currently dislocated – our narratives and metaphors around it try to convince us it is immaterial
Notes on how to use the position property in CSS to make scrollytelling stories
How to customise Roam Research with your own CSS themes
A few favourite books from the field of digital anthropology
A collection of laws named for specific people in the field of programming
Notes on the history of cyborgs and why the idea still holds historical weight in Western narratives
A collection of interesting words that have recently been coined
A discipline at the intersection of cultural anthropology and binary logic
How to use the Greensock animation library inside React using React hooks
On seeing tools for thought through a historical and anthropological lens
I grew up in a what I now know people to consider a really small town. There wasn’t a lot, but even in that small town we had 2-3 lawyers. And to make a point about technology and how we develop software I want to paint you a picture of the…
There’s a scene in Moneyball in which Brad Pitt’s character, the manager of the Oakland A’s , is watching a recording of one of his players trying so hard to run fast that he stumbles and falls. Lying on the ground he’s angry at himself, be…
Notes on the basics of the Greensock animation llibrary
One of the eternal laws of the internet dictates that as soon as one person says they have a new thing that lets them type faster — a keyboard, a keyboard layout, an editor configuration, etc. — somebody else must say: “but typing is not th…
Whenever I’m not sure whether I’m spending my time on the right thing I ask myself: does it help me ship? If what I consider working on is not the thing we want to ship itself, but lies in the vast grey area of software projects where I cou…
Illustrated notes on the key concepts of how Gatsby.js works
The failure of drawing materials without mediums and meat
How to offend everyone with boundary-crossing steak and nuggets
Illustrations made for a set of episodes of the Cultivated Meat podcast
Illustrated notes on the idea of Gift Economies and cultural historys of economic exchange
Notes on the metaphorical varieties of synecdoche and metonymy
A video tour through how I build the old version of this site
Mary Douglas defined dirt as matter out of place – the crossing of boundaries
Project Xanadu as a pattern language, rather than a failed software project
Illustrated notes on the concept of 'Evergreen notes' and how to write them
Illustrated notes on the Knowledge Hydrant guide to collaborative learning
Notes on the academic field of CSCL and major papers in the discipline
Notes on how to run silent meetings and reading sessions
Illustrated notes on how React suspense works
Some insights into how I collaborative with experts to create illustrated notes on technical topics
Illustrated notes on how data unions work and what problems they might solve
A newly revived philosophy for publishing personal knowledge on the web
Notes on pattern languages and Christopher Alexander's legacy on software programming
A collection of my favourite books on conceptual metaphor theory
A walkthrough of how I manage and tend Evergreen notes in Roam
I’ve been working remotely full-time at Sourcegraph for slightly over a year now and, in the five years before that, had 2-3 home office days a week at flinc and ioki. There are a lot of different blog posts I could write about remote worki…
Illustrated notes on common mistakes people make in Git, and how to fix them
A guide to the apps and tools I use to create illustrations
The introduction to my thesis on the Quantified Self movement and the culture of self-tracking
Seventy years ago we dreamed up links that would allow us to create two-way, contextual conversations. Why don't we use them on the web?
An illustrated diagram exposing the inner layers of the dark and cozy web
Explaining React through visual metaphors
Notes from my podcast episode Open Source and Gift Economies on Maintainers Anonymous
Illustrated notes on the Building A Second Brain course
A lightening talk on second brains and cyborg embodiment
Illustrated notes on the essentials of web security
A few months ago, while looking at some code, a little light bulb that I didn’t even know existed went off in my head: “This was only written in this way, because the tools allow it to be written in this way.” Maybe it was a question mark,…
A case study showing how I make illustrations for abstract programming concepts
Illustrated notes on how to build state machines with the xState library
Illustrated notes on how routing works in Vue.js
Illustrated notes on the core concepts in Rust
Illustrated notes on building Gatsby themes
Illustrated notes on advanced but fundamental topics in JavaScript
Visualising the cultural narratives around cultured meat
Illustrated notes on building custom React hooks
Illustrated notes on how work with immutable data in the Immer state library
Illustrated notes on the basics of the GraphQL query language
My favourite resources for learning to draw and developing your visual thinking skills
Illustrated notes on the new language changes in JavaScript ES2019
Illustrated notes on the JAMstack, Gatsby & Contentful
Illustrated notes on how to implement web sockets with Vue.js and Socket.io
Illustrated notes on building VR web apps with React360
Illustrated notes on how to test web apps with Cypress
Illustrated notes on how compilers and transpilers are different
Everything you need to know about what API's are and how they work
This article has been translated into Spanish: Por qué debes aprender más lenguajes de programación (incluso si no los vas a utilizar) Imagine we’ve been handed a task and we’re free to choose the programming language. The assignment involv…
The absolute minimum you need to know about data storage
Illustrated notes on how JavaScript's comparison operators work
Illustrated notes on how the React virtual DOM works
Illustrated notes on how JavaScript's spread operator works
This article has been translated into Russian: Полезные инструменты для написания книг Thank you Vlad! In the beginning, there is always a single text file, nothing more. It’s called ideas.md or book.md . It contains a list of thoughts and…
Well, that certainly went quicker than I planned. I knew from releasing the paperback edition of Writing An Interpreter In Go that a lot of people still prefer paper over eBooks. So it didn’t come as a big surprise when, right after the rel…
If you don’t care about the Who, Where, When, Why, How and the Why Is It A Lost Chapter? and want to skip to the What: I wrote a new chapter for Writing An Interpreter In Go and you can read it for free at interpreterbook.com/lost . Otherwi…
If you’d asked me a only few months ago if there’ll ever be a printed version of Writing An Interpreter In Go I’d responded with a “Huh, uummm, well, I don’t know. Maybe. Maybe if I’ll find the time and if there’s any interest.” As it turne…
There are certain tools that provide incredibly high value. Much more so than others. They provide so much value by acting as a multiplier of power and leverage. And I think there’s something they all have in common. I’m talking about inter…
I wrote my book “Writing An Interpreter In Go” over the course of 11 months. The first four months were spent on building the Monkey programming language and its interpreter. In the following seven months I wrote the book itself and at time…
You’re a programmer and your product manager walks up to your desk, taps you on the shoulder and asks if you have a couple of minutes to spare. She needs to talk to you about something. You sit down together and she has a serious look on he…
Last week I’ve self-published my first book called “Writing An Interpreter In Go”, which you can get at interpreterbook.com . I want to tell you a little bit about why I chose to write this particular book. Sometimes I jokingly call the sum…
Over the past year I’ve spent a significant amount of time reading through Go’s go packages , the packages used by the Go compiler and other Go tools. But only recently did it occur to me that these are real, public packages. I can actually…
This post has been translated to Chinese . In the last couple of months I developed a certain approach to writing code. Whenever I write a new function, class or method I ask myself: “Is this code stupid enough?” If it’s not, it’s not done…
This post is based on the talk of the same name I gave at the Arrrrcamp conference in Ghent, Belgium on October 2nd, 2014. You can find the slides here and the video recording here . Unicorn is a webserver written in Ruby for Rails and Rack…
There is an interesting thread on the Go issue tracker about daemonizing processes. Most of the thread is not about daemonizing processes though, but more about why Go has no Fork() function which you can call directly in your code. The fir…