Articles on Automation · Python · Rust · AI

How to turn manual business processes into reliable software, and how to build it well: articles on automation, Python, Rust and AI from 20 years of production software.

  • How Rust Runs in the Browser (with wasm-bindgen)

    I love it when developers in our Python to Rust cohort go beyond the curriculum. WebAssembly isn't part of it, but one of them figured it out on his own and shared the result in our cohort Slack channel: his JSON parser, compiled to wasm and live on GitHub Pages.

  • ccfind: search all your Claude Code sessions

    I remembered the conversation: transcribing a Rust cohort video with mlx-whisper. I didn't remember where I ran it. It turned out to be ~/Downloads, but I only found that out later: claude --resume lists sessions for the current directory and only matches on titles.

  • My bookkeeping runs on code now. AI only reads the PDFs.

    I paid for a popular bookkeeping tool and it worked well. But the UI kept getting slower, and I wasn't using its reporting, so I had no real view of my numbers.

    So I did what I usually do: I scoped a solution, built the smallest thing that worked and tested it.

  • The Programming Books I Still Recommend After 15 Years

    Someone asked me the other day which programming books are worth reading. I found an old blog post of mine from 2011 (!) and my favorites have barely changed, which is telling. And with AI writing much of the code these days, I think these books are more useful, not less.

  • Ship Your First Python App: a Free Course on the Local Dev Workflow

    I keep hearing this a lot: the Python syntax I picked up in an afternoon, but shipping a real project meant learning ten more things. There is a stark difference between writing some code in Python vs building an app that someone else can run on their system. These skills are taught, but rarely together in one place. So I am building a free course to teach this.

  • Protocol or ABC? Designing a pluggable provider interface

    I was designing the provider boundary with a developer for a CLI tool that talks to two different image-generation backends.

    Same inputs from the user, two different SDKs underneath. We were figuring out how best to define the shared contract: an abstract base class, or a typing.Protocol? This article has the answer.

  • Why Rust makes you import a trait to use its methods

    An interesting challenge for a new developer came up in our Rust cohort: they opened a file and wanted to read its contents from disk, but the compiler refused to let them call read_to_string.

  • How Libraries Run Rust Inside Python (with PyO3)

    Every time you validate data with Pydantic v2, the data-validation library most Python apps reach for, a Rust extension does the work. Its core, pydantic-core, is built with PyO3, the same toolchain we'll use here.

  • Why Learn to Code If AI Can Code? 6 Reasons

    Stanford's Chris Piech runs Code in Place, an intro programming class with 17,000 students and over 1,000 teachers. They've run it both before and after Cursor and Claude Code arrived, and enrollment basically doubled. It turns out that more people, not less, want to learn to code now that AI can write it.

  • Database-Driven RBAC with FastAPI and Azure Entra ID

    This came out of a coaching project: a FastAPI service backing a geotechnical database. We use Azure Entra ID for authentication, but we needed role-based access control (RBAC) granularly per endpoint and across different user roles. It turned into an interesting sprint where we designed it so that role changes did not require code changes.

Notes on Python, Rust, and AI for developers who value deep work over shallow trends.

Read the newsletter →