Try This if You Don’t Like Python’s Exception Handling | Issue #30


Hi there,

If you’ve ever wished Python was more like Rust when it comes to handling errors, I have good news! Well, almost. 😉

In this week’s video, I introduce the returns package—a functional programming library that handles errors without exceptions. The Maybe and Result containers make error handling smooth, while railway-oriented programming keeps your code on track.

But before you dive in, there’s a catch: this approach can add complexity, and it’s not ideal for every project. Watch the video to learn how returns could (or might not) work for you!


Enjoy the video and happy coding!

Cheers,

Arjan

# News

See Squish in Action: Automate Your UI Tests with Ease

Still dealing with slow, manual testing processes? Today’s sponsor, Squish, can help you automate complex UI tests across multiple platforms—quickly and effectively.

What Squish offers:

✅ Supports Java, Windows, mobile, and more.

✅ Reduces test maintenance with adaptable scripting.

✅ Compatible with all leading CI/CD tools.

✅ Enhance test coverage with minimal effort.

Discover how Squish can optimize your testing. Click here to take their tour and see how it works in real-world scenarios!

You Want Modules, Not Microservices

Thinking of diving into microservices? Ted Neward’s article, makes a compelling case for sticking with modules. While microservices promise flexibility, they often come with heavy complexity—distributed systems, latency, data consistency issues—that don’t always pay off.

For many projects, a well-structured modular monolith can offer the benefits without the added headache. Curious? 👉 Check out the full article here.

Malicious Package Found Stealing AWS Keys from Thousands of Developers

Security heads-up! 🚨 A new malicious PyPI package named "fabrice" has been discovered, targeting developers by embedding harmful code right in the package.

Once installed, it opens the door for remote attackers to compromise your system and data. If you or your team work with Python packages, now’s a great time to double-check dependencies and stay vigilant. Get the full details in the article here.

# Community

Our Discord community recently had a great conversation about managing JWT (JSON Web Token) refresh, tackling questions like whether to check for token expiry on each request, the pros and cons of handling it client-side vs. server-side, and alternatives for session management. Members shared insights on using tools like Flask, Supabase, and Firebase, exploring the security and technical considerations behind each approach.

Curious to read more and join the discussion? 🤓💬 Head over to our Discord server, where these in-depth conversations are happening every day!

P.S. Last week, I shared a thread about Advent of Code —a fantastic programming challenge where you solve 25 puzzles to help Santa 🎅. It’s not too late to join, and many of you loved the thread! Click here to dive into the fun and test your skills! 🎄


Do you enjoy my content on YouTube and would you like to dive in deeper? Check out my online courses below. They've helped thousands of developers take the next step in their careers.

🚀 The Mindset Online Course Series

The goal of this series is to help junior developers grow their skills to become senior developers faster.

💥 Other Courses

💡 If you’re part of a development team at a company, I offer special packages for companies that give your team the tools to consistently write high-quality code and dramatically increase your team's productivity.

Unsubscribe | Send by ArjanCodes

Wolvenplein 25, Utrecht, UT 3512 CK

The Friday Loop

Every Friday, you'll get a recap of the most important and exciting Python and coding news. The Friday Loop also keeps everyone posted on new ArjanCodes courses and any limited offers coming up.

Read more from The Friday Loop

Sometimes your code fails, you change absolutely nothing, and on the next run everything works again. If that sounds familiar, this week’s video is for you. These kinds of failures usually have nothing to do with bad code. They come from the outside world: APIs that time out, networks that briefly misbehave, or LLMs that occasionally return something almost structured, but not quite. It’s frustrating, because the failure feels random, and those types of failures are really annoying to debug!...

If you’ve ever opened a function and instantly regretted it… this week’s video is for you. I’m talking about those legendary functions: ten levels of indentation, contradictory conditions, duplicate branches, mysterious try/except blocks, and business logic so unclear that nobody knows what it actually does anymore. I start with a really messy example and walk through the exact process I use to refactor it safely. You’ll see how to create characterization tests so you don’t break existing...

Have you ever written a Python script that felt slow, even though the logic was simple? Sometimes it’s not the efficiency of your code that's the problem, it’s when your code does its work. This week’s video is all about the Lazy Loading design pattern, and I think many developers underestimate how powerful (and practical) it is. I start with a real example: loading a huge CSV file that freezes your program for 10 seconds before doing anything useful. Then, step by step, we improve it using:...