“680 hours building PC_Workman on a 94*C laptop after warehouse shifts. Four complete rebuilds. One lesson: finish or die trying.”
Most developers never ship.
They plan. They research. They pick the perfect stack.
Then they quit at 80% when it’s no longer fun.
I almost did the same.
Press enter or click to view image in full size
From Warehouse to IT - Marcin Firmuga
3 AM, December. Laptop screaming at 94°C.
My girlfriend brought toast.
“Number seven,” she said. She’d been counting.
I was about to delete 16,000 lines of code.
Six months of work. About to vanish.
The cursor sat there. Blinking. Waiting for me to either commit to finishing or add this to my graveyard of abandoned projects.
I had twelve of those already. All dead at 70–85% completion.
PC_Workman was about to become number thirteen.
BUT OFFICIALY, Number one in Public
But that deletion? That’s what saved it.
This is how PC_Workman got built: 680 hours, 4 complete rebuilds, on hardware that shouldn’t have survived, after warehouse shifts that left my body destroyed but my brain strangely clear.
Not because I’m talented. I’m not.
Because I refused to let another project die when the finish line was visible.
Order picker. 15–20 kilometers walking daily between shelves.
Scanning barcodes. Loading pallets. Repeat until the shift ends.
Half-functioning “electric carts” with a standard of 290 products per hour. With pathological KPI.
Press enter or click to view image in full size
Warehouse work times
By day: warehouse man.
By night: developer.
The gap between those two realities is where this story lives.
Every evening I’d come back to a temporary apartment. Body exhausted. Laptop already overheating from background tasks. Dinner was whatever cooked fastest.
By 11PM, I was coding.
Not because I felt motivated. Because if I didn’t do it then, when would I?
Physical exhaustion doesn’t equal mental exhaustion.
After 10-hour shifts, my body was destroyed.
But my brain? Clear. Ready to solve problems.
The hardest part wasn’t the warehouse work.
It was living without Kacia and Lusia. My dogs. Back in Poland.
Every video call home, Kacia would tilt her head at the phone. Killed me every time.
But I’d made the choice.
Netherlands is paycheck.
Paycheck istime to build.
So I built.
I opened Task Manager. 87% CPU usage. Okay, something’s wrong.
But what?
Opened MSI Afterburner. GPU temps fine.
Opened HWMonitor. RAM usage normal.
Opened Process Explorer. 47 processes running.
Three apps. Three different interfaces. Still no clear answer to:
“Why is my PC slow right now?”
I sat there thinking:
Why do I need three applications to answer one question?
And why doesn’t any of them show me what was happening two hours ago when the lag started?
That gap. That’s the problem.
Most monitoring tools show you present state.
None of them explain the past.
Your PC was dying at 2 PM. Now it’s 5 PM and everything looks fine.
You’ll never figure out what happened.
That’s the moment PC_Workman was born.
Not as a “better MSI Afterburner.”
As the tool that answers:
“What was running when my PC lagged three hours ago?”
Time-travel for system monitoring.
Click any point on the performance chart. See exactly what was consuming resources then.
That’s the feature every existing tool is missing.
Vertical stacks of metrics requiring endless scrolling. Text widgets that couldn’t update smoothly. No visual hierarchy.
But it worked. Technically.
Numbers updated. Data was accurate.
You could see your CPU temperature.
I was proud for about two weeks.
Then I actually tried using it daily.
Opened the app. Saw the wall of information.
Thought: “If I were a user, I’d close this in 5 seconds.”
That hurt more than any code error.
Because I was the user. And I wouldn’t use my own product.
Here’s what bootcamps and tutorials don’t teach you:
They teach you to make code work.
They don’t teach you to make products people want to use.
Those are completely different skills.
Working isn’t the same as good.
There’s a massive difference between “the code runs” and “this is something I’d actually want on my screen.”
One Saturday morning, coffee already cold, I closed the app and didn’t open it for three days.
That’s when I knew: rebuild.
Press enter or click to view image in full size
Kacia (11yrs.) — Lusia (2yrs.) — Marcin Firmuga
4. ARCHITECTURE FOR ARCHITECTURE’S SAKE
Okay, I thought. Now I know what I’m doing.
Version two had proper architecture.
Event-driven updates. Modular plugin system.
Cleaner UI with actual navigation. Early flow patterns that made sense.
I spent two full weeks building a fan control feature.
Drag-and-drop curve editor. Real-time visualization. Beautiful code.
Then I realized: one wrong curve and you could kill a GPU.
Deleted the entire thing.
The structure was there. But the soul wasn’t.
I’d gotten so caught up in “doing it right” that I forgot why I was building this in the first place.
Late one night, around 2 AM, I opened three competitor apps side by side: MSI Afterburner, HWMonitor, GPU Tweak.
Each one solved part of the problem brilliantly.
None of them explained why my PC was struggling. Just that it was.
That gap. That’s what I needed to fill.
Not another polished UI with no purpose.
I closed the apps. Stared at my version.
Realized I’d built nothing better. Just different.
Back to drawing board.
Instead of asking “What features can I add?”, I asked
“What does someone actually need to see?”
The answer was embarrassingly simple.
CPU and RAM bars. Side by side. One glance is full picture.
Gradient backgrounds for processes. Top consumer? Darkest shade.
Top 5? Lighter shades. Instant visual hierarchy without reading numbers.
Click to investigate. See suspicious process? Click. Instant details.
Real hardware names. Not “8GB RAM” but “7.9 GB Total” from actual system queries.
I deleted 16,000 lines during this refactor.
Started with 39,000. Ended with 24,000.
Every deletion hurt. But the app finally made sense.
One morning I woke up, made coffee (didn’t let it go cold this time), opened PC_Workman, and just… used it.
For 20 minutes. Monitoring my system while browsing.
Didn’t think about what to fix.
Didn’t immediately see problems.
Just used it.
That was the first time I thought: “This might actually work.”
But “might” isn’t “does.”
Press enter or click to view image in full size
PC Workman — NEW, not released yet. v 1.6.5
PC Workman — OpenSSF best practices is comming
6. DECEMBER 22: THE NIGHT EVERYTHING CHANGED
December 22, 2025. Three days before Christmas.
I got the message from the agency: trial period didn’t work out.
Job gone. Just like that.
I was sitting in a temporary apartment in the Netherlands.
Away from family. Away from my dogs. Laptop at 70% completion on PC_Workman but thermal throttling every 30 minutes.
Logical response: panic.
Find another warehouse job. Focus on survival. Stop pretending you’re a developer.
But I looked at the project folder.
680 hours of code. Sitting at 60% complete.
And I made a different choice.
That night, I started rebuild #4.
Not because I had a plan. Not because I was confident it would work.
Because I refused to let another project die in the
“80% done, never finished” graveyard where most ideas go to rot.
By midnight, I was already rewriting core modules.
2 AM: girlfriend woke up, saw me still coding, brought energy drinks.
3 AM: she brought toast. “Number seven,” she said, smiling.
We laughed. The situation was absurd.
Unemployed three days before Christmas, deleting code at 3 AM in a foreign country while my laptop fan sounded like a jet engine.
But something felt different this time.
I wasn’t building for myself anymore.
I was building for the person who needed what I needed: a way to understand their PC without opening three different apps and hunting through walls of data.
By 5 AM, the new structure was live.
By dawn, I tested it.
Opened the app. Used it for 10 minutes.
Didn’t want to close it.
That’s the bar. Not “this is amazing.”
Just: “I wouldn’t close this in 5 seconds.”
My girlfriend was right: just finish.
Press enter or click to view image in full size
Quickly moving out
7. THE GRAVEYARD OF FAILED PROJECTS
Before PC_Workman, there were twelve others.
All dead between 70–85% completion.
The list:
Discord bot for server management (quit at 75%)
Expense tracking app (quit at 80%)
YouTube video scheduler (quit at 70%)
Automated backup system (quit at 85%)
Game translation tools (quit at 80%)
Recipe organizer with meal planning (quit at 75%)
Local file search engine (quit at 82%)
Twitch stream overlay generator (quit at 78%)
Custom note-taking app (quit at 80%)
Habit tracker with analytics (quit at 83%)
RSS feed aggregator (quit at 77%)
Markdown editor with preview (quit at 81%)
The pattern was clear.
Start strong. Build for weeks. Get to 70–80% where it technically works.
Then lose interest when the “fun coding” is done and only polish remains.
Every single project died the same way: I stopped when it stopped being interesting.
That’s the developer trap nobody talks about.
Building features is fun. Fixing edge cases is boring. Handling errors properly is tedious. Making it work on other people’s machines is frustrating.
So most people quit right before shipping.
I was no different.
Until PC_Workman.
What changed?
Nothing about my discipline. Nothing about my motivation.
I just made the cost of quitting higher than the cost of finishing.
December 22. Job loss. Living abroad. Missing my dogs.
If I quit this project too, what was the point of any of it?
The warehouse job didn’t give me a career. But it could give me one finished product.
That shift — from “building for fun” to “building because quitting costs more” — that’s what broke the pattern.
My laptop hit 94°C during development. Regularly.
Fans screaming. Thermal throttling warnings every 20 minutes. Constant overheating that forced me to pause, wait for cooldown, restart.
Every feature had to justify its RAM footprint or it died.
No “let’s add this because we can.”
No elegant code that ate resources for aesthetics.
If it made the laptop overheat? Didn’t ship.
One night I was testing a real-time polling feature. System was checking every component 10 times per second.
Laptop hit 96°C. Shut down mid-test.
Lost two hours of work I forgot to commit.
That feature? Cut to once every 2 seconds. Same information.
90% less overhead.
The laptop taught me what users with old hardware already know: bloat kills.
My competitors build on RTX 4090s with 64GB RAM. Their features look great in demos.
But they’re optimized for hardware most users don’t have.
Here’s the controversial truth:
Building on high-end hardware makes you lazy.
You don’t optimize because you don’t have to. Every feature “just works” because you have unlimited resources.
Then real users download your app on their 2016 laptop and it crashes.
PC_Workman runs on my 2014 laptop that hits 94°C.
If it works there, it works everywhere.
That’s not a limitation. That’s validation.
Building is one thing. You iterate in your IDE. Test locally.
Fix bugs on the fly. Push to GitHub.
Shipping is different.”
An .exe isn’t just “packaged code.”
It’s a declaration: “This is real enough that strangers can download it, install it, run it on their hardware without needing Python or GitHub or any developer knowledge.”
That’s terrifying. That’s beautiful.
Write on Medium
PyInstaller fought me for eight hours straight.
47 dependency errors. 12 path issues. 3 “this should definitely work” moments that absolutely didn’t.
Around hour six, I almost quit. Thought:
“Maybe PC_Workman just stays a Python script. That’s fine.”
But it wasn’t fine.
A Python script is a developer toy.
An .exe is a product.
Hour seven: finally compiled. Transferred to clean machine with no Python installed.
Double-clicked.
It launched.
No errors. No missing dependencies. Just… worked.
I sat there staring at it for a solid minute.
Six months of coding. Eight hours of packaging.
But that moment when the .exe just ran on someone else’s machine?
That’s when it felt real.
Then someone I’d never met sent a bug report.
The bug: “Optimization settings reset when I restart the app.”
Simple issue. I was storing state in memory. Perfect for development. Terrible for production.
But here’s what actually changed:
It stopped being “my project.”
It became “something people use.”
A real person downloaded PC_Workman. Installed it. Used it enough to notice something was wrong. And cared enough to report it.
Not just close the app and leave. Actually reported it.
That’s validation no amount of self-testing gives you.
I fixed it in two hours. Added persistent JSON config file. Shipped same day.
But the fix wasn’t what mattered.
What mattered: someone wanted it to work.
For six months, I was the only user. I knew every edge case, every limitation, every workaround.
I thought that was enough.
It wasn’t.
The first external user found an issue in 24 hours that three months of my testing never caught.
Because they used it differently.
On different hardware. With different expectations.
Without knowing how it “should” work.
That gap between my testing and their usage?
That’s where the real product lives.
Press enter or click to view image in full size
Marcin Firmuga — GitHub Contributions
Press enter or click to view image in full size
Marcin Firmuga — my GitHub
11. JOB SEARCH REALITY
While building PC_Workman, I was also job searching.
The numbers:
4 CV versions (Python Dev, IT Support, Customer Support)
50+ applications per week
3–5% response rate
1% offer rate (so far: zero offers)
LinkedIn shows the wins.
“Excited to announce I’ve joined X company as Y role!”
My reality:
Daily applications. Constant rejections. AutoReject from ATS systems because “years of experience” field says 0.
I have PC_Workman. 680+ hours of documented code. Working product. Real users.
But the gap between “portfolio” and “professional experience” is massive.
My controversial take:
Your portfolio doesn’t automatically get you hired.
It opens conversations. It proves you can code. It shows you can finish things.
But it doesn’t answer the questions hiring managers actually ask:
Can you work in a team?
Can you ship under deadlines?
Can you handle code reviews?
Can you debug someone else’s code?
Do you know Git workflows?
Portfolio answers some. Not all.
So why keep building publicly while job searching?
Because waiting for permission is how you stay stuck.
I don’t need a job to prove I can code. I can prove that right now.
And when the offer comes (not if, when), I’ll have a shipped product to point to.
That’s stronger than any bootcamp certificate.
WHAT I ACTUALLY LEARNED
Not motivation. Motivation disappeared week two.
Not natural talent. I’m average at best, just stubborn.
Here’s what actually mattered:
Deleting code is the fastest way to feel progress.
Not adding features. Not optimizing. Removing.
Every line I deleted got me closer to something that made sense.
The 16,000 lines that died weren’t failures. They were iterations that freed up space for clear thinking.
If you wouldn’t use your own product, nobody else will either.
That moment — “I wouldn’t open this app” — that’s not negative feedback.
That’s the first moment of honest feedback from the most important user: yourself.
Constraints don’t limit creativity. They filter bullshit.
94°C laptop. Zero budget. No team. 16,000 lines to delete.
These aren’t obstacles. They’re honesty machines.
Every feature had to justify itself against thermal throttling, limited RAM, and constant crashes.
The features that survived? Those are the real ones.
Shipping beats perfection every single time.
Could I have spent another six months polishing?
Sure.
But the first bug report taught me more than six months of solo testing ever would.
Stubbornness matters more than talent.
I’m not the best Python developer. I’m not a designer.
I don’t have formal CS degree.
But I showed up every night after warehouse shifts when I didn’t feel like it.
That’s the difference between abandoned projects and shipped products.
CONTROVERSIAL: Solo beats team for version 1.
Everyone says “find a cofounder.”
I say: ship v1 alone first.
Teams add communication overhead. Competing visions. Decision paralysis.
Solo? You move fast. You pivot instantly. You ship when YOU decide it’s ready.
Find team for v2. But v1? Do it alone.
Tutorial hell is real. Stop copying. Start building.
Following tutorials feels like progress.
It’s not.
You’re copying someone else’s solved problem.
Real learning happens when you face a problem nobody’s solved in a YouTube video.
That’s when Google, documentation, and Stack Overflow become your actual teachers.
Your portfolio doesn’t matter if you can’t ship.
Ten half-finished projects is less than one shipped product.
Hiring managers don’t care about your GitHub repo with 30 WIP folders.
They care about: “Can you finish things?”
One complete project proves that.
Ten started projects prove the opposite.
Press enter or click to view image in full size
PC Workman — v.1.0.3–5 months ago — Prototype basic version. Like joke!
13. WHAT I’D DO DIFFERENTLY
If I started PC_Workman today, here’s what would change:
Ship v1 in 3 months, not 6.
I spent too long on “perfect architecture.” Should’ve shipped ugly MVP, then iterated based on real feedback.
Get first 10 users BEFORE building fancy features.
I built time-travel feature, AI integration, advanced filtering before I had a single user.
Should’ve shipped basic version, found 10 people who’d use it,
THEN added features they asked for.
Document from day one.
Started documenting at month 4. Should’ve started day 1.
Build-in-public creates accountability. And content compounds.
Focus on one distribution channel.
I tried: Reddit, Medium, X, LinkedIn, HackerNews, Dev.to all at once.
Should’ve picked ONE. Mastered it. Then expanded.
Test on different hardware earlier.
Tested on my laptop for 5 months before realizing: resolution issues on 1440p monitors, different GPU behaviors, RAM configs I never considered.
Should’ve found 3 testers with different hardware month 1.
But here’s what I wouldn’t change:
The four rebuilds. Each one taught me something I couldn’t have learned any other way.
The 16,000 deleted lines. Best education I got.
Building after warehouse shifts. Physical/mental separation kept me sharp.
Refusing to quit December 22. That choice made everything else possible.
If you’ve rewritten the same component three times, you’re learning, not wasting time.
If you’re Googling “why doesn’t this work” for the 47th time today
welcome to development.
The 90% invisible work? That’s where everything happens.
The debugging at 2 AM when the fix doesn’t make logical sense but somehow works.
The features you build, test, and delete because they feel wrong.
The rewrites nobody sees because you’re too embarrassed to show version one.
That’s not imposter syndrome.
That’s craftsmanship.
But here’s the hard question:
Are you building or planning?
Because most people in “developer communities” aren’t building.
They’re researching frameworks. Comparing tools. Reading “best practices.” Planning the perfect architecture.
The graveyard is full of perfect plans.
If you’ve been “preparing to build” for more than two weeks, you’re not preparing. You’re procrastinating.
Stop planning. Start building.
Ugly code that ships beats perfect code that doesn’t.
You’ll learn more in one week of building something real than six months of tutorials.
Direct challenge:
What’s the project you keep putting off?
The one you’ve been “planning” for months?
Build the ugliest version of it this weekend.
Not perfect. Not pretty. Just working.
Then ship it Monday.
You’ll learn more from one week of user feedback than a year of solo development.
Not because I’m fast. Because I didn’t quit.
Current state:
Alpha .exe available (GitHub, SourceForge)
3 active testers providing feedback
First bug reports fixed same-day
Core features stable
v2.0.0 milestone = production-ready
New hardware coming early this year. Finally upgrading from the laptop that hits 94°C.
Not just for comfort. For building what comes next.
2026 goal:
PC_Workman from alpha to production. Fully optimized. Background-silent. Rock-solid.
Then: next projects begin.
GuideAI (turn manuals into AI chatbots). Already in alpha.
After that: productivity tools for developers.
I’m not juggling ten half-finished ideas.
I’m finishing one. Shipping it. Then starting the next.
That’s how you actually build a portfolio.
One shipped project beats ten planned ones.
Ships despite dying hardware, job losses, and four complete rebuilds
Learned that constraints aren’t obstacles but filters
Understands nobody is coming to save you
Knows the final 20% is closer than it feels
Refuses to quit when it stops being fun
Let’s build something.
I’m actively searching for Python Developer, IT Support.
MAINLY I looking for someone who have knowegle about
Social media, and SEO :)
Portfolio: One shipped product. 700+ hours documented. Real users. Real bug reports. Real iteration.
That’s not potential. That’s proof.
Find PC_Workman:
Download: SourceForge, GitHub Releases
Follow the build:
X/Twitter: @hck_lab — Daily updates
LinkedIn: Marcin Firmuga — Professional
Medium: @marcin.firmuga — Long-form
Everything about me, here. And Coffee if you want :)
About the Author
Marcin Firmuga | Solo Developer | HCK_Labs Founder
I built PC_Workman from scratch on dying hardware during warehouse shifts in the Netherlands.
Before this:
Game translations for Polish communities
IT technician internships (2 months, 2022)
Warehouse operations (Poland, Netherlands, multiple contracts)
Twelve failed projects (all quit at 70–85%)
But this one stuck.
680+ hours of code. 4 complete UI rebuilds. 16,000 lines deleted. 3 AM sessions. Energy drinks and toast #7.
And finally: an app I wouldn’t close in 5 seconds.
That’s the difference between building and shipping.
PC_Workman is the result.
Currently: Searching for first tech role while building in public.
Warehouse to Developer | Building Despite Everything | HCK_Labs
The "12 graveyard projects at 70-85% completion" hit hard. I've been there too. The gap between "it works" and "it's actually good" is where most of us quit.
Your point about physical vs mental exhaustion is spot on. Some of my best code happened after long days when my body was shot but my brain was weirdly clear. There's something about that state where you just focus on the problem without overthinking it.
The time-travel monitoring feature sounds like exactly the kind of thing that only comes from real frustration with existing tools. Those "what happened 2 hours ago" moments are the worst because by the time you notice, the trail is cold.
Man… the “graveyard at 70–85%” seems to be a universal developer disease 😅
Strange how that last 20% is always the heaviest part.
What you said about constraints going beyond hardware really hit.
Zero backend, privacy became the feature. That’s exactly the kind of accidental advantage I’m starting to respect more. Sometimes we think we’re “limited”, but we’re actually being forced into clarity.
I had the same illusion with fancy features.
I was building time-travel charts and AI integrations before I had 3 real users. Meanwhile, what testers cared about most was:
“Is it clear?”
“Is it lightweight?”
“Does it just work without noise?”
It’s humbling.
And you’re right, one shipped tool with actual users changes everything.
The first external bug report did more for my growth than months of solo polishing.
Respect for breaking your own pattern too, that’s harder than shipping code.
The graveyard of 12 projects at 70-85% is painfully relatable. I had a similar list before I finally shipped my first tool — a bank transaction categorizer for small businesses. What broke my pattern was almost identical to yours: making the cost of quitting higher than finishing.
Your constraint insight is the best part of this post. "Building on high-end hardware makes you lazy" applies beyond hardware. I built my first tools as simple browser-based apps with zero backend because I didn't want to pay for servers. That constraint forced me to make everything run client-side, which accidentally became a feature — users love that their financial data never leaves their machine. The limitation became the selling point.
The "ship v1 in 3 months not 6" lesson is one I wish I'd learned earlier too. I spent weeks building AI-powered auto-categorization when my first 10 users just wanted to drag and drop a CSV and manually sort things with keyboard shortcuts. The fancy feature I thought would be the differentiator wasn't even in the top 5 things users cared about.
Rooting for you on the job search. One shipped product with real users and bug reports tells me more about a developer than any number of tutorial projects.