Exploring Ideas: A Blog on Technology, Startups, Food, and More

Welcome to my blog where I share thoughts and insights on technology, startups, and life in Atlanta. Browse through the articles below or explore by topic.

The Art and History of General Dynamics' Atoms for Peace Campaign

February 5, 2025

I have no idea how I first stumbled across the striking modernist artwork of General Dynamics’ Atoms for Peace campaign. But somewhere along the way I did, and I’ve been fascinated by it ever since. I grew up in more of an art family than an engineering one, and in particular was a Kandinsky/Bauhaus kid. So not suprisingly, I was drawn to the Atoms for Peace work. But it also struck me as so incre...

Read more →

Why Your Library Needs Pytest (And How to Get Started)

February 4, 2025

So, you’ve built a Python library. Maybe it solves a niche problem, maybe it’s the next big thing. You’ve poured hours into crafting the API, writing documentation, and maybe even setting up linting (go you!). But… have you written tests? I get it. Writing tests can sometimes feel like eating your vegetables - you know it’s good for you, but it’s not always the most exciting part of the meal. For ...

Read more →

The Art of API Design: Making the Right Things Easy

February 3, 2025

After years of maintaining libraries like category-encoders and pygeohash, I’ve learned that good API design is more art than science. It’s about creating interfaces that feel natural and intuitive, making the right things easy and the wrong things hard. Let’s explore how to achieve this delicate balance. The Principles of Intuitive API Design Think about your favorite Python libraries. What makes...

Read more →

Secure Coding Practices for Python Library Developers

February 2, 2025

“It’s just a simple utility function,” I thought to myself as I reviewed the code. “What could go wrong?” Then I saw it: the function was blindly executing shell commands based on user input. One carefully crafted argument later, and someone could have turned our helpful library into their personal backdoor. When you’re building a Python library, you’re not just writing code; you’re creating somet...

Read more →

How Skis Are Made: From Wood to Carbon Fiber

February 1, 2025

As a mechanical engineer who spent years working in bike shops and obsessing over every component of my bicycles, it felt strange to realize I’d spent the last five years skiing without really understanding what was under my feet. My wife introduced me to skiing, and being the impatient learner I am, I jumped straight into the deep end of the sport. While she was already carving up the slopes with...

Read more →

Taming the Python Chaos: Linting & Formatting with Ruff

January 30, 2025

Let’s be honest, wading through inconsistent Python code can feel like hacking through a dense jungle with a butter knife. Different quote styles, weird indentation, unused imports lurking in the shadows… it’s exhausting and, frankly, slows everyone down. This is where the dynamic duo of linting and formatting ride to the rescue. They might sound like boring chores, but trust me, they are fundamen...

Read more →

Handling Sensitive Data Securely Within Your Python Library

January 29, 2025

Accidentally exposed API keys and credentials in public repositories remain one of the most common security issues in modern software development. Despite the widespread awareness of this risk, these incidents continue to occur across organizations of all sizes. Let’s explore comprehensive strategies for keeping sensitive data secure in Python libraries, so you can build more robust and secure app...

Read more →

Decoding Library Updates: Understanding Semantic Versioning (SemVer)

January 28, 2025

When you release a new version of your Python library, how do users know what to expect? Will updating break their existing code? Does it just contain bug fixes, or are there exciting new features? Without a clear system, version numbers are just arbitrary labels, leading to confusion and the dreaded “dependency hell.” This is why Semantic Versioning (SemVer) has become the de facto standard for l...

Read more →

Dependency Security: Managing Vulnerabilities with pip-audit

January 27, 2025

Picture this: a developer updates a dependency with a simple patch version bump. Everything seems fine until a security researcher emails: “Your library is vulnerable to remote code execution.” The issue wasn’t in the library’s code; it was in a dependency that wasn’t being checked for known vulnerabilities. This scenario highlights a crucial aspect of Python supply chain security. Even if your li...

Read more →

The Center of Your Python Project: Understanding pyproject.toml

January 26, 2025

If you’ve started a new Python project recently or looked at the structure of modern libraries, you’ve undoubtedly encountered a file named pyproject.toml sitting in the project root. What is this file, and why has it become so important? Gone are the days of juggling setup.py, setup.cfg, requirements.txt, MANIFEST.in, and separate configuration files for every single tool (.isort.cfg, .flake8, .c...

Read more →

Subscribe to the Newsletter

Get the latest posts and insights delivered straight to your inbox.