the further adventures of

Mike Pirnat

a leaf on the wind


In spite of my day job and family life, I still make the occasional thing. These are mostly amusements, but maybe you'll find something you like.



How to Make Mistakes in Python
My short book on various ways to do Python badly, published by O'Reilly. Available by free download and in print at O'Reilly-sponsored conferences.

On the Web

From Python Import Podcast
The little Python podcast that could, but only for a while. I like to think that, like the Norwegian Blue, FPIP isn't dead, just sleeping. Maybe some day we'll make some more.
How Old Is My Kid?
Track your child's age in days, weeks, months, and years. Intended for sleep-deprived parents of young children to remember how many weeks old their kid is.
An index of all the cats on, refreshed automatically whenever a new cat is released.
Python Ipsum
Placeholder text for fans of the Python programming language.



A little URL shortener that I used as an excuse to play with Flask.
A command-line app that I use to help prepare and run Dungeons & Dragons game sessions.
Django app for managing and running hack day events.
Shiny, Let's Be Bad Guys
A vulnerable demo application for learning about the OWASP Top 10 web application vulnerabilities.
A plugin for the Nose testing framework that implements PEP-712 style output
A plugin for the Nose testing framework that causes tests to fail if they take too long to run.
Python Koans
Learn Python through TDD. Once upon a time, Mike Crute and I barely managed to do anything at all on this, but we handed it off to Greg Malcolm and the rest is history. Lately I review and merge the occasional pull request.
Posts RSS headlines to Twitter with custom URL shortening.
Web Development with Python and Django: v1 & v2,
Exercises for the Django tutorials I've presented at CodeMash. In v1 we build a website for a fictional programming conference; in v2 we build the core of a D&D-like fantasy RPG.