How an Integer Overflow Silently Destroyed My Production Data

A surrogate key generator overflowed. Spark said nothing. The MERGE overwrote legitimate rows. Here’s the full story — and the guardrails that would have caught it.

February 27, 2026 · 6 min · Christophe B.

Stop Writing Better Prompts. Start Reviewing AI Code

Stop chasing the perfect prompt. Start with a draft, review it like code, and iterate with constraints until the output matches your actual design.

February 5, 2026 · 7 min · Christophe B.

The `with` Statement Is More Powerful Than You Think

You use with open() every day. Here’s how to build your own context managers — and why they’ll save you from leaked connections and forgotten cleanup.

January 29, 2026 · 4 min · Christophe B.

Solutions Looking for Problems: A Field Guide to Fake Disruption

Project Elephant didn’t exist. But you’ve probably worked on it.

January 22, 2026 · 10 min · Christophe B.

AI-Assisted Coding: Knowing When to Type It Yourself

AI coding assistants are powerful. I use them daily. But the goal is to be efficient — not to maximize the percentage of AI-generated code in my projects. Here are five situations where I’ve learned to close the chat and just write the damn code myself. 1. Code you know by heart # You don't need AI for this users = [u for u in data if u["active"]] with open("config.json") as f: config = json.load(f) List comprehensions. Context managers. Basic dict manipulations. If you’ve written these patterns hundreds of times, the time spent typing a prompt exceeds the time spent typing the code. ...

January 19, 2026 · 3 min · Christophe B.

Packaging a Python Project Like a Pro

You’ve written a useful Python script. Maybe it’s a data transformation, a CLI tool, or a helper module you keep copying into every project. It works — but something feels off. You’re doing sys.path hacks. You’re copying files around. You’re importing things with weird relative paths that break when you run the script from a different directory. There’s a better way. And it’s not complicated. This article will walk you through packaging a Python project properly. Not “publish to PyPI” packaging (we’ll cover it later maybe) — just “I can install this locally and import it from anywhere” packaging. The kind that makes your code feel like a real project instead of a messy collection of loose scripts. ...

January 15, 2026 · 7 min · Christophe B.

Tired of Passing 10 Parameters to Your Functions: Go For The ApplicationContext Pattern for Data Pipelines

Your pipeline functions don’t need tons of parameters. Here’s a simple pattern to clean up your Databricks and Snowflake code.

January 12, 2026 · 3 min · Christophe B.

Stop Using Dicts for Config — Use Pydantic Instead

Load your YAML/TOML config files into validated, typed Python objects. No more silent typos, no more runtime surprises.

November 26, 2025 · 7 min · Christophe B.

Why I'm Writing About Clean Python and AI-Assisted Coding

I spent 10 years as a SAP BODS consultant. It taught me a lot — especially about the frustration of working inside a black box. When something broke, I often couldn’t dig into the internals. I had to work around limitations rather than through them. The tool did the job, but I never felt like I truly understood my own pipelines end to end. And let’s just say that debugging a data flow through a GUI with cryptic error messages at 2am — while the documentation loads slower than your will to live — builds character. A lot of character. If you’ve ever opened a support ticket hoping for answers and received “working as designed,” you know exactly what I mean. ...

November 2, 2025 · 3 min · Christophe B.