Posts
All the articles I've posted.
Dangerous Python Functions, Part 3
Published: at 01:33 PMIn the final part of my dangerous Python functions series, I cover more security risks including assert statements, XML parsing vulnerabilities, and unsafe input handling. Plus, I've turned the whole series into a deck of cards!
DevOps from Scratch, Part 2: Amazon & Terraform
Published: at 12:32 PMIn part 2 of my DevOps from Scratch series, we'll take our Flask app from local development to production on AWS using Terraform for infrastructure automation and Ansible for deployment.
DevOps from Scratch, Part 1: Vagrant & Ansible
Published: at 12:32 PMEver wondered how to build and deploy a web app from scratch? This is the first part of my 'DevOps from Scratch' series, where we'll get hands-on with Vagrant and Ansible to automate our local development setup for a Python web application.
Refactoring Analogies
Published: at 06:54 AMRefactoring 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: at 03:50 PMI 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: at 06:54 AMI 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: at 12:45 PMJob 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: at 02:09 PMPreparing 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: at 06:56 AMI 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: at 03:17 PMAfter 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.