The Invent with Python Blog

Writings from the author of Automate the Boring Stuff.



Sat 04 May 2024
Fabric.js Tutorial Part 6
Sat 04 May 2024
Fabric.js Tutorial Part 5
Sat 04 May 2024
Fabric.js Tutorial Part 4
Sat 04 May 2024
Fabric.js Tutorial Part 3
Sat 04 May 2024
Fabric.js Tutorial Part 2
Sat 04 May 2024
Fabric.js Tutorial Part 1
Tue 20 February 2024
Make Lively Movement Animation with PyTweening's Tweening Functions
Mon 15 January 2024
Book Review: Geometric Patterns with Creative Coding


Thu 09 November 2023
What's New in the 3rd Edition of "Automate the Boring Stuff with Python"
Thu 15 June 2023
Using ChatGPT-4 to Review My Recursion Programming Book
Tue 28 March 2023
Book Review: Python Distilled
Tue 28 March 2023
Book Review: Python in a Nutshell
Fri 27 January 2023
How to Install Pygame on Windows, macOS, and Linux


Sun 20 November 2022
How to Run Pip From The Python Interactive Shell with pipfromrepl
Sat 19 November 2022
Python Linter Comparison 2022: Pylint vs Pyflakes vs Flake8 vs autopep8 vs Bandit vs Prospector vs Pylama vs Pyroma vs Black vs Mypy vs Radon vs mccabe
Tue 15 November 2022
I Want To Help Everyone And I Will Fail
Mon 31 October 2022
Installing Brython to Get Python in Your Browser
Sun 30 October 2022
17 Online Python IDEs and Interactive Shells/REPLs
Sat 29 October 2022
How Computers Store Data with Binary Numbers
Mon 10 October 2022
Is Python Compiled or Interpreted?
Thu 25 August 2022
How to Run Pip From The Python Interactive Shell
Tue 23 August 2022
Introducing Humre: Human-Readable Regular Expressions
Mon 22 August 2022
Which Al Sweigart Python Books Should I Start Reading?
Tue 09 August 2022
New Book: The Recursive Book of Recursion by Al Sweigart
Sun 20 March 2022
How Many Recursive Cases and Base Cases Does a Recursive Function Need?
Fri 11 March 2022
Bootstrap 5 Boilerplate Code for New Web Pages
Wed 09 March 2022
Make Fractals in Python Turtle with the FractalArtMaker Module
Wed 23 February 2022
How to Use Python 3.11's New TOML Parser, tomllib
Mon 21 February 2022
Downloading Web Pages and Files in Python 3 and 2 Without the Requests Module
Fri 18 February 2022
I Like Al Sweigart's Books, What Can I Read to Get Into Game Programming?
Thu 03 February 2022
What Kind of Computer Do I Need to Learn Programming?
Thu 13 January 2022
Book Review: Make Python Talk
Thu 13 January 2022
Book Review: Serious Python
Thu 13 January 2022
Book Review: Tiny Python Projects


Tue 28 December 2021
How to Represent a 2D Grid in Python Code
Mon 27 December 2021
JavaScript Books That Misspell "JavaScript": How Amazon Became a Minefield of Low-Quality Programming Books
Mon 20 December 2021
How to Test Multiple Variables Against a Single Value and a Single Variable Against Multiple Values in Python
Sun 07 November 2021
How, As a Kid, I Taught Myself to Code
Mon 04 October 2021
22 Examples of Recursive Functions in Python
Fri 24 September 2021
What is a Python Generator? (Implementing Your Own range() Function)
Sun 05 September 2021
Recursion Is Not A Superpower: An Iterative Ackermann
Sat 28 August 2021
ccwd - A Copy Current Working Directory Command
Mon 02 August 2021
Algorithmic Art with the BitFieldDraw Module
Sat 10 July 2021
Book Review: The Charisma Machine by Morgan G. Ames
Sat 03 July 2021
Combinations and Permutations in Python with itertools
Sat 26 June 2021
New Book: The Big Book of Small Python Projects
Sun 07 March 2021
Al Sweigart's PyTennessee 2020 Opening Keynote
Sat 06 March 2021
Calm Programming Video Series
Mon 11 January 2021
Text Recognition in Python with pytesseract
Mon 11 January 2021
A Quick Pip Guide: How to Install Python Modules


Thu 24 December 2020
Installing the ComputerCraft Mod for Minecraft 1.16 (and later)
Fri 18 September 2020
Two Weird Tricks to Help Learn the Git Command Line
Thu 26 March 2020
Free Coupon Codes for My Online Courses


Tue 31 December 2019
Reading Guide to Automate the Boring Stuff, Second Edition, for Readers of the First Edition
Sun 24 November 2019
Type Hints for Busy Python Programmers
Tue 12 November 2019
Book Review: Code This Game! by Meg Ray (Odd Dot 2019)
Sun 20 October 2019
Live Online Python Class on Twitch on October 21, 2019
Mon 07 October 2019
What's New in the 2nd Edition of "Automate the Boring Stuff with Python"
Thu 15 August 2019
Python Error Messages: Gotta Catch Em All
Wed 05 June 2019
Pythonic Ways to Use Dictionaries
Fri 01 February 2019
Hashable Objects Must Be Immutable


Sun 09 December 2018
Book Review: The Little Schemer
Mon 22 October 2018
A Curriculum for Python Packaging
Wed 17 October 2018
Writing Bots to Play Zombie Dice
Fri 24 August 2018
PyOhio 2018 Recursion Tutorial
Fri 17 August 2018
The Zen of Python, Explained
Mon 21 May 2018
Python's Fake Increment and Decrement Operators
Mon 05 February 2018
Python Tuples are Immutable, Except When They're Mutable
Fri 02 February 2018
How To Ask For Programming Help


Wed 05 April 2017
Lessons Learned from Creating a Udemy Course
Tue 14 March 2017
How to Install Django 1.10.6 and Python 3.6.0 on Dreamhost Shared Hosting


Mon 21 September 2015
"Automate the Boring Stuff with Python" online course now available!
Tue 15 September 2015
APIs, not apps: What the future will be like when everyone can code
Tue 01 September 2015
Further Reading: Intermediate Python Resources
Tue 10 March 2015
3rd Edition of "Invent Your Own Computer Games with Python" Released


Sat 20 December 2014
Translate Your Python 3 Program with the gettext Module
Wed 17 December 2014
Programming a Bot to Play the "Sushi Go Round" Flash Game
Thu 11 December 2014
Making a Text Adventure Game with the cmd and textwrap Python Modules
Sat 06 December 2014
Announcing the "Invent with Python" Bookshelf
Tue 02 December 2014
Why is Object-Oriented Programming Useful? (With a Role Playing Game Example)
Thu 20 November 2014
IDLE Reimagined
Tue 30 September 2014
No, Seriously, Why Should I Learn to Code?
Tue 11 February 2014
"Let's Create Software" Tutorial: Bus Routes Overlaid on Google Maps


Sun 15 December 2013
Why Is HTML Not A Programming Language?
Wed 02 October 2013
"Invent with Scratch" Screencast Series
Mon 30 September 2013
Downloading Imgur Posts Linked From Reddit with Python
Thu 20 June 2013
Decimal, Binary, and Hexadecimal Odometers
Thu 13 June 2013
Source Code Makeover: Demon Kingdom, Part 2
Wed 12 June 2013
Source Code Makeover: Demon Kingdom, Part 1
Tue 11 June 2013
Comments on John Resig's "Programming Book Profits" (and on Self-Publishing)
Wed 05 June 2013
Text Adventure vs. MUD vs. Roguelike vs. Dwarf Fortress
Mon 22 April 2013
Multithreaded Python Tutorial with the "Threadworms" Demo
Mon 15 April 2013
"Hacking Secret Ciphers with Python" Released
Tue 19 February 2013
What Professional Games Use Pygame?


Thu 27 December 2012
Why I Recommend Against Hackety Hack
Mon 10 December 2012
8-bit NES Legend of Zelda Map Data
Wed 21 November 2012
Programming AI Bots for Zombie Dice
Tue 30 October 2012
PygButton - Designing a Button UI Module for Pygame
Thu 27 September 2012
Am I Too Old to Learn Programming?
Fri 17 August 2012
How Does Compression Work?
Mon 13 August 2012
Source Code Makeover: Square Shooter, Part 3
Fri 10 August 2012
Source Code Makeover: Square Shooter, Part 2
Thu 09 August 2012
Source Code Makeover: Square Shooter, Part 1
Mon 30 July 2012
Need a Game Idea? A List of Game Mechanics and a Random Mechanic Mixer.
Wed 18 July 2012
Using Trigonometry to Animate Bounces, Draw Clocks, and Point Cannons at a Target
Mon 09 July 2012
16 Common Python Runtime Errors That Beginners Find
Thu 21 June 2012
A Common Programmer Mistake: Dog is not the Opposite of Cat
Wed 16 May 2012
A Modest Proposal: Please Don't Learn to Code Because It Will Damage Your Tiny Brain
Thu 03 May 2012
Implement a "Save Game" Feature in Python with the shelve Module
Fri 06 April 2012
Stop Using "print()" for Debugging: A 5 Minute Quickstart Guide to Python’s logging Module
Sun 25 March 2012
How to Code a Twitter Bot in Python on Dreamhost
Mon 19 March 2012
CircleMUD Data in XML Format for Your Text Adventure Game
Sun 18 March 2012
“How much math do I need to know to program?” Not That Much, Actually.
Sat 03 March 2012
Nobody Wants to Learn How to Program
Mon 20 February 2012
"I Need Practice Programming": 49 Ideas for Game Clones to Code
Fri 10 February 2012
New Book: "Making Games with Python & Pygame"


Fri 09 December 2011
Pyganim - A Pygame module to make sprite animation dead simple.
Tue 29 November 2011
The Things I Dislike About IDLE That I Wish Someone Would Fix
Fri 21 October 2011
My awesome exciting indie Pygame games: "Look At This Rock" and "Look At This Rock 2: A Different Rock"
Fri 21 October 2011
Pygame Basics Chapter
Sun 16 October 2011
Chinese Translation of "Invent with Python" Started
Fri 07 October 2011
Pygame Cheat Sheet
Wed 28 September 2011
List of Street Names, List of Last Names
Tue 20 September 2011
JavaScript Cipher Wheel
Sun 18 September 2011
Virtual Caesar Cipher Wheel program
Sat 17 September 2011
New Game Source Code: Simon Gesture (Simon clone with mouse gestures)
Sat 10 September 2011
Pygcurse - A "curses" Emulator Built on Pygame
Wed 07 September 2011
Rough Drafts of My Next Two Books Are Available
Fri 19 August 2011
Nobody Cares About a Few Million Nanoseconds
Thu 11 August 2011
Recursion Explained with the Flood Fill Algorithm (and Zombies and Cats)
Fri 24 June 2011
New Game Source Code: Gemgem (A Bejeweled clone)
Mon 13 June 2011
New Game Source Code: Star Pusher (Sokoban clone)
Fri 10 June 2011
New Game Source Code: Four in a Row
Mon 16 May 2011
Great Pygame Example Site
Mon 09 May 2011
"MooseGesture" - Python Mouse Gestures Module
Sat 30 April 2011
Free Music, Sound Effects, Tiles, and 2D Art to Use in Your Games
Sun 06 March 2011
New Game Source Code: Squirrel Eat Squirrel
Fri 25 February 2011
New Extra Game: Connect Four clone
Sat 12 February 2011
1000th Book Sold!
Wed 09 February 2011
Cipher Disk Cutout
Mon 03 January 2011
Code Comments Tutorial: Flippy


Fri 03 December 2010
I am Boycotting Amazon for the Holidays
Thu 18 November 2010
Code Comments Tutorial: Tetromino
Fri 29 October 2010
Code Comments Tutorial: Snakey
Fri 08 October 2010
Code Comments Tutorial: Slide Puzzle Game
Thu 30 September 2010
Code Comments Tutorial: Simulate - A "Simon" Clone
Tue 28 September 2010
Code Comments Tutorial: Memory Game
Mon 27 September 2010
"I Want To Teach My Kid How to Program", A Guide
Thu 09 September 2010
Code Comments Tutorial: Ink Spill - A "Flood It" Clone
Wed 01 September 2010
The Top 10 Pygame Tutorials
Fri 25 June 2010 A Remake of Gorillas.bas
Thu 08 April 2010
Printed book still being edited.
Fri 26 February 2010
"Invent with Python" printed book on the way!
Tue 05 January 2010
Version 9 of the Invent Your Own Computer Games with Python PDF is Available


Tue 24 November 2009
New Appendices for "Invent Your Own Computer Games with Python"
Mon 02 November 2009
Lessons Learned from Writing a Technical Book to Teach Programming
Thu 29 October 2009
What's New in the Second Edition of "Invent Your Own Computer Games with Python"