Recent Posts

AI slop is the new TLDR

Calling AI generated code slop often says less about the code than about our willingness to read it. Why it feels like onboarding every day, and how I cope.

ai educates

Getting to know Tachyon

A set of hands-on JupyterLab workshops for Tachyon, the sampling profiler in Python 3.15, and the story of why I wrote them to learn it myself.

python profiling jupyter wrapture

A master class in decorators, patching and tracing

Seventy free hands-on workshops, from writing decorators with just the standard library through wrapt to testing and tracing with wrapture. Nothing to install.

python decorators wrapt wrapture

Writing a workshop for JupyterLab

Writing a small guided workshop for JupyterLab from nothing with jupyterlab-workshop: the manifest, pages, actions, checks, linting, self-testing and author mode.

jupyter jupyterlab-workshop

Introducing jupyterlab-workshop

A JupyterLab extension for guided interactive workshops, with instructions in a side panel whose actions drive the session and check the learner's work as they go.

jupyter jupyterlab-workshop educates

Hands-on learning in the age of AI

A summary of my PyCon AU 2026 talk on whether developer workshops still matter when anyone can ask an AI, and why I released 24 wrapture workshops anyway.

pycon educates wrapture

Stay Updated

Follow my journey and get notified about new posts and projects.

You can also follow this site via RSS feed.

If you're a Python developer, you might also want to check out the RSS feed available from planetpython.org for posts from various Python developers, including myself.

Sponsor Me

Support my open source work and help me continue creating tools that benefit the developer community.

Sponsor on GitHub