Posts by Mike Crowe
First Drafts All the Way Down
If your AI workflow is plan, build, tests pass, ship, you are shipping first drafts. I have the numbers: 80% of my plans and half of my green builds needed rework.
Read MoreThe Tests That Would Not Notice
Until I started building out an AI-driven SDLC this year, I had never run a mutation test. I’m not sure I could have told you what one was. I’ve been writing software for a long time, I’ve shipped plenty of code with a coverage badge on it, and I treated that badge as the answer…
Read MoreThe PR That Fooled Me
The best-looking PR in my repo had a data-loss race in it, and the model that wrote it reviewed its own work and found nothing. This post was written with AI assistance (Claude) for structure and formatting. The PRs, the bug, and the opinions are entirely my own. I’ve written before about where AI belongs in…
Read MorePeople Approve, Agents Check
I think the industry is measuring the wrong thing, and I think the leaderboard is making software worse. This post was written with AI assistance (Claude) for structure and formatting. The design, opinions, and specifics are entirely my own. Every vendor pitch I’ve sat through in the last year answers the same question: how much…
Read MoreWhen AppImages Fail You: Building a Robust Extraction Tool (and Why Cursor Drove Me to It)
Let me start this with a confession: I really wanted to like AppImages The promise is compelling: universal Linux binaries that run everywhere without installation. Just download, chmod +x, and go. It’s the kind of elegant simplicity that makes you think “why didn’t we do this sooner?” Then reality hits. The Cursor Catalyst This whole adventure…
Read MoreDatabricks Multiple Filters using a Python Lambda statement
Simplifying Multiple Null Checks in Databricks Recently, I ran into a case where I needed to check if 11 different fields were null. Yes, I could have used Copilot (or my preferred Codeium) to generate it for me, but I knew it had to be easier. There had to be an easier way… The Scenario…
Read MoreMaking Databricks Widgets Smarter
Have you ever wished the Databricks widgets were a little more intelligent? When you change one, the others adjust? That’s not too hard, but it’s a bit tricky. Here’s the secret: The widgets must be replaced as they change! Dynamic Widget Replacement For example: Let’s say you have a date input, and whenever it changes,…
Read MoreWrangling Gitlab CI/CD in Monorepos
So, I recently had the opportunity to extensively dig into Gitlab’s CI/CD. We have a monorepo that I wanted to deploy automatically, and it took quite a bit of work to optimize it and work as I expected. To set the stage, here’s our core .gitlab-ci.yml file (now): image: node:18-alpine3.19 variables: AWS_REGION: us-east-1 AWS_DEFAULT_REGION: us-east-1 FF_USE_FASTZIP: 'true'…
Read MoreGraphQL/TypeScript: Create Types when not Provided
Recently, I kicked off a project using GraphQL and needed the TypeScript types for the GraphQL API. However, they were not included in the project. It’s surprisingly easy to generate these types, but seemingly hard to find a simple “Here’s how you do it” example. In this case, install the required packages: The init asks…
Read MoreHow Can I Wordle Out of Housework?
Let me start this with a confession: I don’t (technically) play Wordle This is very important, as recently my wife came to me and proclaimed “I just got a “magnificent” in Wordle” (the blank look on my face definitely bumped up my heating bill for a few days). When I asked my daughter if she…
Read More