Archives
All the articles I've posted.
I made a game with AI and I don't know how to feel about it
Published: at 11:00 PMI spent $20 on Cursor to build a game and realized the actual game was building the game itself.
The AI Prisoner's Dilemma
Published: at 09:44 PMTwo years ago I wrote 90-100% of my code by hand. Today it's maybe 30%. We might all be trapped in what I'm calling the AI prisoner's dilemma.
Know where you're going (and be open to change)
Published: at 10:30 PMHow having clear direction while remaining open to change shaped my journey from film school to software engineering, and why both focus and flexibility matter in any career.
Jekyll to Astro: an AI-assisted migration
Published: at 10:00 AMHow I used AI tools to migrate 43 blog posts to Astro, with real examples and lessons from both successful and failed approaches
In Python, Rose == 'Red', Violet is not 'Blue'
Published: at 09:57 AMA deep dive into Python's string interning behavior, exploring why identical strings sometimes share memory locations and why this matters for performance and correctness.
Personal Finance for Software Engineers
Published: at 09:25 AMLearning about personal finance can change your life for the better. As a software engineer, I love learning about systems, and personal finance is a system that affects us all.
Launching Effective One-on-One Meetings
Published: at 06:41 AMWhen I took over one-on-ones for a team engineers at Amazon, I needed a framework to make these meetings valuable. Here's the template I've refined over 20+ introductory sessions.
The Quadrant Test
Published: at 07:22 PMA simple but effective framework for making difficult career decisions, based on evaluating best and worst case scenarios in both short and long term.
Tech Interview Tips and Strategies
Published: at 12:53 PMPreparing for technical interviews can feel overwhelming! There's so much to learn and keep in mind. Here's what I've learned from running mock interviews and offering feedback.
Senior Engineer Job Search Preparation
Published: at 12:53 PMA detailed guide to preparing for senior engineering interviews, based on my experience interviewing at major tech companies in 2022.
My Experience with the Amazon Promotion Process
Published: at 10:20 AMWhen I started at Amazon, the promotion process felt like a mystery. Here's what I learned about why Amazon takes a cautious approach to promotions and how I navigated the two-year journey.
Backfill Considerations
Published: at 03:20 AMPlanning a data backfill? Here are the key considerations: impact assessment, rollback strategies, monitoring, and how to avoid common pitfalls that can bring down production systems.
Reflections on my Amazon Career
Published: at 12:57 AMAfter four years at Amazon, I wanted to learn what made Amazon successful across so many industries. Here's what I learned about engineering culture and Leadership Principles during my time there.
Giving Feedback When You're New
Published: at 01:53 PMHow to give effective feedback as a new team member: building trust, asking good questions, and providing constructive input without overstepping boundaries.
Load Testing at Scale and Lessons Learned
Published: at 12:00 PMLessons learned from designing and testing a service to handle hundreds of thousands of requests per second, including practical strategies for load testing at scale.
Getting Unstuck
Published: at 01:00 PMThrough the years of talking with engineers in one-on-ones, there's a common conversation about asking for help: How do I find what I need if I don't know where to look?
My Path to Software Engineering
Published: at 12:35 PMI've gone between software engineering and film for most of my career. People often wonder about my unusual career path so I'd like to share how I wound up here.
The Princess and the Pea
Published: at 09:35 AMLike the princess who could feel a pea through twenty mattresses, sometimes being sensitive to small problems is exactly what teams need to prevent bigger issues.
Don't Just Bake Me a Cake
Published: at 03:35 AMIn design, it can be frustrating to receive a cake - a finished product that can't change. Instead, I find it more effective to include examples of the forks in the road and alternatives.
An Intro to AWS Certifications
Published: at 01:23 PMI'm skeptical of certification programs, especially in the software industry. AWS certifications seemed different because they focus on how to build scalable and reliable services.
AWS Certified Solutions Architect - Associate Notes
Published: at 09:23 AMStudy guide for the AWS Solutions Architect Associate exam: key services to master, hands-on labs to complete, and practical tips for passing on your first attempt.
More Code Review Best Practices
Published: at 01:54 PMAdditional insights on code reviews: handling disagreements, managing review fatigue, and creating a positive review culture on your team.
What is Churning and Why Should I Care?
Published: at 05:32 AMA few years ago, I started researching credit card bonuses and it's become a hobby. Here's what I've learned about churning and why it can be valuable.
Programmer Resources
Published: at 03:50 PMThe books, blogs, and tools that have helped me grow as a software engineer. From Clean Code to system design resources, here's what I keep coming back to.
Dangerous Python Functions, Part 3
Published: at 09:30 AMUpdates on Python security: new vulnerabilities discovered in PyYAML and other libraries, plus community feedback on dangerous function usage.
The Two Trains and Other Refactoring Analogies
Published: at 02:18 PMLegacy code can be intimidating for software developers. It can be difficult to change and work with, and may not have any tests. Here's how we can address it with a two-step process.
DevOps from Scratch, Part 1: Vagrant & Ansible
Published: at 12:32 PMLearn to automate your infrastructure from scratch using Vagrant and Ansible. We'll build and deploy a Python web application to Amazon, step by step.
DevOps from Scratch, Part 2: Amazon & Terraform
Published: at 12:32 PMLearn how to deploy applications to AWS and automate infrastructure with Terraform
Two Trains Talk
Published: at 08:54 AMWhy technical debt is like two trains heading toward each other: the longer you wait to address it, the more catastrophic the collision becomes.
Strategies for Writing Useful Tests
Published: at 06:54 AMWriting tests can be challenging. What should we test? How do we know if our tests are valuable? Here's what I've learned about writing maintainable and effective tests.
How to Land the Right Tech Job for You [updated in 2018]
Published: at 12:45 PMHow to land the right tech job for you
How to Prepare for Talks
Published: at 02:09 PMMy step-by-step process for preparing technical talks: from initial brainstorming and outline creation to practice sessions and handling Q&A.
Answers to Django Security Questions
Published: at 06:56 AMAnswers to the Django security questions I get asked most often: CSRF protection, SQL injection prevention, secure sessions, and authentication gotchas.
10 Software Talks to Listen to on Your Way to Work
Published: at 03:17 PMSoftware talks that changed how I think about code. Rich Hickey on simplicity, Bret Victor on the future of programming, and eight others worth your time.
Finding Vulnerabilities with Bandit Talk
Published: at 06:23 AMHow to use Bandit to automatically scan Python codebases for security vulnerabilities: setup, configuration, and integrating security checks into your development workflow.
Using Bandit in the Field
Published: at 03:17 PMReal-world experience using Bandit to scan Python codebases for security vulnerabilities. What works, what doesn't, and how to integrate it into your workflow.
Dangerous Python Functions, Part 2
Published: at 08:22 AMMore Python functions that can introduce security vulnerabilities, including pickle, PyYAML, and SQL injection risks. Learn how to use them safely.
The Sunglasses Scam
Published: at 02:09 PMA story about an accidental scam in Ragnarok Online and what it taught me about human psychology
Dangerous Python Functions, Part 1
Published: at 12:54 PMPython functions like eval(), exec(), and input() can create serious security vulnerabilities. Here's how to identify and avoid these dangerous patterns in your code.
Intro to Code Reviews talk
Published: at 08:54 AMGetting started with code reviews: why they matter, how to implement them effectively on your team, and common pitfalls to avoid when establishing a review culture.
Code Review Best Practices
Published: at 08:54 AMCode reviews can be challenging! How do you make them valuable without being a burden? Here's what I've learned about making code reviews effective for both reviewers and authors.
Impostor Syndrome and Me
Published: at 02:18 PMPersonal reflections on dealing with impostor syndrome as a software developer
Why I submitted my first CPython patch
Published: at 02:05 PMMy experience optimizing UUID generation in Python's core library
Python / Django Talks
Published: at 07:51 PMNotes and insights from recent Python and Django conference talks
6 lessons learned from teaching my brother about programming
Published: at 09:45 PMKey insights gained from teaching programming to my younger brother over Skype
Georgia Tech OMS CS
Published: at 02:00 AMStarting my journey in Georgia Tech's Online Master's in Computer Science program