Syntax Error #16: Crossroads and recap

Time to recap what I've shared over the past 15 issues and take a break from the newsletter for now.

Happy 17th!

We've reached the second half of the year and almost all of my colleagues are enjoying summer holidays while I've been working on features and fixes in a lovely silence (no meetings, yay!).

I also feel like we've come to a crossroad (Jimmy Carr would point out to me that it is not a crossroads but in fact a T-junction) with this newsletter. After this month's issue, I'm gonna take a break from it for undetermined duration. I love writing it but I feel like I've said the things I wanted to say when I started this newsletter and I don't want to "create content" for the sake of creating content.

Rather, I want to share genuine learnings and experiences when I have something worth sharing.

If you want to follow my other, less debugging related writing, I have a blog at https://hamatti.org for which I provide a RSS feed for your convenience. In August, I will be writing daily posts about Python's standard library in a series called Batteries included as part of this year's Blaugust blogging festival.

Once I have new debugging tricks and tips to share, I'll be back in your inbox or RSS feed with the ducks.


Recap of the previous 15 issues

To wrap up this current run, I want to create a catalogue of the good tips I've shared on this newsletter. Clicking on the heading will take you to the full issue.

#1: Welcome

In February 2023, Syntax Error got kickstarted with a general overview on how I think about debugging and how I approach the process: don' make guesses, stop and take a step back and make sure you can reproduce the issue.

#2: print it like a boss

I love printing as a debugging tool for various reasons but the biggest one is that it has the lowest level of friction: you don't need to install or configure anything and it only takes a few seconds to write a print statement to see what's happening in your code.

#3: Who let the ducks out?

Talking to ducks – also known as rubber duck debugging – is a very valid and effective strategy that can save your colleagues an interruption or two. I always keep a duck with me for emergency debugging sessions (and emotional support).

#4: Refreshing wrong window

I'm willing to be most of us have been there: we make changes we think will fix the bug but nothing gets fixed when we refresh the app. Only to realize that we had a different version of the app open.

#5: Python breakpoints

Python has very powerful debugger tooling ecosystem and choosing which one to use at any point can be changed with an environment value.

#6: Debugging CSS

Last summer I shared a few tips from my CSS debugging toolkit to help figure out why the layout or styling is a bit off.

#7: [one that I forgot to title]

I shared a practical example of a bug in Javascript code and how to figure out where it happens and why.

#8: What we can learn from hardware debugging?

Learning from adjacent fields of expertise can bring up new insights into our daily grind. In this issue, I took a look at how some hardware developers debug their issues and what we can learn from them.

#9: Distilling the minimum example

Software is complex which hides problems very well. Creating a small, reproducible example not only helps others help you find solution but it often can help you figure it out in the process before you even need to ask.

#10: Debugging knowledge base

Inspired by playbooks, incident reports and post-mortems popular in SRE (site reliability engineering) teams, I envisioned ideas for how to document debugging sessions in a way that can be helpful for the team.

#11: Debugging Python

My write-up from a conference talk that I performed in PyCon Sweden and archipylago events introduces you to the mindsets and Python-spesific tools to help you become more efficient in finding your bugs.

#12: Browser Extension Debugging

To celebrate the first birthday of this newsletter, I jumped over at the world of browser extensions and shared tools and workflows to help develop and debug issues.

#13: Playgrounds

Online playgrounds offer a way to run and share code snippets in browser which makes them very powerful in shared debugging.

#14: I don't know

Assumptions, assumptions, assumptions. They always sneakily find their way to our decision-making process no matter how hard we try to keep them out. But it is so important to leave them at the door and say "I don't know" when starting a debugging session.

#15: Walking the walk

Finally last month, I shared my own experience of dealing with bugs while navigating a new workplace and managing stress that stems from them both.

Lately I've been feeling that with a new code base, every problem is a debugging problem. Even when developing new features, the first step is always figuring out what happens currently and how the data flows.


Thanks for sharing this journey with me so far! It's been a lot of fun to share my experiences and ideas to an audience that appreciates them.

Have a wonderful summer and I hope to connect with you again sometime in the future!

To finish this off, I wanna share Raphael Michel's talk Fast on my machine: How to debug slow requests in production from the most recent DjangoCon Europe where he talks about how to debug things when they work well on the development environment but are slow on production.


Syntax Error is created with love by Juhis. If you liked it, why not share it with a friend? Or if you have any feedback or just want to say hi, hit reply. I'm always happy to hear from my readers and learn about what you do and how you debug your issues.

Subscribe to Syntax Error

Sign up now to get access to the library of members-only issues.
Jamie Larson
Subscribe