maindrop-00113 lines mergedscoreboardmade to order · ships in about a week
vibetokens

50 jokes · works locally · all original

It Works on My Machine: Jokes, Quotes and Excuses

“It works on my machine” is what a developer says when code runs locally and fails everywhere else, and it is almost always true. Here are 50 original jokes, quotes and excuses about it, none attributed to anyone, all of them said somewhere this week.

The sentence is not a defense. It is a statement of fact about one machine. The trouble is that production is a different machine, and so is CI, and so is the laptop of whoever reported the bug.

The sections follow the sentence as it usually travels: from the laptop, to the excuse, to a ticket marked cannot reproduce, to the known issues list, and finally to a shared server where somebody says it again with more confidence.

The dictionary entry covers the real causes and the real fixes. This page covers everything else people say while they are looking for them.

01 The sentence · 10 jokes

It works on my machine

Five words, said with complete confidence by someone who has not opened the CI log yet. Every version below is true. That has never once helped, and it has never once stopped anyone from saying it in a meeting with the camera on.

  1. 01It works on my machine. My machine is the only one with the .env file, so in fairness it is the only one that knows the password.
  2. 02It works on my machine, which I have not restarted since March. Please nobody touch it.
  3. 03It works on my machine, in the branch I have not pushed.
  4. 04“Works on my machine” is not a bug report. It is a location.
  5. 05It works on my machine. Please describe your machine. Slowly, and with version numbers.
  6. 06It worked on my machine until I cleared the cache. Now it fails everywhere, which is at least consistent.
  7. 07It works on my machine and on one other machine, which is also mine.
  8. 08It works on my machine. My machine has 64 GB of memory and a fan that sounds like a decision.
  9. 09It works on my machine. I am as surprised as you are that this is not enough.
  10. 10It works on my machine. I would invite you over, but my machine does not take visitors.

02 The excuses · 10 jokes

Excuses, ranked by how often they are true

Every excuse below is a real cause of a real bug. That is what makes them so hard to argue with, and so easy to say in a meeting without looking up from the laptop.

  1. 11Did you try it on the right branch? I mean my branch. The one only I have.
  2. 12It must be a caching thing. Sometimes it is a caching thing, and that is the whole problem with saying it.
  3. 13Works on Node 18. CI runs Node 20. Production runs a version nobody has written down.
  4. 14You need to run the migration. Which one. The one I ran on my laptop in June.
  5. 15It works if you open it in the browser I use, at the window size I use, logged in as me.
  6. 16Config.ts and config.ts are the same file on my laptop and two different opinions on Linux.
  7. 17It needs one environment variable. It is in my shell profile, between two others it also needs.
  8. 18Works fine on the office Wi-Fi. Have you tried being at the office?
  9. 19There is no lockfile, but there is a feeling, and the feeling says it was fine last week.
  10. 20The library updated overnight. My machine did not hear about it, so my machine is still happy.

03 The ticket · 10 jokes

Cannot reproduce

Cannot reproduce is what the bug report says after the developer tried it on their own machine. It is the sentence from section one, filed in a ticket, with a status dropdown.

  1. 21Closed as cannot reproduce. Reopened by the reporter with a screen recording and no other comment.
  2. 22Cannot reproduce. Tried it eleven times. It happens on the twelfth, but only during a demo.
  3. 23Steps to reproduce: use the app. Expected: it works. Actual: it did not. Priority: today.
  4. 24Cannot reproduce locally. Can reproduce in production, which is the expensive place to reproduce things.
  5. 25Cannot reproduce on purpose. Can reproduce by accident, every time someone shares their screen.
  6. 26The bug only happens on the third Tuesday of the month. Today is the third Tuesday. It did not happen. It is waiting.
  7. 27Reporter's browser: “the normal one.” Reporter's account: the one with all the data.
  8. 28Cannot reproduce. Added logging. The logging fixed it. Nobody is removing the logging.
  9. 29Resolution: works for me. Reporter's resolution: works for nobody.
  10. 30Cannot reproduce. Please try clearing your cache, restarting, and being someone else.

04 The release notes · 10 jokes

Known issue, documented

Once a bug can be reproduced but not fixed this release, it becomes a known issue. It goes in the release notes with a workaround, and then, in most codebases, it stays for a while.

  1. 31Known issue: the app logs you out if you leave it open over lunch. Workaround: shorter lunches.
  2. 32Known issue since version 2.1. We are on version 6. It has seniority now.
  3. 33Listed under known issues, in a part of the release notes nobody has scrolled to since the redesign.
  4. 34A known issue is a bug with paperwork.
  5. 35Workaround: refresh the page twice. Not once. Once makes it worse.
  6. 36The issue has a ticket, a workaround, a support macro and one customer who would be upset if we fixed it.
  7. 37Known issue: dates display one day early for anyone west of the office.
  8. 38Promoted from bug to known issue to expected behavior over four releases, without a single code change.
  9. 39Known issue: the export button exports. Just not what was on the screen.
  10. 40Known issue, triaged in 2023. The triage is also a known issue now.

05 Other machines · 10 jokes

Staging, preview and production

The modern answer to “works on my machine” is a shared machine: CI, a staging server, a preview deployment for every pull request. The excuses did not go away. They moved servers.

  1. 41It works on staging. Staging is my machine with a load balancer.
  2. 42It works in the preview. The preview points at the staging database, which has three users, all named test.
  3. 43The preview is building. I am sharing my screen so everyone can watch it build together.
  4. 44Works in production. Fails on staging. Nobody wants to look into it, in case it is contagious.
  5. 45It passed CI. CI is just someone else's machine with stricter parents.
  6. 46Works in the container. The container works on my machine. We are one layer deeper and no closer.
  7. 47Staging is down, so the plan is to test in production, carefully. The word carefully is doing all of the work.
  8. 48The preview link works for everyone except the client, who is on a VPN that has never heard of it.
  9. 49Works in dev mode. In production mode it is a different app that happens to share our name.
  10. 50Nobody has deployed to staging since spring. It is now the most stable thing we own.

How to stop saying it

Commit the lockfile, so every machine installs the same versions. Pin the runtime with a file like .nvmrc or .tool-versions, so nobody is on a different major version by accident.

Keep a .env.example that lists every variable the app needs, with fake values. A surprising number of these bugs are one variable that exists on one laptop and nowhere else.

Treat CI as the neutral machine. If it fails there, the bug is real, whatever your laptop says. For bigger setups, dev containers give everyone the same operating system and tools.

When it happens anyway, compare instead of arguing: print the versions on both machines, do a clean install and run the exact command CI runs. The difference is usually in the first three things you check.

If you work with the person who says it, they already know which machine. The gift guide for programmers has the tee, the mug and the rest of the lines by budget.

06 The plain answers

Questions.

What does “it works on my machine” mean?
It means code runs for the developer who wrote it but fails somewhere else: in CI, on a teammate's laptop or in production. The cause is almost always a difference between the two environments. Full definition →
How do you fix a “works on my machine” bug?
Make the environments agree. Commit the lockfile, pin runtime versions, keep a .env.example with every variable the app needs, and treat CI as the neutral machine. Then compare versions on both machines instead of guessing.
What does “cannot reproduce” mean on a bug report?
It means a developer followed the report and could not make the bug happen, so it cannot be confirmed or fixed yet. It is not a verdict that the reporter was wrong. Usually a detail about the environment or timing is missing. Cannot reproduce in the dictionary →
What is a known issue?
A bug or limitation the team has confirmed and documented but not fixed yet. It is usually listed in the release notes with the versions affected and a workaround.

More jokes

Keep reading.