The $2M Project That Died in a Pandemic (And What I Did With the Code)

A few years ago I helped build a truck routing system for a logistics company. It was a real project — real trucks, real delivery stops, real time windows, real money. The client spent around $2 million on it. Then the pandemic hit. The project died. And the code sat on my hard drive doing nothing.

Last week I turned it into a web app.

routing optimization web app

Continue reading “The $2M Project That Died in a Pandemic (And What I Did With the Code)”

What’s Next: 20 More Models Waiting in Excel

The staff scheduler took about 20 years to build.

That’s not as dramatic as it sounds. The MILP model — the math, the constraints, the logic — that came together during the Fiverr engagement described in the first post of this series. What took 20 years was accumulating enough Operations Research experience to know what the model needed to look like. The actual build, once I sat down with the problem fully understood, was fast.

The web app took a few days. The deployment took an afternoon, plus one failed attempt that taught me about gunicorn.

staff scheduler output
Continue reading “What’s Next: 20 More Models Waiting in Excel”

Three Files. One Web App. Zero Web Development Experience.

At some point during this project I stepped back and looked at what we’d built.

Three files. A working web application. Deployable for $7 a month. Zero web development experience going in.

That felt worth writing down.

Continue reading “Three Files. One Web App. Zero Web Development Experience.”

Three Bugs That Would Have Stayed Hidden in Excel

When you convert an optimization model from Excel to standalone Python, you expect to do some work. You expect to rewrite the data loading, restructure the variable definitions, test the output. What you don’t expect is for the model to fail in three distinct ways, each one caused by something the Excel version was handling silently without you knowing it.

That’s what happened here. Three bugs. All real. All the kind that would have stayed invisible forever if the model had stayed in the spreadsheet.

Continue reading “Three Bugs That Would Have Stayed Hidden in Excel”

PuLP, MILP, and CBC: The Alphabet Soup Behind Your Schedule

PuLP is a Python library for writing optimization models. MILP stands for Mixed Integer Linear Program. CBC is an open-source solver. Together, they’re what makes the Staff Scheduler work — and together, they represent something I find genuinely interesting: the fact that problems that used to require expensive commercial software and specialized hardware can now be solved on a laptop, for free, in a few seconds.

Let me explain what’s actually happening under the hood.

Continue reading “PuLP, MILP, and CBC: The Alphabet Soup Behind Your Schedule”