About Python Morsels

Hi, I'm Trey. I teach Python.

I created Python Morsels to give life-long learners a low-stress way to improve their Python skills. I write the exercises, screencasts, and articles here. Shortly after I started making exercise-driven curriculum for my Python team trainings, I had the idea to make a weekly Python exercise service, and in early 2018 I launched the first version of Python Morsels.

Trey Hunner, smiling
Trey Hunner, Python trainer and Python Software Foundation Fellow

Why it's built this way

Three things I believe about learning Python

Python Morsels is like weekly tennis practice. It's not a Python class, it's guided deliberate practice for writing readable and maintainable Python code. Nearly everything in it comes from three ideas.

We learn by trying to retrieve information from our heads, not by putting it in.

You can watch talks and read books and read code, but you'll absorb very little unless you apply what you've learned. You learn by doing, which means writing Python code.

So: Python Morsels is based around writing code, not watching lengthy videos, and the exercises tell you what to do but not how.

Habitual learning is more effective than binge-learning.

Spacing your learning out over many weeks allows for both recall and reflection, both of which are important for learning. Maintaining a sustainable rhythm is more important than completing everything.

So: exercises are bite-sized and never pile up, and recommendation emails come on whatever schedule you choose (daily, weekly, monthly, or never). It's also why Daily Recall asks you a few questions a day instead of saving them all up for one long session.

Deep learning rarely comes from attempting something just once.

You might think it silly to solve the same exact exercise again. But revisiting an exercise weeks later makes you recall the solutions you read, and successfully recalling an idea is what makes it stick: the more often you recall it, the longer you tend to remember it. The weeks in between matter too, because recall does you the most good once you've started to forget.

So: every exercise ends with a walk-through of different solutions, and you can schedule a revisit for a few weeks later.

A short history

How Python Morsels came to be

  1. 2009

    I started using Python for web consulting, and shortly after that I started attending and volunteering at the San Diego Python meetup.

  2. 2015

    I started focusing primarily on teaching Python to other developers, through on-site and remote team trainings with my company, Truthful Technology. Around the same time I started writing Python articles and speaking at Python conferences.

  3. 2016

    I taught my first PyCon US tutorial, and I've given a talk or tutorial at every PyCon US since.

  4. 2018

    I launched the first version of Python Morsels, seeded with many dozens of exercises from my introductory and intermediate Python curriculum. At first it was just an email list that sent one exercise each week. Months later it became a website.

  5. 2019

    Solutions could now be submitted and automatically tested on the website.

  6. 2020

    I started publishing weekly screencasts, each with an article version.

  7. 2021

    The All Access plan arrived, so you could claim any exercise whenever you wanted.

  8. 2024

    I added a New Programmer skill level for folks who are brand new to programming.

  9. Today

    I run Python Morsels independently, and I'm still improving it every month. It's a labor of love for me, and I don't plan to stop or pause my work on it anytime soon.

See the full feature history

Outside Python Morsels

Teaching and speaking

Python community

Not sure whether Python Morsels is for you?

I want you to improve your Python skills, but I don't want you signing up for something that isn't for you. Your first 3 exercises and dozens of screencasts are free, so you can try it without paying anything. And if money is tight, I offer income-based discounts: I don't want money to get in the way of your learning.

No payment details required. Instant access.

To contact me, email [email protected].