Build in public · The record

Fourteen months, four jobs,
one application, and still
no job in software.

The complete timeline, month by month, with the real dates and the real numbers. Including the months where nothing worked, and the part where I tell you what all of it has and has not produced.

By Marcin Firmuga·2026-08-24·~14 min read

I am 22, I live in Radom in Poland, and I drive a taxi ten to twelve hours a day. In the evenings I build software. I have been doing that for fourteen months without a week off, and I have never been paid for a line of it.

That is the honest position, and I am putting it in the first paragraph on purpose, because most write-ups like this open with the outcome and work backwards. There is no outcome yet. There is a record.

What follows is that record: every month, what happened in my life next to what happened in the code, with dates you can check against a public repository and a public changelog. I am writing it because I searched for exactly this three years ago and could not find it. Every account I found either ended in a job offer, which made it a story about luck, or ended in giving up, which made it a warning. Almost nobody publishes the middle, and the middle is where most people actually are.

One rule for this page. Every number here was read from the source or the analytics on the day I published it, not from memory. Where I do not know something, it says so. I have been wrong from memory in public before, three times about the same API, and I would rather this page be checkable than impressive.
On this page
  1. Before any of it: twelve dead projects
  2. The fourteen months, month by month
  3. What it actually cost
  4. What worked and what did not
  5. Where it stands, and what I want

Before any of it: twelve dead projects

My father died before I was an adult. I did not break that week. I broke slowly over the next two or three years, which is the part nobody warns you about, because there is no moment you can point at and say that was it.

What came next was a funeral too early and a life that needed to move faster than I was ready for. Three years in the Territorial Defence Forces, starting young. Technical school, INF.02 on the paper and not much behind it. Taxi driving. Warehouse shifts. Whatever paid.

Somewhere in there I started and abandoned twelve projects. Game translations, small tools, scripts nobody asked for. What is interesting is where they died. Not at the start, when it is hard and boring. All of them died somewhere between seventy and eighty five per cent, in that comfortable zone where the thing works on your machine and the idea of putting it in front of another person feels impossible.

Every one of them began with energy and ended when the energy ran out, because discipline was not there yet to take over.

The thirteenth is the one on this page. And I want to be exact about why it survived, because every indie story I have read opens with passion and mine did not.

I was not passionate. I was desperate. PC Workman was not a passion project, it was a psychological anchor: the one thing I could control while everything else was falling apart. Build something. Commit something. Watch a progress bar move. Feel like you still exist. That is not a motivational poster, it is what it actually was.

The fourteen months, month by month

Red dots are months where the day job or life took the lead. Green dots are months where the code did.

Spring 2025 · Venlo, Netherlands
The fade, which is the part I did not see coming

I moved from Poland to the Netherlands for a warehouse job. Order picker. Fifteen to twenty kilometres of walking a shift, and one day my phone said 23,847 steps. Agency contract, agency housing, agency transport. Over nine months that meant four different jobs and seven different places to live.

The work was not what nearly finished me. Hard work does not break anybody. What breaks you is permanent temporariness, and the specific thing it does is this: month one you are optimistic and will start coding next week. Month three you come home at six, sit on the bed and stare at a wall for twenty minutes, then scroll until eight. By month five you have stopped opening GitHub and you have started thinking maybe this is just adulthood, maybe ambition was naive.

I was not fighting exhaustion. I was fighting adaptation. Ambition does not vanish, it dims, the way a battery degrades so gradually that you only notice at sixty per cent.

The real danger was never poverty or tiredness. It was getting okay with it.
June and July 2025 · the thirteenth project
A laptop at 77 degrees before I open the editor

I start writing a system monitor in the evenings, on a 2014 laptop that reaches 77 degrees within two minutes of booting, before VS Code is even open, with fresh thermal paste. It reaches 94 when I ask it to think hard, and it has done that for the entire fourteen months since.

The idea is not complicated. Do not tell me the CPU is at 87 per cent. Tell me Chrome is taking 43 of it, Discord 22, and there is a Windows update I forgot about. The difference between monitoring and understanding.

I am doing it for a reason that is not ambition. I am afraid of disappearing. Not physically. The kind where you fade and nobody notices, including you.

first commits · Python 3.9 and Tkinter · 11 PM after a ten hour shift alarm at 5 AM · nine kilometres by bike to be there for 6
August to November 2025
Three rebuilds, and fifteen thousand lines deleted

This is where the previous twelve projects died: novelty gone, nothing works well, nobody watching. Instead it goes through three complete rebuilds.

The first version looked like Windows 95 having a panic attack. Emoji everywhere, endless scrolling, no hierarchy. It worked, technically, and I was proud of it for about two weeks, until I used it like a real person and understood that working and good are different words.

The second was architecture for the sake of architecture. Event driven, modular, professional, and it felt terrible to use. I spent two weeks building automatic fan control with drag and drop curves, shipped it, then deleted the entire thing, because one wrong curve can damage hardware and that is a feature which sounds good in a list and terrible in a support ticket.

The third asked a different question. Not what can I add. What does somebody actually need to see.

39,000 lines -> 24,000 · 15,000 deleted, not refactored 29 features built and scrapped before anyone saw them 400+ commits with messages like "fix" and "maybe this time" first changelog entry · 2025-10-27
Cost: roughly 150 cups of coffee and every evening for four months, to end up with a smaller program than I started with. That was the correct outcome and it did not feel like it at the time.
22 December 2025
Fired three days before Christmas, with the apartment attached

The same people who had been smiling at me for weeks, still smiling: you did not pass the trial, tomorrow goodbye, and out of the apartment. The suitcases were by the door before I had finished understanding the sentence. Two dogs waiting in another country. Roughly a month of money. The project sitting at about seventy per cent, 680 hours in.

That night I had to stand in a corridor and shout at a man that I am not a terrorist, because the building was certified, I knew my rights, and he was gambling that I did not. It is the single most absurd sentence I have ever said out loud.

Then I went back inside, opened the laptop, and started rebuild number four.

By two in the morning my girlfriend brought energy drinks and I was on slice of toast number seven. By three I was deleting whole subsystems rather than refactoring them, because the app kept telling me the same thing: I am not ready to be used. The sentence I could not get out of my head was if I were a user, I would close this in five seconds, and I was the user. By five the core was rebuilt. By the time light hit the apartment I opened it and, for the first time, did not immediately think of things to change.

16,000 more lines deleted in one night. I am marking this month green, which will look strange on the day I was fired. It is green because when the job disappeared, the only structure left in my week was the one I had built myself, and it turned out to be load bearing.
January 2026 · back in Poland
The most productive month of the entire fourteen

Unemployed, home, and for the first time able to work on it during daylight. This is the only month in the whole record where the project had my best hours instead of my last ones, and the difference is visible in the log.

v1.6.3 2026-01-12 v1.6.3+ 2026-01-19 the highest commit count of any month in the project
Cost: the money was running out the entire time. Productivity bought with unemployment is not a strategy.
February 2026
A quick fix that took three weeks

The plan was to fix the chart data system in a day. It became a rebuild.

v1.6.8 2026-02-17 new aggregation pipeline, SQLite in WAL mode, crash safe writes first real historical data instead of placeholders about 500 lines of dead code deleted
March 2026
The series starts, and I delete eight months of history

On 25 March I start publishing three times a week: Monday what I plan, Wednesday one bug opened up properly, Friday what shipped and what it cost. I have not stopped since, and I have missed exactly one post.

Two days later I run git push --force and turn 130 commits into one. Eight months of public history, gone. I recover about 90 of them from a branch called archive that I had created three weeks earlier by accident, to keep some old files around.

v1.7.0 March 2026 the first Friday post is about the disaster, published the same week
Cost: roughly 40 commits, permanently. And a lesson that came back to nearly destroy everything five months later, because the recovery quietly left my clone tracking the wrong branch.
April 2026 · convenience store
Nine hour shifts, and the first post that reached anybody

I start working at a convenience store. Nine hour shifts, 21 zloty an hour, a bike ride at half past four in the morning. Week one teaches me something I had not accounted for: ambitious weekly plans assume consistent energy, and a new job means there is none. I ship roughly half of what I promised that week and write that down instead of hiding it.

On 27 April I publish a post that opens "Most developers never ship an .exe". I almost delete it before posting, because it feels too confrontational for the polite tech bubble. It reaches 25,700 people. Until then my posts were reaching between 170 and 330.

By Tuesday morning I have a different problem. I am refreshing analytics every fifteen minutes instead of writing code, and at eleven in the morning I catch myself having accomplished nothing except checking a phone. Watching a counter climb is more immediate than debugging a registry reader, and that is exactly why it is dangerous. I close the tab and open the editor.

Also in April, a stranger downloads my executable and, before running it, puts the whole codebase through a full security audit: build pipeline, permissions, network behaviour. Then sends me the results. I think they expected panic. I asked whether I could see the full report. It came back clean, and they became a tester.

v1.7.1 2026-04-10 tests rewritten, 18 cases across 3 files v1.7.2 2026-04-27 Sigstore signed, VirusTotal 0/70, CodeQL on every commit SECURITY.md at 446 lines, not a template
Cost: four hour nights. It works once, maybe twice. You cannot build a career on sleep debt and lucky flow states, and I wrote that at the time and then did it anyway, more than twice.
The other cost, which is not mine: a woman who trained me at that job had been there a year and a half, on roughly 190 hours a month under a contract structured so she could not take sick leave, with children. Same rate as me. I think about her more than I think about any of the view counts on this page.
May 2026
The month everything moved at once

A stranger runs a full security audit on my executable, expecting to find something, finds nothing, and becomes a tester. Twenty eight people answer a question about what they would ask an AI living inside a system monitor, and every single one of those questions becomes real code that week. I start Google's AI programme through SGH Warsaw.

On 25 May a post reaches 46,904 people, which is still the largest number I have ever produced. I will come back to what it was worth.

v1.7.3 2026-05-02 v1.7.4 2026-05-14 v1.7.5 2026-05-25 v1.7.6 2026-05-29 full Polish language support, 300+ hand written strings assistant grows to 82 recognised intents process library 241 -> 373 definitions
Cost: I discover that the temperature monitoring I had shipped months earlier had never worked. It called an API that does not exist on Windows, inside a try block that swallowed the error. It passed every test, because the tests only checked that it did not warn when things were fine, and something that can never fire passes that test every time.
June 2026 · plastics repair shop
Welding plastic by day, and the project turns one

The money runs out again. I take a job welding plastics in a repair shop, the kind of room that is always too warm and that you can smell on your clothes at night. Physical work by day, code by night. The same rhythm as the Netherlands, a different country.

That job taught me something I did not expect to carry home. A good plastic weld is boring. You do not remember it because it looked clever. You remember it because six months later the part is still holding. I have not found a better description of the kind of code I want to write.

In the same stretch: I go to bed at three in the morning with that quiet certainty that nobody cares about any of this. It does not feel like a mood, it feels like a fact. The next morning a post has 44,000 views. One hour earlier and the whole night would have looked different. I did not check, so it did not. That is the version of building in public nobody posts.

An article of mine also reaches number one trending on HackerNoon. My first thought is not that I made it. It is what if this is an accident.

v1.7.7 2026-06-02 v1.7.9 2026-06-11 v1.7.8 2026-06-05 v1.8.0 2026-06-22 pcworkman.dev goes live, 56 pages, schema, RSS, robots open to AI crawlers the roadmap that ended at 1.7.9 is closed. every item done.
Cost: I find two features wearing a "done" label that had never run once. A learning engine the chat could not reach, and a TURBO switch wired to a flag nothing in the codebase ever wrote. Neither crashed. Nothing screamed. They just sat there.
July 2026 · the Store, and then a taxi
The last line of a roadmap I did not believe I would reach

On 1 July PC Workman goes live on the Microsoft Store. A year earlier that sentence was the final line of a roadmap written by somebody who had killed twelve projects and did not believe the thirteenth would survive either. Microsoft had rejected it twice first, and neither rejection was about the code. A blurry tile icon, and a privacy policy link that pointed at a security policy.

Nothing about the repository changed that day. The same files, the same mistakes, all still mine. What changed was that somebody I would never meet could press Install and run this on a machine I would never see, and I stopped reading the project like a private workshop.

The first thing looking back at me was a file of 6,533 lines holding 96 response handlers. It had not become ridiculous in one dramatic weekend. Ten lines here, fifteen there, a helper near the bottom because I was already in the file. No single commit looked irresponsible, which is how debt usually wins. It arrives as a series of reasonable shortcuts. And it still worked, which was almost the worst part, because a broken file demands attention and a working one teaches you to leave it alone. A file you are afraid to open is a file you have already stopped improving.

The Store did not change my code. It changed what I was willing to ignore. I split that file into seven, and the suite went from 21 tests to 194 in ten days.

Later that month my first one star review arrives: the interface is too technical, the learning curve is steep. I read it three times and agree with every word. I had built the thing for somebody exactly like me, and most people are not me.

On 28 July I start driving a taxi, ten to twelve hours a day, because it funds moving out.

v1.8.1 2026-07-05 v1.8.5 2026-07-21 v1.8.2 2026-07-09 tests 21 (June) -> 194 -> 331 by August one menu goes from ~2 seconds to open down to 17 milliseconds 23 diagnostic guides written, English and Polish, free and no signup
Cost: a week where I found four separate things in my own code that reported success and did nothing. A fan curve Apply button that saved nothing for two releases. A version number that lied in three places. A CPU reading measured on the wrong scale. A switch drawn on screen and wired to nothing.
August 2026 · now
Seventy hours behind a wheel, and the streak breaks

I book myself seventy hours of driving in one week, so I spend the weekend before it making sure nothing I care about needs me while I am gone. On the Friday of that week I finish a shift, sit down, open the file, look at it and close the laptop. Twenty one weeks, sixty three posts, and the first one I ever missed.

I write about that on the Monday rather than backdating anything, because a streak is not the point and pretending is worse than missing.

In the same month I discover that my local clone has been tracking the wrong branch since the March recovery, and had been silently 1081 commits behind for five months. I was one command from deleting 145,201 lines that existed only on GitHub.

v1.8.7 2026-08-08 third accepted Microsoft Store package Scaling Laws started 2026-08-02, a second project, in Unity 331 automated tests · 110 assistant intents · 521 process definitions
Cost: I nearly repeated the March disaster at ten times the scale, and the only reason I did not is that I read a warning I would normally have skipped.

What it actually cost

Fourteen months, four jobs, two countries, no week off. Here is the part that is easy to leave out.

Sleep, first. Not romantically. There were weeks of four hour nights that produced good work, and I wrote at the time that it works once, maybe twice, and that you cannot build on it. That was true and I did it anyway, more than twice.

A body doing physical work. Fifteen kilometres a shift in a warehouse. Nine hours on a shop floor. A room that is always too warm. Twelve hours in a car. None of that is a metaphor for discipline, it is just what the day was, and the code got whatever was left.

No reviewer, and the specific price of that. I can name at least twenty four separate occasions where I shipped something that ran perfectly and delivered nothing, and every one of them was invisible from the inside. Nothing crashed. A colleague across a desk would have caught several in a sentence. That is not a complaint about working alone, it is the actual, measurable cost of it, and I have written the whole catalogue down so it is at least useful to somebody else.

A note on the number in the title. Four is the count of kinds of day job across these fourteen months: a warehouse, a convenience store, a plastics repair shop, a taxi. The real count is higher, because the Netherlands alone was four separate agency placements and seven different addresses in nine months. I used the smaller number in the headline on purpose. Understating is the only direction it is safe to be wrong in.

14months, no week off
7addresses, two countries
4full rebuilds
23released versions
331automated tests
0jobs in software

What worked and what did not

I have five months of analytics on the public side of this, and the honest reading of it contradicts most of the advice I was given.

Reach and outcome are inversely related, at least for me. My three largest posts reached 46,904, 23,095 and 7,860 people. Their engagement rates were 0.21, 0.25 and 0.25 per cent, which are the three worst numbers in my entire history, and between them they produced nothing I can point at. A post about my actual circumstances reached 2,597 people at 4.74 per cent, and produced one interview and three separate people forwarding my CV somewhere.

The reason turned out to be visible in the data once I looked. The people who follow me are in Warsaw, Krakow, Wroclaw and Gdansk, at companies that hire Python developers in Poland. The people the viral posts reached were somewhere else entirely, at a different career stage, on a different continent. Large numbers had found an audience with no relationship to what I actually need.

Consistency beat quality more often than I expected. Not because the bad posts did well, but because the good ones only landed on an audience that existed because I had shown up for twenty weeks first.

Publishing failures worked better than publishing wins, every single time. The disaster posts, the one star review, the features that did nothing. I did not do that as a strategy. I did it because the alternative felt like lying. It turned out to be the only thing that made anybody trust the numbers when they were good.

What did not work: asking. Two of the platforms I put real hours into gave back almost nothing and I kept going out of stubbornness rather than evidence. And for a long stretch I optimised for reach because reach is the number that is easy to see, which is exactly why it is the wrong one.

Where it stands, and what I want

PC Workman is on the Microsoft Store, MIT licensed, Sigstore signed, with CodeQL running on every commit. It has 331 automated tests, a fully local assistant with 110 recognised intents in Polish and English, a process library of 521 definitions, an offline hardware compatibility database of 340 entries, and 25 diagnostic guides in two languages that are free and behind no email wall.

Alongside it there is now a second project, a strategy game about running an AI lab, three weeks old, with 718 automated tests and a save format that has migrated 36 times without breaking a campaign.

And I still have no commercial experience. Applications go out. Most go silent. That is the true state of it in August 2026, and I am not going to dress it up, because the entire value of this page is that it is not dressed up.

What I have not lost. I said at the start of 2026 that I would get my first job in software that year, and I still believe it. Not as a slogan. As arithmetic: fourteen months ago I could not persuade a stranger to run my executable, and now strangers install it from the Microsoft Store without asking me anything. That line has been going one direction the whole time, and there are four months left in the year.

What I would bring to a team is on this page rather than in a paragraph about my strengths. I look for the failure that is not announcing itself. I build the tool that finds it rather than promising to be more careful next time. I write down what it cost, in public, with a date on it, including the weeks that went badly. I do that in two languages.

Python and desktop applications. Local AI without cloud dependencies. Windows internals. Release engineering through the Microsoft Store. Testing discipline learned the expensive way. Open to developer roles, Python roles, IT support and adjacent paths, remote, hybrid, or on site in Krakow, Warsaw or Wroclaw.

If you hire for what somebody can build rather than what a CV already says, everything here is checkable and my inbox is open.

The rest of the record. The full catalogue of silent failures with the detection scripts is here. The weekly posts live in Monday, Wednesday and Friday. The application itself is free and open source.

MF

Marcin Firmuga

22 · Radom, Poland · taxi by day, software by night

I write about what I actually shipped, with real numbers and real code, including the parts that did nothing. Fourteen months in public and counting.