MP 88: It's never too late to start a good updating habit. I'll be the first to admit, I don't stay on top of updates nearly as well as I should. The libraries and tools I use most often have gotten good enough that I can usually coast on older| Mostly Python
MP 148: How small can a minimum reproducible example be? Note:My workload has increased over the last month, and I haven't had time to finish the current debugging series. It should be wrapped up in a few more posts, and those posts should come out over the| Mostly Python
MP 147: How do you clean up when you have too many Pythons lying around? About a year and a half ago, I wrote a post about how to update the version of Python you're using locally. I was hoping that would be a guide I could refer back to,| Mostly Python
MP 146: What happens when the bug actually is in one of your project's dependencies? Note: This post is part of an ongoing series about debugging in Python. The posts in this series will only be available to paid subscribers for the first 6 weeks. After that they will be| Mostly Python
MP 44: Providing different ways to represent instances of a class.| Mostly Python
MP 58: Yes, but not for the reason I originally thought.| Mostly Python
MP 145: Why third-party code appears in tracebacks, and what you can learn from it. Note: This post is part of an ongoing series about debugging in Python. The posts in this series will only be available to paid subscribers for the first 6 weeks. After that they will be| Mostly Python
MP 144: What happens when you fix a bug, only to find another bug right away? Note: This post is part of an ongoing series about debugging in Python. The posts in this series will only be available to paid subscribers for the first 6 weeks. After that they will| Mostly Python
MP 143: How do you find a bug in a larger project? Note: This post is part of an ongoing series about debugging in Python. The posts in this series will only be available to paid subscribers for the first 6 weeks. After that they will be available to everyone.| Mostly Python
MP 142: Conference "open spaces" are a great place to get valuable feedback about new projects. Note: The debugging series will continue shortly. I spent a full week at PyCon, and my son graduated from middle school the day after I got back. Life has| Mostly Python
MP 141: Advice from a climbing guide that's quite relevant to programming. Note: The debugging series will continue shortly. I'm busy getting ready for PyCon, and haven't had time to finish the next post in that series yet. Since moving to North Carolina last fall, I've been getting back into| Mostly Python
MP 140: How can we take a systematic approach to a "simple" bug? Note: This post is part of an ongoing series about debugging in Python. The posts in this series will only be available to paid subscribers for the first 6 weeks. After that they will be available to| Mostly Python
Debugging is a critical skill for every programmer, yet it's often left to individuals to figure it out on their own. Experience definitely plays a significant role in debugging, but there's also a lot people can learn about debugging without having to wait for the next bug to appear in| Mostly Python
MP 139: A systematic, inquisitive approach makes debugging simple issues easier, and complex bugs possible. Note: This post is part of an ongoing series about debugging in Python. The posts in this series will only be available to paid subscribers for the first 6 weeks. After that they will be| Mostly Python
MP 138: Debugging is often learned "on the job", but you can learn a lot with structured practice. Note: This is the first post in a series about debugging. This post is free to everyone, but the remainder of the series will be available to paid subscribers only for the| Mostly Python
MP 137: I just learned about the webbrowser module; maybe it can save you some work as well. Note: I'll start a new series about debugging on Thursday, April 3. The series will cover a variety of debugging tools and techniques, and will also offer a focused way to practice| Mostly Python
MP 136: I don't use it often, but I keep coming back to it. The walrus operator was introduced in Python 3.8, back in 2019. I haven't used it often over the last five years, but occasionally I find myself writing some code that looks a little verbose, and| Mostly Python
MP 135: They're focused on .gov right now, but I'm pretty sure they're coming for all of us. I can't believe I have to use the name DOGE seriously. When I first heard a new government organization would be formed with that| Mostly Python
MP 134: Be careful about performance assumptions until you measure them! Note: In the next few weeks, I'm going to slow the pace slightly on Mostly Python. I've been writing at least one post per week for two full years now. I really enjoy writing these posts, but that's become| Mostly Python
MP 132: It's a simple built-in function, but using it isn't as straightforward as it might seem. A task that's come up repeatedly in my programming work involves looking through a collection of values, and taking an action if a specific item appears anywhere in that collection. There's a way| Mostly Python
MP 116: ...and into the fire, as the saying goes. Note: I think this post was published yesterday, but not sent as an email to anyone. If you received this twice as an email, I apologize. Mostly Python just passed 5,000 subscribers, which required an update to my Ghost| Mostly Python
MP 115: A surprise trip to the ICU instead of a planned trip to DjangoCon. Content notice: Discussion of a serious medical event; the discussion is not overly graphic. This week has gone a lot different than planned. I was supposed to be at DjangoCon this week, but instead I| Mostly Python
Most Django tutorials and resources start by running two commands: django-admin startproject, followed by manage.py startapp. This is a reasonable way for experienced Django developers to start new projects, because it sets up an overall structure that makes sense for most web apps. This approach is not necessarily best,| Mostly Python
MP 103: Generating sample data for local development. Note: This is the eleventh post in a series about building a full Django project, starting with a single file. This series will be free to everyone, as soon as each post comes out. The BlogMaker Lite project is coming along nicely,| Mostly Python
MP 101: Adding a page for each individual blog. Note: This is the ninth post in a series about building a full Django project, starting with a single file. This series will be free to everyone, as soon as each post comes out. At this point the BlogMaker Lite project| Mostly Python
MP 98: Incorporating a minimal CSS framework, and adding custom styles. Note: This is the seventh post in a series about building a full Django project, starting with a single file. This series will be free to everyone, as soon as each post comes out. When you're building out a| Mostly Python
MP 95: Modeling blog posts, and retrieving specific data from the database. Note: This is the fifth post in a series about building a full Django project, starting with a single file. This series will be free to everyone, as soon as each post comes out. In the last post| Mostly Python
MP 94: Modeling data, and working with a database. Note: This is the fourth post in a series about building a full Django project, starting with a single file. This series will be free to everyone, as soon as each post comes out. In the last post we used Django's| Mostly Python
MP 92: A better home page, using templates. Note: This is the third post in a series about building a full Django project, starting with a single file. This series will be free to everyone, as soon as each post comes out. In the last post we wrote a single| Mostly Python
MP 91: A single file, serving a basic version of the project's home page. Note: This is the second post in a series about building a full Django project, starting with a single file. This series will be free to everyone, as soon as each post comes out. In this| Mostly Python
MP 87: What are they, and why should you use them? Note: I've been working on the styling of code blocks in technical posts. They should look better than they did previously, and be more aligned with what's discussed in the text. There's still some work to do; if they're| Mostly Python