The Deploy That Ate My Whole Lunch Break
It was 12:03 when I opened the fridge. I had leftover rice, half a rotisserie chicken, and exactly forty-five minutes before my next meeting. I had been thinking about that rice since about nine-thirty, which is a normal thing that happens when you work from home and your kitchen is fifteen feet away and also completely off-limits during a standup where someone is screen-sharing a Jira board at full resolution for some reason.
I was already pulling the container out when Slack lit up. Not a ping — a cascade. The kind where the little badge number goes from one to nine before you can even read the first message. Marcus had pushed a migration to staging. The migration had opinions about staging. Staging was losing the argument. And because I was the one who had reviewed that PR at eleven the night before and said "looks good to me, ship it" — because I did that — I was now involved.
The rice went back in the fridge. I sat down. This is the part of the day job that none of the side hustle math ever accounts for: the hours that aren't on the calendar but aren't yours either.
A plug-and-play spreadsheet that tracks sales, expenses and profit for any side hustle, so you can see what you really keep.
How a "Looks Good to Me" at 11 PM Became My Problem at Noon
The PR had come in late. I was tired. I'd spent the earlier part of the evening doing a DoorDash run — I've written before about how those evening hours sit between the job and the hustle, and some nights I push the review window further than I should. That was one of those nights.
The migration looked clean. It was renaming a column and backfilling some nulls. Marcus had done this exact pattern before. I skimmed the down migration, checked the index, left a comment about a variable name that bothered me aesthetically, and approved it. Eleven-fourteen PM. Closed the laptop. Went to bed feeling like a responsible engineer.
What I had not done was notice that the backfill was running inside the transaction. On a table with four million rows. On staging, which runs on hardware that I can only describe as "aspirational." I know this now. I did not know it at eleven-fourteen PM because I was tired and the rice I was about to lose had been in my future for thirteen hours.
Forty-Five Minutes of Lunch, One Hung Migration, and a Lot of Slack Threads
The first message from Marcus was calm. "Hey, migration seems to be hanging — you got a sec?" That's the message that sounds like five minutes but means forty. I have learned to read it the way you learn to read weather.
I pulled up the logs. The transaction had been open for eleven minutes. The lock was holding. Nothing downstream could touch that table, which meant the feature branch that Priya was demoing at two o'clock was going to demo a loading spinner instead of actual data. I sent her a heads-up. She sent back a thumbs up that I chose to read as forgiving.
"Bro it's been sitting there for like twenty minutes, should I just kill it?" — Marcus, in the thread, while I was still reading the logs and pretending I had a plan.
I told him to give me two minutes. I needed about eight. I found the issue, confirmed the transaction was the problem, and we talked through rolling it back without blowing up the table state. The rollback worked. Staging came back up. It was 12:51. My next meeting was at one. I had nine minutes.
I ate the rice standing up at the counter. I did not reheat it. That was a choice made entirely out of spite toward the situation, not toward the rice, which deserved better. I was still chewing when I clicked Join on the one o'clock call and immediately got asked to share my screen.
The standup that morning had been fine — the kind of routine check-in I've done from weirder places than my home office, including the driveway once, while a build was still running. But the noon hour is supposed to be mine. That's the unwritten deal of remote work. Nobody put it in writing, which is exactly why it keeps not being honored.
One Lunch Break, One Cold Meal, and the Review I Should Have Taken Slower
In pure time: about fifty minutes of what was supposed to be off-clock. No overtime, no comp. That's just the job. I'm not complaining about that — remote work gave me back the commute and I've never forgotten it. But I want to be honest that "flexible hours" sometimes means the hours flex in the direction of the job, not in your direction.
In dignity: I approved a migration at eleven PM while tired, missed a classic lock-contention setup, and then had to be the guy who found the thing he missed. Marcus was gracious about it. He's a good engineer and a decent human. I told him it was my fault on the review and he said "nah, it's on both of us" which was kind but not accurate.
I have a loose personal rule about not reviewing anything complex after ten. I break it constantly. There's actually a whole post I wrote about the rules I set for myself and then immediately ignore, and the late-night review habit is a cousin of that same problem. I know the rule. I just keep deciding the specific situation is an exception.
The rice was fine cold. That's not a cost, that's just lunch.
What I Changed, What I Didn't, and Why the Fridge Is Still Fifteen Feet Away
I added a note to my PR review checklist — actual text file on my desktop, open since 2019 — that says "transaction scope + table size?" It's not a system. It's a sticky note in a file. But I've looked at it twice since then and caught a thing once, so I'm counting it.
I did not stop reviewing PRs late at night. I tried for about a week. Then a sprint ended, the queue backed up, and there I was at eleven-thirty with a cup of reheated coffee and three open tabs. The day job has a rhythm and the rhythm does not always care what I want the rhythm to be.
What I do think about more now is how the job bleeds into the margins I thought were mine. The side hustle stuff — the dashing, the little tools I build, the surveys I fill out while something compiles — all of that lives in whatever the job doesn't take. Some days that's a lot of space. Some days it's rice at 12:51 eaten standing up. The real cost of everything I've tried usually shows up in the hours column, not the dollar column, and this afternoon was a reminder that the hours aren't always mine to give.
Marcus pushed a fixed version of the migration the next morning, inside its own batched job, outside the transaction. It ran in four minutes. I reviewed it at nine AM, coffee still hot, nothing else open. Left one comment about a variable name. Approved it. Some things you just have to learn twice.
The rice was genuinely fine cold. That's the whole win. I'm taking it.
Note: Everyday Hustle Jeff is the written side of a digital series. These accounts are composite and dramatized. Any figures are what they were on the day, for one person, and are not a projection, a track record, or advice.