Last month, I signed up for a hackathon.
I opened a fresh file and named it ideas.md.
Forty-eight hours later, it was still empty.
No meltdown. No rage-quit. Just a blinking cursor and a brain with nothing to give it.
The scary part wasn't the empty file. It was that I couldn't tell you why it was empty.
I used to be the one with too many ideas
There was a version of me with a notes app full of half-built side projects. A version that lost track of time at 1am because the code was fun, not because a deadline said so.
Then life hit me with some personal stuff I didn't see coming. I won't go into the details here, but it knocked me flat.
I stepped away from code. It wasn't really a decision. Survival mode just doesn't leave room for side projects.
When things settled enough, I tried to come back. I figured it'd be like riding a bike.
It wasn't.
- Hackathons used to feel like a playground. Now they feel like an exam I didn't study for.
- My feed is full of people shipping, launching and building in public. Meanwhile, I'm struggling to name a variable.
- Productivity systems? Tried them all. Pomodoro, Notion dashboards, habit trackers. Turns out you can't Pomodoro your way out of feeling empty.
- Focus comes and goes. I start a tutorial and realize 20 minutes later that nothing went in. I open a tab and forget why.
And underneath all of it, a quiet voice: What if this was never really your thing?
For a long time, I believed it. Whatever I'd had was gone. Deleted. 404 Not Found.
Then I realized I was reading the wrong status code
A 404 Not Found means there's nothing there. You keep asking, and the answer keeps being no.
(Pedants: yes, 410 Gone is technically the "likely permanent" one. But nobody has ever felt a 410 in their soul.)
A 503 Service Unavailable means something completely different. The server is still there. What you're asking for is still there. It just can't handle requests right now.
Here's how the HTTP spec, RFC 9110, describes the cause:
"...a temporary overload or scheduled maintenance, which will likely be alleviated after some delay."
Read that as a sentence about a person, not a server. It might be the most comforting thing I've ever read in a spec.
A 503 can even carry a Retry-After header. That's the server saying not now, try again later. Not goodbye. Just not yet.
None of that describes someone who lost their passion. It describes someone who's been running at 100% CPU through a rough season, with no maintenance window, wondering why every response is slow.
Which made me realize something a little embarrassing:
We'd never run a production server the way we run ourselves.
We give our systems health checks, rate limits, autoscaling and maintenance windows. We give ourselves caffeine and guilt.
So I've started treating myself like a system I actually care about.
What I'm learning (present tense, on purpose)
This isn't a "5 steps to get your passion back" post. Yes, there are five sections. Ignore that.
I don't have this figured out. These are field notes from someone still in the middle of it.
1. Stop retrying in a tight loop
Every dev knows what happens when clients hammer a struggling server with retries: a slowdown becomes an outage. That's why good clients use exponential backoff. Wait, retry, wait longer, retry.
I was doing the exact opposite. Every week I threw something new at myself: another hackathon, another course, another 30-day challenge, another shiny setup. Every time it didn't click, I took it as proof I was broken, and retried harder.
That's not discipline. That's DDoSing yourself from every direction at once.
So I'm letting the queue drain: fewer "shoulds," longer gaps between attempts, and no more treating an off day as a verdict.
Backing off isn't quitting. Rest is part of the protocol.
2. The bug probably isn't in the code
If the database is on fire, refreshing the frontend won't fix it.
My missing spark felt like a coding problem, so I kept trying coding fixes. New stack. New project. New editor theme (not proud of that one).
But the root cause was upstream: sleep, stress, and the personal stuff I'd been pushing down so I could "get back to normal."
Your brain does what your phone does when memory runs low. It kills background apps to keep the essentials running. Creativity, curiosity, the urge to build something just for fun? Background apps. First to go.
That's not a character flaw. It's resource allocation.
So the fix isn't another framework. It's sleep, food, movement, people, and actually dealing with the hard stuff.
And if the hard stuff is heavy, talking to someone (a friend, a therapist, a doctor) isn't weakness. It's reading the logs instead of guessing.
3. Cold starts are slow. That's the spec, not a bug.
If you've deployed a serverless function, you know the cold start. The first request after a long idle is slow and clunky. Nobody looks at a cold start and decides the function is broken forever.
But that's exactly what I did to myself. My first sessions back felt foggy, slow and joyless, and I took that as evidence the spark was dead.
Here's what I'm slowly accepting: motivation is a lagging indicator. I kept waiting to feel it before I started. But the feeling usually shows up after you start, not before.
Psychologists even have a name for working this way, behavioral activation: act first, and let the feeling catch up.
You don't wait for the instance to warm up before you send requests. The requests are what warm it up.
4. Send pings, not payloads
When a server is struggling, you don't send it your heaviest request.
But that's what I kept asking of myself. "Come up with something innovative for this hackathon." "Build a portfolio-worthy side project." "Start a 100-day streak."
That's a 50MB payload aimed at a server that can barely answer a ping. So now I'm sending pings:
- Fix one tiny bug in an old project.
- Rebuild something I've built before, with zero pressure for it to be new.
- Write a 20-line script whose only job is to make me smile. (Free idea: a CLI that roasts your commit messages.)
- Read someone else's code instead of writing my own.
- Stop after 25 minutes, even when it's going well. Leave something for tomorrow.
Small. Finishable. Low stakes. The goal isn't productivity. It's a 200 OK.
Every successful response tells the system it's safe to take a little more load.
5. Ideas don't come from blank files
I used to think creative people had some magic idea generator. They don't. They're just noticing things.
Ideas come from input. When you're depleted, there's nothing to remix, so of course ideas.md stays empty. Garbage in, garbage out. Nothing in, nothing out.
What I'm trying:
- An annoyances log. Every time something irritates me, I write it down: an app that needs six clicks for one thing, a task I do by hand every week, a tool that's almost right. No pressure to build any of it. Every annoyance is a feature request from real life.
- Building for an audience of one. Forget "innovative." Solve your tiny problem. Git exists because Linus Torvalds needed version control for his own project. No pressure.
- Consuming on purpose. Read a weird repo. Watch someone code live. Read an outage postmortem. Let other people's ideas bump into yours.
Next hackathon, I'm not walking in with a blank ideas.md. I'm walking in with my annoyances log.
Current status
If I had a status page, here's what it would say right now:
STATUS: DEGRADED PERFORMANCE
[x] Investigating It's a 503, not a 404
[x] Identified Overload. Not a skill issue.
[~] Monitoring Sending pings, backing off when needed
[ ] Resolved Not yet
"Not yet" is a lot better than "never."
I don't know exactly when the spark comes back. Maybe it'll look different: less fireworks, more embers. I'm starting to think that's fine.
Passion was never supposed to be a hard dependency. Curiosity is enough to start with. Some days, showing up is enough.
For what it's worth, publishing this post is the first 200 OK I've returned in a long time.
HTTP/1.1 503 Service Unavailable
Retry-After: 86400
X-Still-Here: true
86,400 seconds is one day.
Try again tomorrow. That's the whole plan.
If you've been here and found your way back: what was the first small thing that actually worked? Drop it in the comments. Someone is going to find this post at 2am, and your answer might matter more than everything I just wrote.
And if you're in it right now, just comment 503.
You don't have to explain anything. We'll know.
Top comments (1)
Your 503 framing is the part I will keep, because I have also mistaken a depleted season for a missing talent: after a hard stretch I kept hammering myself with new projects, which is exactly the tight retry loop you describe, and every failure made the next attempt heavier. What actually moved me was the opposite, a ping instead of a payload: one tiny finished thing, a 20-line script or a single fixed bug, and stopping while it was still going well so tomorrow had something to return to. What was your first ping that returned a 200 OK?