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.

  • Python Is Not Enough: Why Pythonistas Love Rust (Podcast)

    I joined Bas Steins and Michal Martinka on their complexity.fm show to talk about why Pythonistas are picking up Rust, what AI really does to how we learn, and why vibe coding is a myth. The conversation ran for over an hour because there was a lot to unpack.

  • AI Is an Accelerator, Not a Compass

    A Reddit thread caught my eye this week. A developer spent three days with AI building out an authentication system, then realized the entire user flow was wrong. Not because the code was bad. Because nobody had mapped out what the system was actually supposed to do before line one.

    That's what happens when speed gets decoupled from direction.

  • From Python to Rust: Master Iterators by Rebuilding 10 Unix Tools

    The fastest way I know to learn a language is to rebuild something you already understand. You stop fighting the problem and spend your attention on the syntax and the idioms. That is the whole idea behind the new Unix tools track I just released on the Rust platform: ten small command-line classics, each one a pure function you implement and cargo test to validate you got it right.

  • Profile First: A 10x Faster Django Test Suite

    The Rust Platform Django test suite took 30 seconds to run. I had a hunch it was database-related. Of course I was wrong. I profiled it with cProfile and cut it from 30 to 3 seconds.

  • End-to-End Testing Every Rust Exercise with Playwright

    The Rust platform has 71 exercises and counting (I just added a new track of Unix exercises). They all share the same interface: load an editor, type code, validate it against a Rust backend. When I make any changes to the platform, how do I confirm nothing breaks? Enter end-to-end testing with Playwright.

  • When to use classmethod, staticmethod, or instance method in Python

    In a coaching call this week we discussed a create classmethod, and someone asked the obvious question: why is that here? It just forwarded its arguments to __init__. We ended up discussing the difference between instance methods, classmethods, and staticmethods, and how to tell which is which. Here's a simple decision rule.

  • Building an AI Agent in 6 Weeks (and Finally Understanding How They Work)

    Jeff Haemer has written software since he was teaching it at the University of Colorado in the early 1980s. But he felt he needed to brush up his Python, and above all get a grounding in AI.

    In his words AI was "a big undifferentiated cloud of things I didn't know." Time to change that.

  • Why Rust does not need OOP

    When I heard structs replace classes in Rust, I was a bit surprised. I thought, how can you do without classes? But as I started to learn Rust, I realized that structs, traits, ownership and composition help resist the temptation of OOP. In fact, Rust's approach to programming is more focused on data and behavior rather than objects.

    Let's look at 5 reasons why Rust does not need OOP.

  • AI Doesn't Change What Software Engineering Is

    Kelsey Hightower said something on the Pragmatic Engineer podcast that I keep coming back to: AI does not change what software engineering is. It is a tool, a more powerful one, but the job did not fundamentally change.

  • How to Update Multiple Page Elements from One htmx Request

    A button submits code, tests run, feedback appears. Standard htmx. But the submissions dropdown stays stale; the new submission is in the database, just not in the dropdown. One request, two elements to update.

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

Read the newsletter →