Feature History

Python Morsels has changed a lot since its first inception back in February 2018. Here are some of the features we've added since then.

Improved performance

April 4, 2024

Notice a speed difference?

Your dashboard page, the exercise vault, and various other features of the Python Morsels site are a bit faster due to optimized database queries and improved caching.


Python 3.12 Support

Oct. 6, 2023

Python 3.12 was released a few days ago.

Python Morsels exercises now all support 3.12 and the Python Morsels exercise submission tool and Python pastebin apps now run on Python 3.12 too! Also all exercises have had their solution walk-throughs updated to discuss any newly relevant 3.12 features.

Want to see a demo of a few 3.12 tricks? Check out new Python 3.12 features in this Python paste.

feature screenshot

Screencast keyboard shortcuts

Feb. 27, 2023

Controlling screencast playback is even easier now.

Hit your spacebar key from anywhere on a screencast page to play/pause the screencast. Hit F for fullscreen and Left/Right arrow keys to go back/forward.

feature screenshot

Schedule a revisit right after solving

Feb. 16, 2023

Did you know you can schedule a time to revisit a Python Morsels exercise to help lock-in what you've learned? This feature used to be pretty hidden, but not anymore!

As you read through the solution walk through for an exercise, you'll now see a widget nudging you to revisit this exercise again later.

feature screenshot

Resources Summary

Jan. 30, 2023

Python Morsels solutions often include many links to articles, screencasts, documentation, and other related resources.

Now you can find links to all related resources for each exercise in the right-hand sidebar as you read the exercise.

feature screenshot

Help widget

Dec. 27, 2022

Need assistance?

While logged-in to Python Morsels, you'll see a help button floating in the bottom right of every page (now with a ? icon). Click it to find information on how Python Morsels works.

feature screenshot

Daily Tips

Dec. 6, 2022

Your Python Morsels dashboard page now includes a daily tip. Some are Python tips, some are tips for using Python Morsels, and some are tips for learning Python more generally.

feature screenshot

Python 3.11 Support

Oct. 25, 2022

Every exercise now supports Python 3.11. The test runner in the web app now supports Python 3.11 as well.


Improved Dashboard & Navigation

Sept. 12, 2022

The dashboard page now includes a bit more context about the recommended exercise (including a description and your current score if relevant) and the next recommended screencast is much more prominent on the dashboard page.

The navigation bar also got a big re-organization including more menus (there were far too many links floating around up there).

feature screenshot

In-browser Python REPL

Aug. 24, 2022

Ever wanted to share something you learned in the Python REPL with a friend? Now you can!

You can now run a Python interpreter right from your web browser and then save the output of your REPL session to share it with others.

feature screenshot

Better exercise hints

Aug. 17, 2022

Do you use hints when solving Python Morsels exercises?

Hints have now moved further up the page (within the sidebar), they're broken down the bonus they're in, and they show an icon indicating where they'll take you.

feature screenshot

Python pastebin supports prompting for input

July 18, 2022

The Python pastebin tool didn't used to support using the input command to prompt a user for input. Now it does!

Try it out here

feature screenshot

Editable Python snippets

July 5, 2022

Have you shared a runnable Python code snippet and wished that the person you shared it with could edit it to try something different? Now they can!

Pasted Python code snippets with the "Run" button enabled can now be edited. Try editing this Hello world example

feature screenshot

Article read time estimate

May 13, 2022

Sharing an article with a colleague?

Each Python Morsels article now includes an estimated read time.

feature screenshot

Python pastebin image previews

April 11, 2022

Posting a Python code snippet link in Slack? Or on LinkedIn, Twitter, or another social media site?

You'll see an image preview of your code show up!

feature screenshot

Run Python snippets in-browser

March 30, 2022

Sharing Python code and want to share the output as well?

You can now choose to allow running your Python code snippet right from inside the web browser (just make sure your code prints something so you can see the output).

This feature is brought to you by CPython's recent WebAssembly support in Python 3.11.

feature screenshot

Recommended next screencast

March 17, 2022

Watching/reading a screencast?

There sidebar now recommends a screencast to watch next.

feature screenshot

Python Pastebin for sharing Python code

March 11, 2022

Have you ever wished there was an easier way to share a snippet of Python code?

Python Morsels now includes a tool for that.

Just visit pym.dev/p and paste your Python code.

Here are a few example code snippets:

feature screenshot

Supported Python versions for screencasts

Feb. 23, 2022

Each Python Morsels screencast and article now lists the Python versions it works on.

If a feature was added in a newer Python version, you'll see that noted in the sidebar. You'll also be able to see if a feature no longer works in a newer Python version.

feature screenshot

Exercise descriptions and tags in the vault

Feb. 22, 2022

Every exercise in the exercise vault now has a short description.

You can also see topic tags for each exercise. Tags are hidden by default to avoid accidentally spoiling an exercise (sometimes half the value of an exercise is in figuring out the tools you might use to solve it).

feature screenshot

Table of Contents for screencasts and articles

Feb. 15, 2022

Python topics pages (both screencasts and articles without a video) now show a table of contents on the right side of the screen. You can treat this as an overview of what's coming up or use this to jump to a specific section in the article.

feature screenshot

Unrecommended bonuses hide themselves

Feb. 11, 2022

On the exercise submission page, when a bonus isn't recommended the text for that bonus will hide by default.

feature screenshot

Video playback speed is now sticky

Jan. 10, 2022

Do you watch my screencasts on 1.5x speed? If you do, you might notice that you've needed to change the playback speed on every video you watch. Not anymore!

Now whenever you change the playback speed on a video (while logged-in to your Python Morsels account), that speed preference will stick for other videos as well.

feature screenshot

Easier screencast navigation

Jan. 6, 2022

Ever visited the screencasts page and felt lost because there's just so much on that page?

It was a lot easier to scroll through a year ago, when there were only a couple dozen screencasts!

As of today, that page now shows links to individual topic trail pages as well as a search bar for searching screencasts more quickly.

feature screenshot

Schedule re-solves of past exercises

Dec. 27, 2021

Do you solve every bonus for every exercise? Most people don't. And that's okay!

If you'd like to play catch up on the new exercise resolve feature I added a few months back, you can schedule re-solves for exercises from your assignments page.

Note that scheduled re-solves are only sent to active subscribers. If you're cancelled or paused, you'll need to re-activate to receive re-solve reminders.

feature screenshot

Quick navigation on solution pages

Dec. 23, 2021

Now you can quickly jump between the base problem and each of the bonuses on the exercise solution walk through pages.

feature screenshot

Reminder to finish your current exercise

Dec. 14, 2021

If you start working on an exercise and then pause before locking-in your solution, after a few days you'll receive an email reminding you to finish up your work and reflect on your learning.

This new email reminder is intended to help you keep moving on.


Note supported Python versions

Dec. 6, 2021

The online tester now notes which version of Python it's running (3.10 currently) and the supported Python versions for each exercise are noted in the sidebar as you solve each exercise.

feature screenshot

Screencast Recommendations

Nov. 18, 2021

I officially announced screencasts as a permanent part of Python Morsels about a year ago.

At the time there were only a handful of screencasts. But we're quickly approaching 100 screencasts!

Figuring out what to watch next can be a challenge. To remedy this problem, we've just added weekly screencast recommendations.

In your weekly email each Monday, you'll now receive a recommendation for which screencast to watch next (based on your skill level).

You can also find your next 3 screencast recommendations on your dashboard page.

feature screenshot

Easier screencast reading (...reading?)

Nov. 8, 2021

All Python Morsels screencasts are meant to be either watched or read. The video and the accompanying blog post can be consumed interchangeably (in fact I recommend both watching and reading if you learn something new).

If you disable auto-expand on screencast videos you'll see that the video now shrinks up to the top right corner of the page, making it easier to consume screencasts as plain-ole-blog-posts.

feature screenshot

Search Python Morsels

Nov. 2, 2021

The Python assignments search feature (on your Assignments page) now includes exercise descriptions.

Also you can now optionally search for screencasts and topics pages.

The new search page is currently hiding at pythonmorsels.com/search but we plan to add a link in the top navigation bar soon.

Feel free to play around with the new search feature and let us know what you think.

feature screenshot

Re-solve starting from an existing solution

Oct. 14, 2021

We recently added exercise re-solving. When you reflect on an exercise, you'll be asked whether you'd like to re-solve that exercise later to get experience with something new you discovered after your first attempt.

Instead of starting from a completely blank solution, you can now re-solve starting from one of your current working (or not working) solutions.

feature screenshot

Python 3.10 Support

Oct. 10, 2021

On Monday October 4, Python 3.10 was released!

I spent quite a bit of time over the last week adding more solutions and more explanations to exercises that would benefit from Python 3.10 features (structural pattern matching, slots of dataclasses, and more).

In addition to Python 3.10-specific solutions, all automated tests now pass on Python 3.10 and the code tester in the web app now runs on Python 3.10.

Check out my What's great about Python 3.10 article if you're interested in what to look out for after upgrading.

Oh and also, check out the new Python 3.10 exercise path to get practice with a few Python 3.10 features! It's free for subscribers and $17 for non-subscribers.

feature screenshot

Easy Access Video Settings

Oct. 8, 2021

It's now even easier to customize your preferences for Python Morsels screencasts/video articles.

Just below each video you'll see toggles to control your preferences for video captions, auto-playing videos, and even whether you prefer to hide the video (and just the article text).

feature screenshot

Improved Dashboard

Oct. 6, 2021

The Python Morsels dashboard page is now a bit simpler and a bit more useful than before.

The first box on the dashboard will either:

  1. Nudge you to continue solving the exercise you're working on right now
  2. Encourage you to reflect on the exercise you just solved
  3. Recommend another exercise to solve

The second dashboard box recaps what you've accomplished. It notes how many exercises you've solved and how many screencasts you've watched.

Have ideas for what you'd like to see on the dashboard page? Email us your suggestion!

feature screenshot

Reflecting on what you've learned

Aug. 18, 2021

Learning isn't a straight line; it's more like a spiral (an upward spiral). Reflection is a really important part of completing the learning spiral from one loop to the next.

Many of you have been using reflection on your own to multiply your learning abilities while using Python Morsels. It's time that this finally became an official part of Python Morsels itself.

To that end, at the bottom of Trey's solution walk-through, there's now a learning reflection form.

feature screenshot

Syntax highlighting for code blocks

Aug. 2, 2021

Pretty much since the beginning of Python Morsels I've had this item in my to-do list:

  • Add syntax highlighting to the Python code blocks in exercise problem and solution statements

Enough of you have requested this that it's finally been done. All exercise problem and solution statements have syntax highlighting which matches the same color scheme as the code editor on exercise submission pages.

The articles shown at the ends of screencasts have syntax highlighting in their code blocks as well.

feature screenshot

Bonus recommendations by skill level

July 28, 2021

It's hard to not complete all the bonuses for an exercise, right? Even when some bonuses are much more challenging than others.

Sometimes, one bonus can turn a novice-level exercise into an advanced-level exercise. To make sure you don't get overwhelmed, Python Morsels now includes bonus recommendations for exercises that are in multiple skill levels.

If you receive an exercise in the Novice skill level, you'll get a lower maximum bonus recommendation than if you picked the same exercise from the Intermediate skill level. These are just recommendations of course, so you still don't need to complete all the recommended bonuses (and you can go further than the recommendation, but only if you're up for putting in extra time).

Bonuses that aren't recommended will show up in gray as you solve the exercise so you'll know that they're not recommended.

feature screenshot

Duplicate solutions

July 21, 2021

You're working on a Python Morsels exercise, you got the base problem working and now you'd like to attempt the first bonus. But you want to edit your code into something new without losing your current working code. You can now duplicate your solution!

If you hover over a solution a copy icon will appear (it looks like two pieces of paper, one on top of the other). Click it to duplicate your current solutiion.

feature screenshot

Links now open in new tabs

July 20, 2021

Ever clicked a hint link in an exercise problem statement or a link to a related article on a screencast page and wished the link had opened in a new tab/window (rather than navigating within the current tab)? Well, that's how exercise pages and screencast pages work now.

It might seem like a small change (and it is) but it's hopefully a handy one. No more accidentally navigating away from pages in the middle of writing code or in the middle of watching a screencast.


Preview paths before starting them

July 9, 2021

Not sure whether a particular exercise path is for you? You can now preview exercises with an exercise path before you start it.

You can also see which exercises you've already done from that path.

feature screenshot

Python 3.9 Supported

June 28, 2021

The web app now supports Python 3.9 solutions!

Python 3.9 has been out for over 6 months, but the Python Morsels web app hasn't had support Python 3.9-specific features.

We've changed the way we test code to make it easier to upgrade Python versions, so we should support Python 3.10-compatible code much sooner after its release (which should be later this year).

feature screenshot

Global Screencast Settings

June 21, 2021

You can now customize your screencast watching preferences site-wide.

Want to watch all Python Morsels screencasts with captions enabled by default? There's a setting for that!

Don't like clicking the "play" button and want to auto-play screencasts instead? There's a setting for that!

Or would you prefer to hide the videos and just read the text instead? There's a setting for that too!

feature screenshot

Topic Trails

May 19, 2021

Python Morsels now includes topic trails!

Topic trails are groups of screencasts that I recommend watching in a particular order.

You can watch topic trails from start to end or you can jump in part way through. Regardless of how you watch/read each screencast, these topic trails will show you the context of the current screencast you're watching in relation to other screencasts on the same topic.

feature screenshot

Problem text included in recommendation email

May 13, 2021

For all users with access to the exercise vault, you'll now see the problem statement in your exercise recommendation email each Monday.

Trial users will receive exercise previews and All Access users, you'll receive the full problem text in each week's email.

This has been the most commonly requested feature since we launched the All Access plan a few weeks ago and I'm excited that we've delivered on your requests.

feature screenshot

Newly revamped vault page

April 27, 2021

Each section of the vault page is now broken into sub-sections.

The first section, "in progress", shows exercises you're currently working on. The next section, "recommended", shows the next exercises we recommend solving. After that is "coming up", which are the rest of the unsolved exercises in that section.

There's also "done" for exercises you've solved and "skipped" for exercises you've skipped.

We hope this new layout is more helpful than the giant list of exercises that showed up previously.

feature screenshot

All Access Plan: see all exercises!

April 13, 2021

Users have requested this for 3 years and we finally made it happen.

There's now an All Access plan in Python Morsels. This plan grants access to the full exercise vault.

Just like Flexible Mode, this plan includes a weekly recommendation email.

The All Access plan replaces the Standard plan and it's $20/mo or $200/yr as well just like the Standard plan was. But if you sign up for the All Access plan by April 30, you'll save $50 each year. See more on the All Access plan sale here.

feature screenshot

Preview more exercises

April 10, 2021

Previously Flexible Mode users could preview the next 3 exercises in each skill level. Now you can preview the next 5 exercises!

There's also a "See what's coming up" link which will show titles for all current exercises in each skill level.

feature screenshot

All new users have Flexible Mode enabled by default

Feb. 24, 2021

Flexible Mode, as announced a couple months ago, allows you to choose your own exercises and use a point system to help you track your progress.

Flexible Mode is now enabled for all new accounts. So if you signed up since the day of this announcement, you're already in Flexible Mode!

If you haven't already enabled Flexible Mode, you can find out more about Flexible Mode (and enable it) here.

feature screenshot

Screencast watching and topic reading is automatic now

Feb. 12, 2021

When you finish watching a screencast while logged-in, the little "Watched" toggle will automatically flip and if you have Flexible Mode enabled, you'll get 4 points.

When you scroll all the way to the end of a topics page the "Read" toggle will also flip the same way.

feature screenshot

Better profile pages for Flexible Mode users

Feb. 12, 2021

If you enable Flexible Mode on your account, your profile page will now show your points on your account.

feature screenshot

Submission Page Improvements

Jan. 29, 2021

You might notice the exercise submission page looks a bit different. The styling and wording has improved some over the last week, but there's also a couple new features.

The "Test Failures" tab (previously called "View Test Output") now shows the number of failing test cases (including the bonuses). The smaller that number is, the more test methods are passing.

For Flexible Mode users, the points shown when submitting an exercise are also a bit simpler than before. Previously all points you'd received for that exercise would be shown each time you submitted it. Now only the new points are shown.

feature screenshot

Screencast recommendations

Jan. 5, 2021

The dashboard page now shows recommendations for which screencast to watch next.

The recommendations are for an early unwatched screencast as well as the latest couple screencasts.

feature screenshot

Points to help your goal tracking

Jan. 4, 2021

If you have Flexible Mode enabled, you'll now receive points for exercises when you solve exercises, watch screencasts, and keep up your learning habit.

You'll get up to 25 points for each exercise solved, 4 points for each screencast watched, and up to 24 habit points every fortnight (14 days) for keeping up your learning habit.

You can see more on how points work on on the points help page.

You'll need Flexible Mode enabled to start earning points.

feature screenshot

Flexible Mode (beta)

Dec. 29, 2020

Currently all Python Morsels users get an automatically-assigned exercise every week. If I send you an exercise you don't like, you're stuck with it (though you can always email to ask for a different one).

Flexible Mode adds some flexibility to your weekly (or monthly) exercise routine. With Flexible Mode enabled, you'll get 1 exercise credit each week as well as a suggestion for which exercise to solve next.

If you're not interested in my suggested exercise, you can skip it and choose a different exercise instead.

You can even sample exercises from different skill levels.

This feature is currently in beta and can only be enabled from this page.

If you try this feature out, I'd love to hear your feedback on it.

feature screenshot

Keep track of which screencasts you've watched

Dec. 8, 2020

You can now keep track of which screencasts you've watched already. At the moment this is just a simple toggle to make it easier to spot which screencasts you haven't seen yet, but this feature will likely get a bit smarter later on.

feature screenshot

Weekly Screencasts

Nov. 30, 2020

It's official: Python Morsels now includes weekly screencasts. Whether you're on the monthly exercise Lite plan or the weekly exercise Standard plan, your Python Morsels subscription will now include access to a growing number of screencasts.

Some screencasts will be free for all and some will be premium, just for subscribers. I'm committing to publishing at least one new screencast every week. Each screencast will be between 1 and 5 minutes long. You can find more info on this announcement here.


Annual Lite plan

Nov. 30, 2020

Earlier this year we added a Lite plan to Python Morsels which includes one exercise per month (a more manageable habit for most than one per week).

There's now an annual version of the Lite plan. You can save 17% off the monthly Lite plan (2 months free every 12 months) by switching to annual billing.


Screencasts Page

Nov. 13, 2020

Missed checking in on Python Morsels screencasts for a couple months and want to see what's new? You can now easily browse all Python Morsels screencasts from the screencasts page!

You can find this page in the Watch link in the top navigation bar.

feature screenshot

New features and screencasts announced in each email

Oct. 26, 2020

Each problem email will note new additions to the website that were added in the last week.

These additions might be new features (like this new feature) or new screencasts.

feature screenshot

Gift Python Morsels to a friend via exercise credit bundles

Oct. 15, 2020

Want to gift Python Morsels to a friend? You can now!

You can now purchase redemption codes worth 12, 25, or 52 exercise credits.

You can send an exercise bundle to a friend or redeem one for yourself.

feature screenshot

Share your progress on social media

Sept. 30, 2020

There's now a button on each exercise submission page that you can use to share your progress on Twitter!

feature screenshot

Added public profile pages

Sept. 16, 2020

You can now share your achievements with friends, colleagues, and future employers.

feature screenshot

Multiple versions of exercises

Aug. 3, 2020

You can now save many different solutions to the same exercise, giving each version a unique name to help yourself keep track of each different way you've solved the exercise.

Want to try out a different approach? Start a new version! You can always delete it later.

feature screenshot

Added topic-based "exercise paths"

July 14, 2020

In addition to the usual skill levels, you can choose to work through short exercise paths on specific Python topics.

This is a way to get deeper practice in one particular Python topic over a number of weeks. There are both novice-level paths and intermediate/advanced-level paths on many topics, including classes, command-line interfaces, decorators, iterators, and even descriptors.

You can find the exercises paths over on the paths page.

feature screenshot

Improved pause/resume feature with credit-based system

June 16, 2020

The pause feature used to be pretty buggy. It would attempt to extend your term end date appropriately whenever you resumed your subscription and it (unfortunately) failed to do so quite frequently.

After discovering that our payment processor didn't actually support our use case for their "paused" billing state, we decided to implement a credit-based system which grants 1 credit each week you're paused.

This means your next billing date never changes based on your pause date but you will be able to retrieve the exercises you've paid for.


Added dashboard page for quick account overview

May 27, 2020

The exercises list is handy, but it can be hard to navigate once you have a lot of exercises... especially if you've fallen behind on your exercises.

The new dashboard page showcases the exercise you should care about right now.

feature screenshot

The exercise submission page was greatly improved

May 17, 2020

The automated test failures are now grouped into base, bonus 1, bonus 2, etc.

Also the traceback for failing tests includes linked method names which will jump right to the failing test method within the test file.

feature screenshot

The Topics section was revamped and expanded

May 7, 2020

There used to be just a few topics pages.

Now there's more, with even more on the way soon.

Also be on the lookout for screencasts, which will be starting to pop up on topics pages over the next few months.


98% of all Python Morsels exercises now have helpful hint links

April 20, 2020

The exercises didn't used to have any hints. After about 6 months of deliberate work adding hints to each exercise, they pretty much all have helpful hint links now!

feature screenshot

Added new income level-based discounts for Python Morsels

March 30, 2020

There used to be two discount options: student discounts and a 50% off discount for folks outside of the top 50 countries by nominal GDP per capita.

We now have an income-based discount system instead and there's also a new discount request process which makes it a bit easier to get a discount appropriate for your needs.

feature screenshot

Solution import feature

Feb. 6, 2020

If you've been working on exercises on your own machine and you don't want to copy-paste all your solutions into the web app, you can now bulk import your solutions into the Python Morsels web app.

feature screenshot

Exercise search feature added to exercise list page

Feb. 4, 2020

Looking for that one exercise that mentioned functools.total_ordering?

You can use the new search feature for that!

feature screenshot

The web app launches

Sept. 1, 2018

Python Morsels existed for over 6 months without a web interface!