Posts
All the articles I've posted.
Refactoring Analogies
Published:7 min readRefactoring can be hard to explain to stakeholders who don't code. Using analogies from home improvement and organization, I share how I communicate the value of refactoring to non-technical audiences.
Two Trains Talk
Published:1 min readI gave a talk using the "two trains" analogy to explain technical debt and refactoring. The response was so positive that I wrote it up as a blog post, complete with slides and speaker notes.
Strategies for Writing Useful Tests
Published:9 min readI used to hate writing tests—they felt like a waste of time, took forever to run, and broke constantly. Now I actually enjoy it. Here are the strategies that transformed my approach to testing from dread to delight.
How to Land the Right Tech Job for You
Published:21 min readJob hunting can feel like shopping for a new car—exciting at first, then intimidating and hopeless. Having been both a candidate and an interviewer, I've put together this comprehensive guide to help you navigate the process and land the right tech job.
How to Prepare for Talks
Published:6 min readPreparing for a technical talk can feel overwhelming, but I've learned something new every time I've given one. This 11-step process covers everything from choosing a topic to handling Q&A, helping you go from idea to presentation.
Answers to Django Security Questions
Published:9 min readI found a list of Django security questions but couldn't find clear answers anywhere. So I dug in and wrote them myself, covering everything from CSRF and SQL injection to password hashing and mass assignment.
Using Bandit in the Field
Published:7 min readAfter talking about Bandit, I wanted to see how it actually performed in the real world. This post shares my experience using Bandit to find vulnerabilities in Python projects and practical tips for integrating it into your workflow.
Finding Vulnerabilities with Bandit
Published:2 min readPython's dynamic nature makes it hard to catch security vulnerabilities statically. Bandit scans your Python code for common security issues. Learn how to use it to find problems before they reach production.
10 Software Talks to Listen to on Your Way to Work
Published:6 min readI felt like I didn't know enough as a developer, so I started listening to conference talks on my commute. Here are ten of my favorites that genuinely changed how I think about building software.
Dangerous Python Functions, Part 2
Originally:updated Feb 21, 20266 min readIn part 2 of my dangerous Python functions series, I cover more risky functions like pickle.loads(), yaml.load(), and tempfile.mktemp(). These can lead to code execution, deserialization attacks, and race conditions.