Rodrigo Girão Serrão 🐍🚀
banner
mathspp.com
Rodrigo Girão Serrão 🐍🚀
@mathspp.com
I'll help you take your Python skills to the next level!

Get a daily drop of Python knowledge 🐍💧 -> https://mathspp.com/drops

Pydon'ts – free Python book 👉 https://mathspp.com/books/pydonts
Oh this is fun :D
November 12, 2025 at 1:40 AM
Also, remember:

⛔️ NEVER use `assert` with security-related or sensitive checks!

Like, never.

That's a sure-fire way of running into problems because `assert`s can be “turned off”...

And you don't want someone stealing your bank details because an `assert` didn't run!
November 11, 2025 at 2:19 PM
In front of the expression, add a comma and then a custom string.

That custom string is the error message that will show up in front of the `AssertionError` if the assertion fails during runtime.

Make sure it's a good error message with helpful context!
November 11, 2025 at 2:19 PM
I was thinking about those 6, yeah: upper, lower, title, capitalize, casefold, swapcase
November 10, 2025 at 5:44 PM
Oh no! That's the type of bug I would take ages to find...
November 10, 2025 at 5:44 PM
For example, ALL functions are Truthy, regardless of what they do.

Even a function that does nothing is Truthy.

```py
def foo():
pass

print(bool(foo)) # True
```

(By the way, you can check the Truthy/Falsy value of something with the built-in `bool`.)
November 10, 2025 at 10:54 AM
Then, all other values are “Truthy”.

E.g., the empty list is Falsy but any other list is Truthy.

So, you can use the Truthy/Falsy value of a list to check if it's empty.

This is very idiomatic in Python.

Some other types don't have Falsy values!
November 10, 2025 at 10:54 AM
I’ll write more about it tomorrow in my insider newsletter.

(Link in the bio.)

I’ll also share some examples so you can see what I’m talking about.
November 9, 2025 at 5:48 PM
You'll learn to

👉 one-shot data (de)compression;
👉 write and read from compressed files; and
👉 compress and decompress data incrementally.

These are the most common and simpler scenarios.

If you want to give it a read, you can check it here: mathspp.com/blog/module...
Module compression overview
A high-level overview of how to use the module compression, new in Python 3.14.
mathspp.com
November 8, 2025 at 12:02 AM
The five modules have some pretty similar APIs...

Which was expected, since their purposes are essentially the same.

So, I wrote a short article that provides an overview of how to compress/decompress data using `compression`.
November 8, 2025 at 12:02 AM
But `zstd` is a brand new compression module added in Python 3.14.

All of these modules can be accessed from `compression`:

```py
from compression import bz2, gzip, lzma, zlib, zstd
```

The older 4 can still be imported directly:

```py
import bz2, gzip, lzma, zlib
```
November 8, 2025 at 12:02 AM
You still have some time to come up with that third idea.
November 7, 2025 at 2:26 PM
They allow you to avoid using multiple `if` statements to append portions of the result to a final result string.

By using these fragments (and by using empty strings when the fragments are unnecessary), you keep your code flatter and cleaner.
November 7, 2025 at 2:25 PM
I still have to submit my proposals! good job doing that early. I’ll likely end up doing it last minute, as per usual 😒
November 6, 2025 at 11:25 PM
A similar thing happened to me the other day. Thankfully, it was just a 2 minute video, not a 30 minute one D:
November 6, 2025 at 2:41 PM
Forgot to link to the issue/article from which I got the idea:

simonw.substack.com/p/building-a...
Building a tool to copy-paste share terminal sessions using Claude Code for web
Plus Living dangerously with Claude, and prompt injection risks for ChatGPT Atlas
simonw.substack.com
November 6, 2025 at 12:03 PM
It's essentially a directory of standalone HTML files, yes.

My repo: github.com/mathspp/tools

It's a dumbed down/simplified version of github.com/simonw/tools

The tools live online at tools.mathspp.com
November 5, 2025 at 10:03 PM