[{"Id":11219,"Author":{"Name":"Remy Porter","FirstName":"Remy","ShortDescription":"Computers were a mistake, so I accidentally became a farmer? Editor-in-Chief for TDWTF.","DescriptionHtml":"\u003cp\u003eRemy is a veteran developer who writes software for farming robots. They pick tomatoes.\u003c/p\u003e\r\n\u003cp\u003eHe\u0027s often on stage, doing improv comedy, but insists that \u003cem\u003ehe\u003c/em\u003e isn\u0027t doing comedy- it\u0027s deadly serious. You\u0027re laughing at him, not with him. That, by the way, is usually true- you\u0027re laughing at him, not with him.\u003c/p\u003e","Slug":"remy-porter","IsAdmin":true,"IsActive":true,"ImageUrl":"https://s3.amazonaws.com/remy.jetpackshark.com/remy-thumb.jpg"},"Status":"Published","SummaryHtml":"\u003cblockquote\u003eAs the US took this weekend to celebrate their complicated relationship with tyranny, we reach back through the archives for another story of tyrants. If you think about it, the Declaration of Independence is basically the same thing as quitting without notice. \u003ca href=\"https://thedailywtf.com/articles/Difficult-Personality\"\u003eOriginal\u003c/a\u003e --\u003cstrong\u003eRemy\u003c/strong\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eIt was \u003cb\u003eSteve\u003c/b\u003e\u0026#39;s first week on the job, and he had plenty of questions about the code base and the new features he was supposed to implement. He muddled through for most of the week, but Friday morning he hit a brick wall and needed to talk to Bill, the architect.\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Can I meet with you for like an hour to go over things?\u0026#34; Steve asked.\n\u003c/p\u003e","BodyHtml":"\u003cblockquote\u003eAs the US took this weekend to celebrate their complicated relationship with tyranny, we reach back through the archives for another story of tyrants. If you think about it, the Declaration of Independence is basically the same thing as quitting without notice. \u003ca href=\"https://thedailywtf.com/articles/Difficult-Personality\"\u003eOriginal\u003c/a\u003e --\u003cstrong\u003eRemy\u003c/strong\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eIt was \u003cb\u003eSteve\u003c/b\u003e\u0026#39;s first week on the job, and he had plenty of questions about the code base and the new features he was supposed to implement. He muddled through for most of the week, but Friday morning he hit a brick wall and needed to talk to Bill, the architect.\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Can I meet with you for like an hour to go over things?\u0026#34; Steve asked.\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;No.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Can I get half an hour then? I h-\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;\u003ci\u003eNo\u003c/i\u003e. Company meeting, every Friday, \u003cspan onclick=\"cornify_add();return false;\" title=\"click me!\"\u003e12-5pm\u003c/span\u003e\u003cscript type=\"text/javascript\" src=\"//www.cornify.com/js/cornify.js\"\u003e\u003c/script\u003e. It should be on your calendar. I\u0026#39;ll forward the invite.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nBill also couldn\u0026#39;t free up time in the morning, so that meant Steve was stuck until Monday afternoon. Still, it probably wasn\u0026#39;t all bad. He assumed that since this was a small company, in startup mode, it was going to be one of those meetings that was less meeting and more party. He had heard about one company in town that had a kegger every Friday afternoon.\n\u003c/p\u003e\u003cp\u003e\nSteve really should have known better. During his interview, the actual technical questions were thin on the ground. It focused more on \u0026#34;soft skills\u0026#34;, like time management. He fielded a lot of questions about how best to manage his time. The other question that really stuck out in his mind was the standard, \u0026#34;Have you ever had to deal with a difficult personality in the workplace? How did you deal with it?\u0026#34; It was memorable, less because the question itself was unusual, but because at least six variations of the same question showed up in the interview.\n\u003c/p\u003e\u003cp\u003e\nOn his very first day, he learned who the difficult personality was: Frank, the boss and grand-high pooba of the dev team. Around 2PM Frank lumberghed \u003c!-- this is my new favorite verb. Honestly, one of the best things about English is how easily words can change parts of speech. Verbing nouns and nouning verbs is just a basic part of the language. I honestly think that\u0027s a big part of the reason English has spread so virally. That and the fact that two successive global empires have used English as their lingua franca.--\u003e himself into Steve\u0026#39;s cube. \u0026#34;Yeah, we\u0026#39;ve got a little problem,\u0026#34; Frank said. \u0026#34;I\u0026#39;ve noticed you spending a great deal of time in the break room.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Oh, yeah, I was just going back for more coffee,\u0026#34; Steve said with an awkward laugh. \u0026#34;You know how it is with programmers- we\u0026#39;re fueled by caffeine.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Yeah, well, if you could just go ahead and make sure you\u0026#39;re at your desk doing work, that would be great.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nAs it turned out, Frank had gone easy on Steve because it was Steve\u0026#39;s first day. The next day, Steve sat in on Bill\u0026#39;s planning meeting- a 4-hour marathon to organize the development backlog and parcel out work. Halfway through, Bill called for a break. He and a few other co-workers darted outside to gradually commit suicide via cancer, while everybody else hung around the room committing suicide by donut. And then Frank walked in.\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;What\u0026#39;s happening?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;It\u0026#39;s um… just a little break,\u0026#34; one of the devs replied. \u0026#34;Bill\u0026#39;s outside.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;I see.\u0026#34; Frank loitered in the room until Bill returned. The instant Bill\u0026#39;s foot crossed the threshold of the meeting room, Frank\u0026#39;s human facade was stripped away, and a spitting, slavering demon replaced him. He proceeded to dress Bill down, back up and right back down for disrespecting his team, disrespecting the company, disrespecting Frank and Frank\u0026#39;s poor elderly mother with his attitude. He closed with, \u0026#34;They\u0026#39;re \u003ci\u003edevelopers\u003c/i\u003e and I want them sitting around and developing! Not waiting for you to finish your smoke breaks!\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nOn Thursday, Steve got to drive a meeting to show off the latest batch of features the dev team had completed. When he turned on the projector, Frank asked, \u0026#34;What\u0026#39;s wrong with your computer?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Um… nothing?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;The desktop is wrong! None of the icons are in the right place!\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nLike most developers, Steve had changed the wallpaper and reorganized his desktop to suit his working style. Unfortunately, his transgression against the default desktop settings set Frank off on a long rant that consumed the entirety of the meeting. Steve was lucky, Frank claimed, that he wasn\u0026#39;t fired on the spot. Standard work was vitally important, and personalization was frowned upon. \u0026#34;It\u0026#39;s vitally important that any developer can use any other developer\u0026#39;s computer- we can\u0026#39;t afford to waste a minute of time just because you needed to be a special little snowflake!\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nBy the time the Friday afternoon meeting rolled around, Steve should have been expecting some kind of Frank-led time management course. Instead, Bill handed him a mop. \u0026#34;New blood gets mop duties. Start in the break room, and then hit the other common areas.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Excuse me?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Frank\u0026#39;s orders. Every Friday, we spend the afternoon cleaning the office, from top to bottom.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;There isn\u0026#39;t a cleaning crew?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Oh, there is,\u0026#34; Bill said. \u0026#34;Frank doesn\u0026#39;t trust them to do a good job.\u0026#34; That weekend, Steve decided to take Frank\u0026#39;s lessons on time management to heart, and immediately left to seek employment that didn\u0026#39;t involve wasting his time.\u003c/p\u003e\n\u003c!-- Easy Reader Version: Cleanliness and godliness: both a waste of time? --\u003e","BodyAndAdHtml":"\u003cblockquote\u003eAs the US took this weekend to celebrate their complicated relationship with tyranny, we reach back through the archives for another story of tyrants. If you think about it, the Declaration of Independence is basically the same thing as quitting without notice. \u003ca href=\"https://thedailywtf.com/articles/Difficult-Personality\"\u003eOriginal\u003c/a\u003e --\u003cstrong\u003eRemy\u003c/strong\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eIt was \u003cb\u003eSteve\u003c/b\u003e\u0026#39;s first week on the job, and he had plenty of questions about the code base and the new features he was supposed to implement. He muddled through for most of the week, but Friday morning he hit a brick wall and needed to talk to Bill, the architect.\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Can I meet with you for like an hour to go over things?\u0026#34; Steve asked.\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;No.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Can I get half an hour then? I h-\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;\u003ci\u003eNo\u003c/i\u003e. Company meeting, every Friday, \u003cspan onclick=\"cornify_add();return false;\" title=\"click me!\"\u003e12-5pm\u003c/span\u003e\u003cscript type=\"text/javascript\" src=\"//www.cornify.com/js/cornify.js\"\u003e\u003c/script\u003e. It should be on your calendar. I\u0026#39;ll forward the invite.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nBill also couldn\u0026#39;t free up time in the morning, so that meant Steve was stuck until Monday afternoon. Still, it probably wasn\u0026#39;t all bad. He assumed that since this was a small company, in startup mode, it was going to be one of those meetings that was less meeting and more party. He had heard about one company in town that had a kegger every Friday afternoon.\n\u003c/p\u003e\u003cp\u003e\nSteve really should have known better. During his interview, the actual technical questions were thin on the ground. It focused more on \u0026#34;soft skills\u0026#34;, like time management. He fielded a lot of questions about how best to manage his time. The other question that really stuck out in his mind was the standard, \u0026#34;Have you ever had to deal with a difficult personality in the workplace? How did you deal with it?\u0026#34; It was memorable, less because the question itself was unusual, but because at least six variations of the same question showed up in the interview.\n\u003c/p\u003e\u003cp\u003e\nOn his very first day, he learned who the difficult personality was: Frank, the boss and grand-high pooba of the dev team. Around 2PM Frank lumberghed \u003c!-- this is my new favorite verb. Honestly, one of the best things about English is how easily words can change parts of speech. Verbing nouns and nouning verbs is just a basic part of the language. I honestly think that\u0027s a big part of the reason English has spread so virally. That and the fact that two successive global empires have used English as their lingua franca.--\u003e himself into Steve\u0026#39;s cube. \u0026#34;Yeah, we\u0026#39;ve got a little problem,\u0026#34; Frank said. \u0026#34;I\u0026#39;ve noticed you spending a great deal of time in the break room.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Oh, yeah, I was just going back for more coffee,\u0026#34; Steve said with an awkward laugh. \u0026#34;You know how it is with programmers- we\u0026#39;re fueled by caffeine.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Yeah, well, if you could just go ahead and make sure you\u0026#39;re at your desk doing work, that would be great.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nAs it turned out, Frank had gone easy on Steve because it was Steve\u0026#39;s first day. The next day, Steve sat in on Bill\u0026#39;s planning meeting- a 4-hour marathon to organize the development backlog and parcel out work. Halfway through, Bill called for a break. He and a few other co-workers darted outside to gradually commit suicide via cancer, while everybody else hung around the room committing suicide by donut. And then Frank walked in.\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;What\u0026#39;s happening?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;It\u0026#39;s um… just a little break,\u0026#34; one of the devs replied. \u0026#34;Bill\u0026#39;s outside.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;I see.\u0026#34; Frank loitered in the room until Bill returned. The instant Bill\u0026#39;s foot crossed the threshold of the meeting room, Frank\u0026#39;s human facade was stripped away, and a spitting, slavering demon replaced him. He proceeded to dress Bill down, back up and right back down for disrespecting his team, disrespecting the company, disrespecting Frank and Frank\u0026#39;s poor elderly mother with his attitude. He closed with, \u0026#34;They\u0026#39;re \u003ci\u003edevelopers\u003c/i\u003e and I want them sitting around and developing! Not waiting for you to finish your smoke breaks!\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nOn Thursday, Steve got to drive a meeting to show off the latest batch of features the dev team had completed. When he turned on the projector, Frank asked, \u0026#34;What\u0026#39;s wrong with your computer?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Um… nothing?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;The desktop is wrong! None of the icons are in the right place!\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nLike most developers, Steve had changed the wallpaper and reorganized his desktop to suit his working style. Unfortunately, his transgression against the default desktop settings set Frank off on a long rant that consumed the entirety of the meeting. Steve was lucky, Frank claimed, that he wasn\u0026#39;t fired on the spot. Standard work was vitally important, and personalization was frowned upon. \u0026#34;It\u0026#39;s vitally important that any developer can use any other developer\u0026#39;s computer- we can\u0026#39;t afford to waste a minute of time just because you needed to be a special little snowflake!\u0026#34;\n\u003c/p\u003e\u003cp\u003e\nBy the time the Friday afternoon meeting rolled around, Steve should have been expecting some kind of Frank-led time management course. Instead, Bill handed him a mop. \u0026#34;New blood gets mop duties. Start in the break room, and then hit the other common areas.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Excuse me?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Frank\u0026#39;s orders. Every Friday, we spend the afternoon cleaning the office, from top to bottom.\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;There isn\u0026#39;t a cleaning crew?\u0026#34;\n\u003c/p\u003e\u003cp\u003e\n\u0026#34;Oh, there is,\u0026#34; Bill said. \u0026#34;Frank doesn\u0026#39;t trust them to do a good job.\u0026#34; That weekend, Steve decided to take Frank\u0026#39;s lessons on time management to heart, and immediately left to seek employment that didn\u0026#39;t involve wasting his time.\u003c/p\u003e\n\u003c!-- Easy Reader Version: Cleanliness and godliness: both a waste of time? --\u003e\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eBuildMaster\u003c/a\u003e allows you to create a self-service release management platform that allows different teams to manage their applications. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eExplore how!\u003c/a\u003e \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"Classic WTF: Difficult Personality","RssTitle":"Best of…: Classic WTF: Difficult Personality","CachedCommentCount":10,"LastCommentDate":"\/Date(1783381748610)\/","LastCommentDateDescription":"2026-07-06","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1783319400000)\/","ISODate":"2026-07-06","DisplayDate":"2026-07-06","Series":{"Slug":"best-of","Title":"Best of…","Description":"Our \"best\" articles of years past.","CssClass":"soapbox"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eBuildMaster\u003c/a\u003e allows you to create a self-service release management platform that allows different teams to manage their applications. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eExplore how!\u003c/a\u003e \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/classic-wtf-difficult-personality","CommentsUrl":"https://thedailywtf.com/articles/comments/classic-wtf-difficult-personality","Slug":"classic-wtf-difficult-personality","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2fclassic-wtf-difficult-personality+-+Classic+WTF%3a+Difficult+Personality+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2fclassic-wtf-difficult-personality\u0026t=Classic+WTF%3a+Difficult+Personality+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=Classic%20WTF:%20Difficult%20Personality:%20https://thedailywtf.com/articles/classic-wtf-difficult-personality","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2fclassic-wtf-difficult-personality","PreviousArticleId":11218,"PreviousArticleTitle":"Kaids Hen 2025","PreviousArticleSlug":"kaids-hen-2025","PreviousArticleUrl":"//thedailywtf.com/articles/kaids-hen-2025","NextArticleId":null,"NextArticleTitle":null,"NextArticleSlug":null,"NextArticleUrl":"//thedailywtf.com/articles/"},{"Id":11218,"Author":{"Name":"Lyle Seaman","FirstName":"Lyle","ShortDescription":"networking, security infra and filesystems kernel hacker turned application programmer, SRE and engineering manager, Lyle traded tilting at windmills for viking at Vikings but couldn\u0027t catch any.","DescriptionHtml":null,"Slug":"lyle-seaman","IsAdmin":true,"IsActive":true,"ImageUrl":"/images/imageslws/viking.jpg"},"Status":"Published","SummaryHtml":"\u003cp\u003eOn the recurring transport\nbeat, this week brings us a handful of wtfs relating to\nmass transit. Nothing private.\u003c/p\u003e\n\n\u003cp\u003e\u0026#34;Thank you for traveling with Deutsche Bahn\u0026#34; sneers \n\u003cstrong\u003ePhilipp H.\u003c/strong\u003e bitterly, explaining \n\u0026#34;The German railroad company sadly is famous for often being\nlate and also has lots of other issues. While booking\nmy next trip I\u0026#39;m asked to pick my seats for\nthe reservation. - Looks like they now stack seats on\neach other or on the table. - hopefully the seats\nfacing the wall at least have a window there. -\nwinning the jackpot lottery also seems more likely than understanding\ntheir seat numbering system.\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003c/blockquote\u003e","BodyHtml":"\u003cp\u003eOn the recurring transport\nbeat, this week brings us a handful of wtfs relating to\nmass transit. Nothing private.\u003c/p\u003e\n\n\u003cp\u003e\u0026#34;Thank you for traveling with Deutsche Bahn\u0026#34; sneers \n\u003cstrong\u003ePhilipp H.\u003c/strong\u003e bitterly, explaining \n\u0026#34;The German railroad company sadly is famous for often being\nlate and also has lots of other issues. While booking\nmy next trip I\u0026#39;m asked to pick my seats for\nthe reservation. - Looks like they now stack seats on\neach other or on the table. - hopefully the seats\nfacing the wall at least have a window there. -\nwinning the jackpot lottery also seems more likely than understanding\ntheir seat numbering system.\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#1f2002fe488641a18f86f36d3c3530b0\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"1f2002fe488641a18f86f36d3c3530b0\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/1f2002fe488641a18f86f36d3c3530b0.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\n\u003cp\u003e\u0026#34;Whöøps!\u0026#34; wröte \n\u003cstrong\u003eAdrien K.\u003c/strong\u003e metallically. \n\u0026#34;Other monitors on that train were fine. It\u0026#39;s just this\none which refused to display unicode characters correctly.\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#35c86ef3f32645b9b26bbe8c1d48d14a\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"35c86ef3f32645b9b26bbe8c1d48d14a\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/35c86ef3f32645b9b26bbe8c1d48d14a.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003e\u0026#34;Trains slashdotted\u0026#34;\n\u003cstrong\u003ePeter G.\u003c/strong\u003e\n\u0026#34;Looks like the train has been slashdotted...\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#6ce6b2f1c9ea41318bf229c8c9731c3d\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"6ce6b2f1c9ea41318bf229c8c9731c3d\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/6ce6b2f1c9ea41318bf229c8c9731c3d.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003e\n\u003cstrong\u003eErnesto\u003c/strong\u003e reports a simple typo, included here\nbecause it relates to a story I have long found both sobering and inspiring. \nHe relates: \u0026#34;Translated from Italian, this reads \u0026#34;We got to come back a few\nyears. Exactly back to July 19th, 2989 ...\u0026#34; \u003ca href=\"https://www.punto-informatico.it/pilota-salva-vita-185-passeggeri-morte/\"\u003e\nItalian source.\u003c/a\u003e \nThe news was about a plane crash with some\ndeaths, not the best argument for joking. But the author\u0026#39;s\nfinger slipped a little bit and we\u0026#39;re going back to\nthe future. The bright side, the article tells how 185\npassengers out of 296 survived thanks to the pilots.\u0026#34;\n\u003cbr/\u003e Despite the tragic loss of life, it is\nan astounding story of skill and teamwork. \nIf you\u0026#39;re unfamiliar, the \n\u003ca href=\"https://en.wikipedia.org/wiki/United_Airlines_Flight_232\"\u003eEnglish Wikipedia is here.\u003c/a\u003e\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#708696118d8d4242922bade1f75bf55a\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"708696118d8d4242922bade1f75bf55a\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/708696118d8d4242922bade1f75bf55a.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eOn a more light-hearted note, \n\u003cstrong\u003eMichael R.\u003c/strong\u003e sent in a photo of a\nheavily-modified double-decker Delorean, which proposes\nto deliver passengers before they board.  That must have been some\nparty to inspire repeat visits!\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#a586fca1db4a439b84ce7ad53bd7786a\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"a586fca1db4a439b84ce7ad53bd7786a\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/a586fca1db4a439b84ce7ad53bd7786a.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n","BodyAndAdHtml":"\u003cp\u003eOn the recurring transport\nbeat, this week brings us a handful of wtfs relating to\nmass transit. Nothing private.\u003c/p\u003e\n\n\u003cp\u003e\u0026#34;Thank you for traveling with Deutsche Bahn\u0026#34; sneers \n\u003cstrong\u003ePhilipp H.\u003c/strong\u003e bitterly, explaining \n\u0026#34;The German railroad company sadly is famous for often being\nlate and also has lots of other issues. While booking\nmy next trip I\u0026#39;m asked to pick my seats for\nthe reservation. - Looks like they now stack seats on\neach other or on the table. - hopefully the seats\nfacing the wall at least have a window there. -\nwinning the jackpot lottery also seems more likely than understanding\ntheir seat numbering system.\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#1f2002fe488641a18f86f36d3c3530b0\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"1f2002fe488641a18f86f36d3c3530b0\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/1f2002fe488641a18f86f36d3c3530b0.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\n\u003cp\u003e\u0026#34;Whöøps!\u0026#34; wröte \n\u003cstrong\u003eAdrien K.\u003c/strong\u003e metallically. \n\u0026#34;Other monitors on that train were fine. It\u0026#39;s just this\none which refused to display unicode characters correctly.\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#35c86ef3f32645b9b26bbe8c1d48d14a\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"35c86ef3f32645b9b26bbe8c1d48d14a\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/35c86ef3f32645b9b26bbe8c1d48d14a.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003e\u0026#34;Trains slashdotted\u0026#34;\n\u003cstrong\u003ePeter G.\u003c/strong\u003e\n\u0026#34;Looks like the train has been slashdotted...\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#6ce6b2f1c9ea41318bf229c8c9731c3d\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"6ce6b2f1c9ea41318bf229c8c9731c3d\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/6ce6b2f1c9ea41318bf229c8c9731c3d.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003e\n\u003cstrong\u003eErnesto\u003c/strong\u003e reports a simple typo, included here\nbecause it relates to a story I have long found both sobering and inspiring. \nHe relates: \u0026#34;Translated from Italian, this reads \u0026#34;We got to come back a few\nyears. Exactly back to July 19th, 2989 ...\u0026#34; \u003ca href=\"https://www.punto-informatico.it/pilota-salva-vita-185-passeggeri-morte/\"\u003e\nItalian source.\u003c/a\u003e \nThe news was about a plane crash with some\ndeaths, not the best argument for joking. But the author\u0026#39;s\nfinger slipped a little bit and we\u0026#39;re going back to\nthe future. The bright side, the article tells how 185\npassengers out of 296 survived thanks to the pilots.\u0026#34;\n\u003cbr/\u003e Despite the tragic loss of life, it is\nan astounding story of skill and teamwork. \nIf you\u0026#39;re unfamiliar, the \n\u003ca href=\"https://en.wikipedia.org/wiki/United_Airlines_Flight_232\"\u003eEnglish Wikipedia is here.\u003c/a\u003e\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#708696118d8d4242922bade1f75bf55a\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"708696118d8d4242922bade1f75bf55a\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/708696118d8d4242922bade1f75bf55a.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eOn a more light-hearted note, \n\u003cstrong\u003eMichael R.\u003c/strong\u003e sent in a photo of a\nheavily-modified double-decker Delorean, which proposes\nto deliver passengers before they board.  That must have been some\nparty to inspire repeat visits!\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#a586fca1db4a439b84ce7ad53bd7786a\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"a586fca1db4a439b84ce7ad53bd7786a\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/07/02/a586fca1db4a439b84ce7ad53bd7786a.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tProGet’s got you covered with security and access controls on your NuGet feeds. \u003ca href=\"https://inedo.com/proget/private-nuget-server?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=GotYouCoveredFooter\u0026amp;utm_campaign=Cyclops2020\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"Kaids Hen 2025","RssTitle":"Error\u0027d: Kaids Hen 2025","CachedCommentCount":14,"LastCommentDate":"\/Date(1783374894743)\/","LastCommentDateDescription":"2026-07-06","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1783060200000)\/","ISODate":"2026-07-03","DisplayDate":"2026-07-03","Series":{"Slug":"errord","Title":"Error\u0027d","Description":"Error\u0027d features fun error messages and other visual oddities from the world of IT.","CssClass":"errord"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tProGet’s got you covered with security and access controls on your NuGet feeds. \u003ca href=\"https://inedo.com/proget/private-nuget-server?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=GotYouCoveredFooter\u0026amp;utm_campaign=Cyclops2020\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/kaids-hen-2025","CommentsUrl":"https://thedailywtf.com/articles/comments/kaids-hen-2025","Slug":"kaids-hen-2025","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2fkaids-hen-2025+-+Kaids+Hen+2025+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2fkaids-hen-2025\u0026t=Kaids+Hen+2025+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=Kaids%20Hen%202025:%20https://thedailywtf.com/articles/kaids-hen-2025","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2fkaids-hen-2025","PreviousArticleId":11217,"PreviousArticleTitle":"The Most Dangerous Game","PreviousArticleSlug":"the-most-dangerous-game","PreviousArticleUrl":"//thedailywtf.com/articles/the-most-dangerous-game","NextArticleId":11219,"NextArticleTitle":"Classic WTF: Difficult Personality","NextArticleSlug":"classic-wtf-difficult-personality","NextArticleUrl":"//thedailywtf.com/articles/classic-wtf-difficult-personality"},{"Id":11217,"Author":{"Name":"Remy Porter","FirstName":"Remy","ShortDescription":"Computers were a mistake, so I accidentally became a farmer? Editor-in-Chief for TDWTF.","DescriptionHtml":"\u003cp\u003eRemy is a veteran developer who writes software for farming robots. They pick tomatoes.\u003c/p\u003e\r\n\u003cp\u003eHe\u0027s often on stage, doing improv comedy, but insists that \u003cem\u003ehe\u003c/em\u003e isn\u0027t doing comedy- it\u0027s deadly serious. You\u0027re laughing at him, not with him. That, by the way, is usually true- you\u0027re laughing at him, not with him.\u003c/p\u003e","Slug":"remy-porter","IsAdmin":true,"IsActive":true,"ImageUrl":"https://s3.amazonaws.com/remy.jetpackshark.com/remy-thumb.jpg"},"Status":"Published","SummaryHtml":"\u003cp\u003eWhile we talk about bad video game code periodically, we generally avoid it because it\u0026#39;s so specialized and while something like \u003ca href=\"https://en.wikipedia.org/wiki/Fast_inverse_square_root\"\u003efast inverse square root\u003c/a\u003e is bad code from a \u003cem\u003emaintainability\u003c/em\u003e perspective, it\u0026#39;s great code for abusing floating points to make math fast.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIşıtan Yıldız\u003c/strong\u003e sends us a snippet from a game\u0026#39;s config file. I won\u0026#39;t pick on the specific game, but this isn\u0026#39;t some random build of TuxCart, but a released game sold on multiple platforms. It\u0026#39;s from a small team, but it\u0026#39;s an actual professional product running on many devices. What\u0026#39;s notable about this is the game \u003cem\u003ehas multiplayer\u003c/em\u003e elements, which means networking code, which means…\u003c/p\u003e\n","BodyHtml":"\u003cp\u003eWhile we talk about bad video game code periodically, we generally avoid it because it\u0026#39;s so specialized and while something like \u003ca href=\"https://en.wikipedia.org/wiki/Fast_inverse_square_root\"\u003efast inverse square root\u003c/a\u003e is bad code from a \u003cem\u003emaintainability\u003c/em\u003e perspective, it\u0026#39;s great code for abusing floating points to make math fast.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIşıtan Yıldız\u003c/strong\u003e sends us a snippet from a game\u0026#39;s config file. I won\u0026#39;t pick on the specific game, but this isn\u0026#39;t some random build of TuxCart, but a released game sold on multiple platforms. It\u0026#39;s from a small team, but it\u0026#39;s an actual professional product running on many devices. What\u0026#39;s notable about this is the game \u003cem\u003ehas multiplayer\u003c/em\u003e elements, which means networking code, which means…\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-c\"\u003enet_socks_buffer_size\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e4096\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//I wouldn\u0026#39;t change this if I were you\u003c/span\u003e\nnet_max_message_size\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e32768\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//changing this will require restarting the game.  MUST be power of 2, don\u0026#39;t be a dick and make it too big\u003c/span\u003e\nnet_max_download_frames\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e16\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//changing this will require restarting the game.  MUST be power of 2 and smaller than net_max_message_size\u003c/span\u003e\nnet_udp_packet_size\t\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e65536\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//576 bytes the \u0026#34;recommended\u0026#34; fragment cutoff, ipv6 requires 1080.  The game will check automatically and make sure you aren\u0026#39;t out of range (at least on windows it can do this)\u003c/span\u003e\nnet_udp_packet_send_buffer_size\t\t\t= \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//how many packets it can store before sending (ideally it shouldn\u0026#39;t be storing anything but threads are a b*)\u003c/span\u003e\nnet_udp_packet_recv_buffer_size\t\t\t= \u003cspan class=\"hljs-number\"\u003e8\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//how many packets we can receive in 1 frame (8 is defualt, it\u0026#39;ll discard packets that don\u0026#39;t fit... it\u0026#39;ll warn you in the console when this happens)\u003c/span\u003e\nnet_udp_force_specified_size\t\t\t= \u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//overrides what the OS recommends, could disable networking and maybe crash the game? who knows\u003c/span\u003e\nnet_udp_enable_checksum\t\t\t\t\t= \u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//probably unnecessary to have UDP checksums, but you can if you want for some reason\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e… it means you can configure your copy of the game to attempt DoS attacks against other players\u0026#39; network stacks.\u003c/p\u003e\n\u003cp\u003eI enjoy the warning here: don\u0026#39;t be a dick. You \u003cem\u003ecan\u003c/em\u003e set your max message size to any power of 2, but don\u0026#39;t be a \u003cem\u003edick\u003c/em\u003e about it.\u003c/p\u003e\n\u003cp\u003eThe networking settings are fun, and I\u0026#39;m glad to know that I can probably cause the game to crash (either my copy or my fellow players\u0026#39; copies). But can I do something \u003cem\u003edangerous\u003c/em\u003e or even… oh, I don\u0026#39;t know, \u003cem\u003ecrazy\u003c/em\u003e? I really hope I can.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-c\"\u003esys_ignore_variable_constraints\t\t\t= \u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//DANGEROUS AS F***, leave off goddamnit you\u0026#39;re crazy if you turn this on\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThat\u0026#39;s the spirit! I want every game to add this config flag IMMEDIATELY. Actually, I\u0026#39;m working on a robot: I\u0026#39;m \u003cem\u003edefinitely\u003c/em\u003e going to add that to my robot software. I\u0026#39;m gonna make the robot arm punch through a wall (note: it\u0026#39;s not supposed to punch through walls, and I think a number of people would get very upset with me).\u003c/p\u003e\n\u003c!-- Easy Reader Version: DANGEROUS AS FUCK --\u003e","BodyAndAdHtml":"\u003cp\u003eWhile we talk about bad video game code periodically, we generally avoid it because it\u0026#39;s so specialized and while something like \u003ca href=\"https://en.wikipedia.org/wiki/Fast_inverse_square_root\"\u003efast inverse square root\u003c/a\u003e is bad code from a \u003cem\u003emaintainability\u003c/em\u003e perspective, it\u0026#39;s great code for abusing floating points to make math fast.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eIşıtan Yıldız\u003c/strong\u003e sends us a snippet from a game\u0026#39;s config file. I won\u0026#39;t pick on the specific game, but this isn\u0026#39;t some random build of TuxCart, but a released game sold on multiple platforms. It\u0026#39;s from a small team, but it\u0026#39;s an actual professional product running on many devices. What\u0026#39;s notable about this is the game \u003cem\u003ehas multiplayer\u003c/em\u003e elements, which means networking code, which means…\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-c\"\u003enet_socks_buffer_size\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e4096\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//I wouldn\u0026#39;t change this if I were you\u003c/span\u003e\nnet_max_message_size\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e32768\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//changing this will require restarting the game.  MUST be power of 2, don\u0026#39;t be a dick and make it too big\u003c/span\u003e\nnet_max_download_frames\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e16\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//changing this will require restarting the game.  MUST be power of 2 and smaller than net_max_message_size\u003c/span\u003e\nnet_udp_packet_size\t\t\t\t\t\t= \u003cspan class=\"hljs-number\"\u003e65536\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//576 bytes the \u0026#34;recommended\u0026#34; fragment cutoff, ipv6 requires 1080.  The game will check automatically and make sure you aren\u0026#39;t out of range (at least on windows it can do this)\u003c/span\u003e\nnet_udp_packet_send_buffer_size\t\t\t= \u003cspan class=\"hljs-number\"\u003e4\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//how many packets it can store before sending (ideally it shouldn\u0026#39;t be storing anything but threads are a b*)\u003c/span\u003e\nnet_udp_packet_recv_buffer_size\t\t\t= \u003cspan class=\"hljs-number\"\u003e8\u003c/span\u003e;\t\t\t\t\u003cspan class=\"hljs-comment\"\u003e//how many packets we can receive in 1 frame (8 is defualt, it\u0026#39;ll discard packets that don\u0026#39;t fit... it\u0026#39;ll warn you in the console when this happens)\u003c/span\u003e\nnet_udp_force_specified_size\t\t\t= \u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//overrides what the OS recommends, could disable networking and maybe crash the game? who knows\u003c/span\u003e\nnet_udp_enable_checksum\t\t\t\t\t= \u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//probably unnecessary to have UDP checksums, but you can if you want for some reason\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e… it means you can configure your copy of the game to attempt DoS attacks against other players\u0026#39; network stacks.\u003c/p\u003e\n\u003cp\u003eI enjoy the warning here: don\u0026#39;t be a dick. You \u003cem\u003ecan\u003c/em\u003e set your max message size to any power of 2, but don\u0026#39;t be a \u003cem\u003edick\u003c/em\u003e about it.\u003c/p\u003e\n\u003cp\u003eThe networking settings are fun, and I\u0026#39;m glad to know that I can probably cause the game to crash (either my copy or my fellow players\u0026#39; copies). But can I do something \u003cem\u003edangerous\u003c/em\u003e or even… oh, I don\u0026#39;t know, \u003cem\u003ecrazy\u003c/em\u003e? I really hope I can.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-c\"\u003esys_ignore_variable_constraints\t\t\t= \u003cspan class=\"hljs-literal\"\u003efalse\u003c/span\u003e;\t\t\t\u003cspan class=\"hljs-comment\"\u003e//DANGEROUS AS F***, leave off goddamnit you\u0026#39;re crazy if you turn this on\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThat\u0026#39;s the spirit! I want every game to add this config flag IMMEDIATELY. Actually, I\u0026#39;m working on a robot: I\u0026#39;m \u003cem\u003edefinitely\u003c/em\u003e going to add that to my robot software. I\u0026#39;m gonna make the robot arm punch through a wall (note: it\u0026#39;s not supposed to punch through walls, and I think a number of people would get very upset with me).\u003c/p\u003e\n\u003c!-- Easy Reader Version: DANGEROUS AS FUCK --\u003e\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tKeep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.\u003ca href=\"https://inedo.com/proget?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=PlebsFooter\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"The Most Dangerous Game","RssTitle":"CodeSOD: The Most Dangerous Game","CachedCommentCount":13,"LastCommentDate":"\/Date(1783240410017)\/","LastCommentDateDescription":"2026-07-05","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1782973800000)\/","ISODate":"2026-07-02","DisplayDate":"2026-07-02","Series":{"Slug":"code-sod","Title":"CodeSOD","Description":"Code Snippet Of the Day (CodeSOD) features interesting and usually incorrect code snippets taken from actual production code in a commercial and/or open source software projects.","CssClass":"code"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tKeep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.\u003ca href=\"https://inedo.com/proget?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=PlebsFooter\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/the-most-dangerous-game","CommentsUrl":"https://thedailywtf.com/articles/comments/the-most-dangerous-game","Slug":"the-most-dangerous-game","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-most-dangerous-game+-+The+Most+Dangerous+Game+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-most-dangerous-game\u0026t=The+Most+Dangerous+Game+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=The%20Most%20Dangerous%20Game:%20https://thedailywtf.com/articles/the-most-dangerous-game","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-most-dangerous-game","PreviousArticleId":11216,"PreviousArticleTitle":"A Specific Key","PreviousArticleSlug":"a-specific-key","PreviousArticleUrl":"//thedailywtf.com/articles/a-specific-key","NextArticleId":11218,"NextArticleTitle":"Kaids Hen 2025","NextArticleSlug":"kaids-hen-2025","NextArticleUrl":"//thedailywtf.com/articles/kaids-hen-2025"},{"Id":11216,"Author":{"Name":"Remy Porter","FirstName":"Remy","ShortDescription":"Computers were a mistake, so I accidentally became a farmer? Editor-in-Chief for TDWTF.","DescriptionHtml":"\u003cp\u003eRemy is a veteran developer who writes software for farming robots. They pick tomatoes.\u003c/p\u003e\r\n\u003cp\u003eHe\u0027s often on stage, doing improv comedy, but insists that \u003cem\u003ehe\u003c/em\u003e isn\u0027t doing comedy- it\u0027s deadly serious. You\u0027re laughing at him, not with him. That, by the way, is usually true- you\u0027re laughing at him, not with him.\u003c/p\u003e","Slug":"remy-porter","IsAdmin":true,"IsActive":true,"ImageUrl":"https://s3.amazonaws.com/remy.jetpackshark.com/remy-thumb.jpg"},"Status":"Published","SummaryHtml":"\u003cp\u003eToday\u0026#39;s anonymous submission isn\u0026#39;t really a WTF, but it highlights the hardest problem in computer science: naming things.\u003c/p\u003e\n\u003cp\u003eFor example, let\u0026#39;s say you saw a method called \u003ccode\u003ehandleRSAPrivateKeyGeneration\u003c/code\u003e. You\u0026#39;d likely assume that it generates an RSA private key. More specifically, it accepts a \u003cem\u003erequest\u003c/em\u003e for a private key and \u003cem\u003ehandles\u003c/em\u003e that request. It\u0026#39;s right there in the name.\u003c/p\u003e\n","BodyHtml":"\u003cp\u003eToday\u0026#39;s anonymous submission isn\u0026#39;t really a WTF, but it highlights the hardest problem in computer science: naming things.\u003c/p\u003e\n\u003cp\u003eFor example, let\u0026#39;s say you saw a method called \u003ccode\u003ehandleRSAPrivateKeyGeneration\u003c/code\u003e. You\u0026#39;d likely assume that it generates an RSA private key. More specifically, it accepts a \u003cem\u003erequest\u003c/em\u003e for a private key and \u003cem\u003ehandles\u003c/em\u003e that request. It\u0026#39;s right there in the name.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-java\"\u003e\u003cspan class=\"hljs-keyword\"\u003epublic\u003c/span\u003e String \u003cspan class=\"hljs-title function_\"\u003ehandleRSAPrivateKeyGeneration\u003c/span\u003e\u003cspan class=\"hljs-params\"\u003e(\n        \u003cspan class=\"hljs-meta\"\u003e@RequestParam(value = \u0026#34;algorithm\u0026#34;, defaultValue = \u0026#34;EC\u0026#34;)\u003c/span\u003e KeyAlgorithm algorithm,…\n)\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExcept this function accepts an algorithm as a parameter. That\u0026#39;s not bad design; it makes sense to inject implementations like that. Though in this case, it looks like it\u0026#39;s injecting a key that can be used to look up the actual implementation, which I like less, but I don\u0026#39;t know the rest of the implementation, so we can let it slide.\u003c/p\u003e\n\u003cp\u003eSo there\u0026#39;s no WTF here. It\u0026#39;s a badly named function that may not return an \u003cem\u003eRSA\u003c/em\u003e key, but does return a valid cryptographic key. By default it generates an elliptic curve key. Presumably as an armored key, since it returns a \u003ccode\u003eString\u003c/code\u003e- and the armor usually supplies enough of a hint that consumers can infer the key type. Our submitter tells us that this function is part of a Java Spring controller, and returns a string because the result is displayed in a web page.\u003c/p\u003e\n\u003cp\u003eNo WTF, but it does highlight how sometimes being \u003cem\u003etoo specific\u003c/em\u003e with your name can make the name less clear. \u003ccode\u003ehandlePrivateKeyGeneration\u003c/code\u003e would be a better name, since we don\u0026#39;t know exactly what kind of private key it\u0026#39;s generating.\u003c/p\u003e\n\u003cp\u003eNames, as always, remain hard.\u003c/p\u003e\n\u003c!-- Easy Reader Version: Though don\u0027t get me started on getting PK8 keys formatted the right way for one of the libraries I use- there\u0027s a whole fight over the way it\u0027s armored and represented that means I spent like 2 days trying to get an API to accept the key- a key that was 100% valid and good, but just stored in the wrong armor. --\u003e","BodyAndAdHtml":"\u003cp\u003eToday\u0026#39;s anonymous submission isn\u0026#39;t really a WTF, but it highlights the hardest problem in computer science: naming things.\u003c/p\u003e\n\u003cp\u003eFor example, let\u0026#39;s say you saw a method called \u003ccode\u003ehandleRSAPrivateKeyGeneration\u003c/code\u003e. You\u0026#39;d likely assume that it generates an RSA private key. More specifically, it accepts a \u003cem\u003erequest\u003c/em\u003e for a private key and \u003cem\u003ehandles\u003c/em\u003e that request. It\u0026#39;s right there in the name.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-java\"\u003e\u003cspan class=\"hljs-keyword\"\u003epublic\u003c/span\u003e String \u003cspan class=\"hljs-title function_\"\u003ehandleRSAPrivateKeyGeneration\u003c/span\u003e\u003cspan class=\"hljs-params\"\u003e(\n        \u003cspan class=\"hljs-meta\"\u003e@RequestParam(value = \u0026#34;algorithm\u0026#34;, defaultValue = \u0026#34;EC\u0026#34;)\u003c/span\u003e KeyAlgorithm algorithm,…\n)\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExcept this function accepts an algorithm as a parameter. That\u0026#39;s not bad design; it makes sense to inject implementations like that. Though in this case, it looks like it\u0026#39;s injecting a key that can be used to look up the actual implementation, which I like less, but I don\u0026#39;t know the rest of the implementation, so we can let it slide.\u003c/p\u003e\n\u003cp\u003eSo there\u0026#39;s no WTF here. It\u0026#39;s a badly named function that may not return an \u003cem\u003eRSA\u003c/em\u003e key, but does return a valid cryptographic key. By default it generates an elliptic curve key. Presumably as an armored key, since it returns a \u003ccode\u003eString\u003c/code\u003e- and the armor usually supplies enough of a hint that consumers can infer the key type. Our submitter tells us that this function is part of a Java Spring controller, and returns a string because the result is displayed in a web page.\u003c/p\u003e\n\u003cp\u003eNo WTF, but it does highlight how sometimes being \u003cem\u003etoo specific\u003c/em\u003e with your name can make the name less clear. \u003ccode\u003ehandlePrivateKeyGeneration\u003c/code\u003e would be a better name, since we don\u0026#39;t know exactly what kind of private key it\u0026#39;s generating.\u003c/p\u003e\n\u003cp\u003eNames, as always, remain hard.\u003c/p\u003e\n\u003c!-- Easy Reader Version: Though don\u0027t get me started on getting PK8 keys formatted the right way for one of the libraries I use- there\u0027s a whole fight over the way it\u0027s armored and represented that means I spent like 2 days trying to get an API to accept the key- a key that was 100% valid and good, but just stored in the wrong armor. --\u003e\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Confidence\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eUtilize BuildMaster\u003c/a\u003e to release your software with confidence, at the pace your business demands. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Confidence\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eDownload\u003c/a\u003e today!  \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"A Specific Key","RssTitle":"Representative Line: A Specific Key","CachedCommentCount":16,"LastCommentDate":"\/Date(1783239724040)\/","LastCommentDateDescription":"2026-07-05","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1782887400000)\/","ISODate":"2026-07-01","DisplayDate":"2026-07-01","Series":{"Slug":"representative-line","Title":"Representative Line","Description":"A single line of code from a large application that somehow manages to provide an almost endless insight into the pain that its maintainers face each day.","CssClass":"soapbox"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Confidence\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eUtilize BuildMaster\u003c/a\u003e to release your software with confidence, at the pace your business demands. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Confidence\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eDownload\u003c/a\u003e today!  \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/a-specific-key","CommentsUrl":"https://thedailywtf.com/articles/comments/a-specific-key","Slug":"a-specific-key","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2fa-specific-key+-+A+Specific+Key+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2fa-specific-key\u0026t=A+Specific+Key+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=A%20Specific%20Key:%20https://thedailywtf.com/articles/a-specific-key","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2fa-specific-key","PreviousArticleId":11215,"PreviousArticleTitle":"The Hot Fix","PreviousArticleSlug":"the-hot-fix","PreviousArticleUrl":"//thedailywtf.com/articles/the-hot-fix","NextArticleId":11217,"NextArticleTitle":"The Most Dangerous Game","NextArticleSlug":"the-most-dangerous-game","NextArticleUrl":"//thedailywtf.com/articles/the-most-dangerous-game"},{"Id":11215,"Author":{"Name":"Ellis Morning","FirstName":"Ellis","ShortDescription":null,"DescriptionHtml":"\u003cb\u003eEllis Morning\u003c/b\u003e is a Computer Science graduate who fought in the trenches of Tech Support, occasionally crossing enemy lines into the Business Analyst and Project Management spheres of war. She\u0027s now a freelance writer and technical writer. Check out her highly-rated \u003ca href=\"https://swordandstarship.com/\" target=\"_blank\"\u003esci-fi/fantasy novels\u003c/a\u003e and find more humor, fiction, and blog posts at her \u003ca href=\"https://www.ellismorning.com\" target=\"_blank\"\u003ewebsite\u003c/a\u003e.","Slug":"ellis-morning","IsAdmin":true,"IsActive":true,"ImageUrl":"https://ellismorning.com/img/ellis2.jpeg"},"Status":"Published","SummaryHtml":"\u003cblockquote\u003e\n\u003cp\u003eEverybody has a nemesis. A dark mirror of yourself, a challenge that is everything you hate. If you\u0026#39;ve ever worked tech-support, you know what that is: printer issues.\u003cbr/\u003e\nI\u0026#39;m \u003cstrong\u003eAnonymous\u003c/strong\u003e, and you last saw me in the case of \u003ca href=\"https://thedailywtf.com/articles/the-ghost-cursor\"\u003eThe Ghost Cursor\u003c/a\u003e. This is my story.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAs the days marched on, the chill in the air turned from bracing to painful. God had hoofed it down to Florida for the winter, and this year, he\u0026#39;d stolen Hope away with him. Between leaden skies and dirty slush, gale-force winds sent snow tearing down city streets to sandblast one and all into their constituent atoms.\u003c/p\u003e\n","BodyHtml":"\u003cblockquote\u003e\n\u003cp\u003eEverybody has a nemesis. A dark mirror of yourself, a challenge that is everything you hate. If you\u0026#39;ve ever worked tech-support, you know what that is: printer issues.\u003cbr/\u003e\nI\u0026#39;m \u003cstrong\u003eAnonymous\u003c/strong\u003e, and you last saw me in the case of \u003ca href=\"https://thedailywtf.com/articles/the-ghost-cursor\"\u003eThe Ghost Cursor\u003c/a\u003e. This is my story.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAs the days marched on, the chill in the air turned from bracing to painful. God had hoofed it down to Florida for the winter, and this year, he\u0026#39;d stolen Hope away with him. Between leaden skies and dirty slush, gale-force winds sent snow tearing down city streets to sandblast one and all into their constituent atoms.\u003c/p\u003e\n\u003cp\u003eIn that timeless slog, one year ended and another began, barely noticed. The short days and bitter cold made my foot-and-bus commute almost unbearable. Only the promise of warmth and caffeine at the other end got me through. A cup of joe at my desk, then a glance at my caseload, something I approached with a weird mix of curiosity and dread.\u003c/p\u003e\n\u003cp\u003eThat morning, a fresh ticket had just come my way: The new printer in HR keeps printing gibberish.\u003c/p\u003e\n\u003cp\u003eAnother printer. Why was it always printers? I dialed up the source, a guy named Tony, and made my introductions. “What do you mean by \u0026#39;gibberish?\u0026#39;”\u003c/p\u003e\n\u003cp\u003e“It\u0026#39;d be easier to show you in person,” Tony replied, his voice jittery. “Could you stop by my cube right away?”\u003c/p\u003e\n\u003cp\u003e“Sure thing.”\u003c/p\u003e\n\u003cp\u003eI hung up, tossed the last dregs of coffee down my throat, and stood from my chair. At the same moment, a slight silver-haired woman made tracks down the open passageway a few feet away from me. She clutched her laptop and a stack of folders to her chest, making a beeline toward who-knew-what.\u003c/p\u003e\n\u003cp\u003eMy first pleasant surprise of the day. I couldn\u0026#39;t help calling out to her. “Aggie! How\u0026#39;s it goin\u0026#39;?”\u003c/p\u003e\n\u003cp\u003eWhen I\u0026#39;d first gotten my start in Tech Support, Agnes Shaw had been one of the department\u0026#39;s top reps. She knew every system quirk, every trick to pull, every right thing to say to leave a smile on someone\u0026#39;s face. I\u0026#39;d come up under her wing, sought her advice a million times.\u003c/p\u003e\n\u003cp\u003eAnd then they\u0026#39;d offered Aggie a promotion, with a fancy title and salary to boot. She\u0026#39;d taken it.\u003c/p\u003e\n\u003cp\u003eThat was years ago, now. I wasn\u0026#39;t her direct report, so I only caught glimpses of her now and then. It was a shame.\u003c/p\u003e\n\u003cp\u003eAggie halted in her tracks, dazed and startled, before looking my way. A second later, she smiled. “Hello! Doing just fine, yourself?”\u003c/p\u003e\n\u003cp\u003e“Same as ever.” But my spirits had lifted. Knowing there was no time to waste, I darted over to conversational distance. “You\u0026#39;re a hard one to get ahold of.”\u003c/p\u003e\n\u003cp\u003eShe shrugged her shoulders with a wistful expression.\u003c/p\u003e\n\u003cp\u003e“Why don\u0026#39;t we step out for a smoke?” It seemed like we both needed it. “When are you free?”\u003c/p\u003e\n\u003cp\u003e“Not today. Meetings all day.” Aggie glanced askance. “It\u0026#39;s not appropriate for me to go out there, anyway. You need a place where you can vent freely.”\u003c/p\u003e\n\u003cp\u003e“Spoken like a true manager,” I scolded with a smirk. “Listen, we haven\u0026#39;t caught up in ages. Could we step out for coffee sometime?”\u003c/p\u003e\n\u003cp\u003eA warm glow peeked through her distraction. “I\u0026#39;d like that! Find an open spot on my schedule and book it, OK? I gotta run!” With a look of apology, Aggie backed away and rushed down the passage flanked by cubicles and filing cabinets.\u003c/p\u003e\n\u003cp\u003eAggie made these offers all the time. Then, just before the appointed hour, something always came up that required a rain check. Well, I didn\u0026#39;t care. I darted back to my desk, woke up my sleeping machine, and pulled up the office calendar to request a meeting the next day, right when I usually needed a dose of caffeine to make it through an otherwise endless afternoon. It was on Aggie to confirm or reschedule.\u003c/p\u003e\n\u003cp\u003eMeanwhile, I had a date with HR.\u003c/p\u003e\n\u003cp\u003eHuman Resources. Normally, those words gave me an instant case of the willies. Μost of the people there were the sort of drones who couldn\u0026#39;t hack Accounting or Finance in business school. But Leila … Leila was different. I couldn\u0026#39;t help thinking about her. Back when I\u0026#39;d fielded a support ticket up in C-Town, an issue caused by the very CEO who\u0026#39;d filed the ticket, Leila had helped me keep my head attached to my neck. It seemed like maybe, just maybe, she really did want to improve this sorry joint the way she claimed.\u003c/p\u003e\n\u003cp\u003eI entered the nearest stairwell and plodded down a couple flights of concrete steps. Within those narrow confines, I brought myself back to reality. Leila was one executive among dozens on the org-chart. She wouldn\u0026#39;t have a blessed thing to do with a low-level case like this. I had to stay on my toes in HR, no matter what friends I thought I\u0026#39;d made.\u003c/p\u003e\n\u003cp\u003eI pushed open the stairwell door and entered a carpeted space lined with filing cabinets, supply closets, and office machines. Sharp florescent lighting revealed an older man in a tailored suit only a few feet away, frowning as he took a hair dryer to the insides of a large printer that\u0026#39;d seen better days and now begged for oblivion.\u003c/p\u003e\n\u003cp\u003eAs the stairwell door swung shut behind me, I froze. No matter how many years you piled up in this joint, it never ran out of new things to throw at you. This had to be the printer I was there to fix—more like save from yet another abusive higher-up who\u0026#39;d require kid-glove handling.\u003c/p\u003e\n\u003cp\u003eFirst things first. I had no idea if I\u0026#39;d gotten there in time to save the printer, but damned if I wouldn\u0026#39;t try. Like a lifeguard diving in after a drowning victim, I rushed over to the outlet where the hair dryer was plugged in. Adding to the insanity, it was the wrong sort of outlet for a hair dryer, which needed a GFCI to run safely. I ripped the plug from the outlet and threw it aside.\u003c/p\u003e\n\u003cp\u003eThe roar of the dryer faded, leaving stunned silence in its wake.\u003c/p\u003e\n\u003cp\u003eBurning with righteous fire, I spun around to face the perp. The HR big-shot faced me, too, brandishing his hair dryer like a revolver. Wide-eyed passersby fringed the scene like extras in a B-Western.\u003c/p\u003e\n\u003cp\u003eKicking anything or anyone when they were down was the sort of thing that stabbed through my armor of veteran cynicism, riling me up with righteous anger. But an outburst would only make things worse. For the good of all, I swallowed it, forcing a polite lie past gritted teeth. “Just wanted to make sure you could hear me, sir.”\u003c/p\u003e\n\u003cp\u003eLike hell.\u003c/p\u003e\n\u003cp\u003e“Tech Support,” I introduced myself. “This the printer that ain\u0026#39;t working?”\u003c/p\u003e\n\u003cp\u003eHothead\u0026#39;s glaring frustration shifted away from his victim, toward me. “Yes, and I\u0026#39;ve had it! It must be moisture inside the machine.”\u003c/p\u003e\n\u003cp\u003eGod, help me. Oh, right: Florida.\u003c/p\u003e\n\u003cp\u003e“Good thinking, sir,” I said. “But I\u0026#39;m less worried about moisture and more worried about melting sensitive electronics with all that heat.”\u003c/p\u003e\n\u003cp\u003eHis eyes went wide, like the notion had never entered his brain.\u003c/p\u003e\n\u003cp\u003eSlowly, I knelt to pick up the hair dryer\u0026#39;s plug. Unchallenged, I rose and started winding the power cord around my left hand, inching closer to him in the process. Once I was standing in front of him, I proffered the wire bundle.\u003c/p\u003e\n\u003cp\u003e“Hold onto that for me, sir, if you don\u0026#39;t mind.” Phrasing things as favors made them go down smoother. Now to dig up a workaround that would get this guy out of everyone\u0026#39;s hair. “Is there some other printer you can use for now?”\u003c/p\u003e\n\u003cp\u003eHis open hand clamped over the wire as his expression soured. “Yes, but it\u0026#39;s a pain to walk over there!”\u003c/p\u003e\n\u003cp\u003e“I understand, sir. It\u0026#39;s something. Don\u0026#39;t worry about this one. I\u0026#39;ll take it from here.”\u003c/p\u003e\n\u003cp\u003eHothead walked off without another word. The spell broke; the onlookers found places to be.\u003c/p\u003e\n\u003cp\u003eWith relief and dread, I approached the printer, fearing I\u0026#39;d be performing last rites. But as I checked it over inside and out, I found an incredible lack of melted parts. When I plugged it in and started it up, everything loaded just fine. Using the printer\u0026#39;s onboard interface, I performed every available test print. They all worked.\u003c/p\u003e\n\u003cp\u003eSnatched from Death\u0026#39;s doorstep. “Hang in there,” I muttered, patting the machine\u0026#39;s plastic case. “I\u0026#39;m doing everything I can.”\u003c/p\u003e\n\u003cp\u003eLike making sure Leila got an earful about this. Later.\u003c/p\u003e\n\u003cp\u003eBefore leaving the scene, I had a good look high and low. Ceiling tile and carpet were clean. No leaks, no spills. Even the heated indoor air lacked enough water molecules to give Hothead or anyone else the idea that “excess moisture” might\u0026#39;ve been the problem. Time to chase down the ticket-holder and see if the problem was already resolved.\u003c/p\u003e\n\u003cp\u003eA couple of passersby pointed me toward a distant corner of HR, where I found a cube-desk buried under reports, folders, and other well-intentioned clutter. A man was sitting in an office chair facing the cube\u0026#39;s entrance, squeezing a rubber stress ball.\u003c/p\u003e\n\u003cp\u003e“You Tony?” I entered the cube, offering my hand.\u003c/p\u003e\n\u003cp\u003eHe stood, shook, then immediately returned to the reassurance of his toy. “Sorry. My boss is, uh, tough like that.”\u003c/p\u003e\n\u003cp\u003e“Hothead\u0026#39;s your boss? Jesus. He almost single-handedly iced that printer. Well, maybe \u0026#39;iced\u0026#39; ain\u0026#39;t the word for it.” I folded my arms. “You know who\u0026#39;s gonna hear about it? The new head of HR. When I close this ticket, I\u0026#39;ll drop her a line about what happened.”\u003c/p\u003e\n\u003cp\u003eTony\u0026#39;s eyes went wide. “Really? Thank you! I know I\u0026#39;m supposed to go up the chain, but …” He edged closer, lowering his voice. “Sometimes it\u0026#39;s the chain that\u0026#39;s the problem, y\u0026#39;know?”\u003c/p\u003e\n\u003cp\u003eSomething I\u0026#39;d run into only a million times. “I know. Can\u0026#39;t do much about it most of the time, but I can here, so I will.”\u003c/p\u003e\n\u003cp\u003eTony nodded. “Thanks again.”\u003c/p\u003e\n\u003cp\u003e“Don\u0026#39;t mention it. Anyway, the printer. Your ticket said it was new? Looks pretty darn old to me.”\u003c/p\u003e\n\u003cp\u003e“It\u0026#39;s new over here,” Tony explained. “They just it brought down and set it up for us.”\u003c/p\u003e\n\u003cp\u003e“Can you try printing now?” I asked. “Let\u0026#39;s see what happens.”\u003c/p\u003e\n\u003chr/\u003e\n\u003cp\u003eLater that morning, I stopped by the usual smoke-break spot between office buildings. As wind and snow coursed through the alley, I recapped the morning\u0026#39;s events for my friends Megan and Reynaldo. Then I pulled a stack of folded-up paper from my trench coat pocket, splitting it in half to hand them several pages apiece. At last, I dug through my pockets for my sorely-needed cigarettes and lighter. While I carefully shielded the lighter\u0026#39;s flame from the wind to light the cigarette clenched in my teeth, they studied the printouts with looks that quickly turned baffled.\u003c/p\u003e\n\u003cp\u003e”I don\u0026#39;t feel safe working with Cheryl?” Reynaldo read aloud.\u003c/p\u003e\n\u003cp\u003e”John keeps staring at me in the break room. I\u0026#39;ve told him twice.” Megan\u0026#39;s eyes found mine. “What the hell? Every print request does this?”\u003c/p\u003e\n\u003cp\u003e“Every print job except for test prints,” I replied. “We\u0026#39;re lucky the poor thing starts up at all after Hothead gave it the salon treatment.”\u003c/p\u003e\n\u003cp\u003eMegan smirked, handing back her pages before hugging herself against the cold. “Sounds to me like it might be a network issue.” She glanced Reynaldo\u0026#39;s way for confirmation.\u003c/p\u003e\n\u003cp\u003eOur veteran network admin was too busy frowning at the stack of paper he rifled through to notice. “What have you tried?” he asked me.\u003c/p\u003e\n\u003cp\u003eI helped myself to a long, warming drag. “The printer already spent some time turned off and unplugged.” Hothead had seen to that. “Since it\u0026#39;s old, figured I\u0026#39;d reinstall the drivers, clear the print queue. Didn\u0026#39;t help.” I shrugged. “Megan\u0026#39;s right. Since it doesn\u0026#39;t happen with test prints, it seems like something fishy\u0026#39;s happening when the print requests coming through the network.”\u003c/p\u003e\n\u003cp\u003eReynaldo frowned in thoughtful silence for a while, then glanced between us. “Do you remember that system for submitting HR complaints anonymously through the intranet?”\u003c/p\u003e\n\u003cp\u003eForcing my brain-pointer back into memory spaces I usually steered clear of, it came back to me a little, through a thick fog. “Few years back? Before your time,” I added for Megan\u0026#39;s benefit. “Never paid it much mind. Never really believed those gripes would actually be anonymous.”\u003c/p\u003e\n\u003cp\u003e“Yeah, that\u0026#39;s crazy!” Megan said. “Who would trust that?”\u003c/p\u003e\n\u003cp\u003eI hefted the printouts she\u0026#39;d returned to me, each page loaded with more beef than a Texas ranch. “That\u0026#39;s who.”\u003c/p\u003e\n\u003cp\u003e“They retired that program ages ago,” Reynaldo said. “The server was decommissioned—at least, so I thought.” He dropped his cigarette butt to the slush-covered asphalt and crushed it underfoot, sighing heavily with a knowing look. “Let\u0026#39;s go trace some IPs.”\u003c/p\u003e\n\u003cp\u003e“Swell!” I was about to grind my partially-smoked cigarette against the brick wall behind me to save it for later when I caught the hopeful look in Megan\u0026#39;s eye.\u003c/p\u003e\n\u003cp\u003e“Can I help, too?” she asked.\u003c/p\u003e\n\u003cp\u003eWhat fool would say no?\u003c/p\u003e\n\u003cp\u003e“We may need a good developer at that,” I said. “C\u0026#39;mon!”\u003c/p\u003e\n\n\u003cp\u003e\u003cb\u003eTo be continued…\u003c/b\u003e\u003c/p\u003e","BodyAndAdHtml":"\u003cblockquote\u003e\n\u003cp\u003eEverybody has a nemesis. A dark mirror of yourself, a challenge that is everything you hate. If you\u0026#39;ve ever worked tech-support, you know what that is: printer issues.\u003cbr/\u003e\nI\u0026#39;m \u003cstrong\u003eAnonymous\u003c/strong\u003e, and you last saw me in the case of \u003ca href=\"https://thedailywtf.com/articles/the-ghost-cursor\"\u003eThe Ghost Cursor\u003c/a\u003e. This is my story.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAs the days marched on, the chill in the air turned from bracing to painful. God had hoofed it down to Florida for the winter, and this year, he\u0026#39;d stolen Hope away with him. Between leaden skies and dirty slush, gale-force winds sent snow tearing down city streets to sandblast one and all into their constituent atoms.\u003c/p\u003e\n\u003cp\u003eIn that timeless slog, one year ended and another began, barely noticed. The short days and bitter cold made my foot-and-bus commute almost unbearable. Only the promise of warmth and caffeine at the other end got me through. A cup of joe at my desk, then a glance at my caseload, something I approached with a weird mix of curiosity and dread.\u003c/p\u003e\n\u003cp\u003eThat morning, a fresh ticket had just come my way: The new printer in HR keeps printing gibberish.\u003c/p\u003e\n\u003cp\u003eAnother printer. Why was it always printers? I dialed up the source, a guy named Tony, and made my introductions. “What do you mean by \u0026#39;gibberish?\u0026#39;”\u003c/p\u003e\n\u003cp\u003e“It\u0026#39;d be easier to show you in person,” Tony replied, his voice jittery. “Could you stop by my cube right away?”\u003c/p\u003e\n\u003cp\u003e“Sure thing.”\u003c/p\u003e\n\u003cp\u003eI hung up, tossed the last dregs of coffee down my throat, and stood from my chair. At the same moment, a slight silver-haired woman made tracks down the open passageway a few feet away from me. She clutched her laptop and a stack of folders to her chest, making a beeline toward who-knew-what.\u003c/p\u003e\n\u003cp\u003eMy first pleasant surprise of the day. I couldn\u0026#39;t help calling out to her. “Aggie! How\u0026#39;s it goin\u0026#39;?”\u003c/p\u003e\n\u003cp\u003eWhen I\u0026#39;d first gotten my start in Tech Support, Agnes Shaw had been one of the department\u0026#39;s top reps. She knew every system quirk, every trick to pull, every right thing to say to leave a smile on someone\u0026#39;s face. I\u0026#39;d come up under her wing, sought her advice a million times.\u003c/p\u003e\n\u003cp\u003eAnd then they\u0026#39;d offered Aggie a promotion, with a fancy title and salary to boot. She\u0026#39;d taken it.\u003c/p\u003e\n\u003cp\u003eThat was years ago, now. I wasn\u0026#39;t her direct report, so I only caught glimpses of her now and then. It was a shame.\u003c/p\u003e\n\u003cp\u003eAggie halted in her tracks, dazed and startled, before looking my way. A second later, she smiled. “Hello! Doing just fine, yourself?”\u003c/p\u003e\n\u003cp\u003e“Same as ever.” But my spirits had lifted. Knowing there was no time to waste, I darted over to conversational distance. “You\u0026#39;re a hard one to get ahold of.”\u003c/p\u003e\n\u003cp\u003eShe shrugged her shoulders with a wistful expression.\u003c/p\u003e\n\u003cp\u003e“Why don\u0026#39;t we step out for a smoke?” It seemed like we both needed it. “When are you free?”\u003c/p\u003e\n\u003cp\u003e“Not today. Meetings all day.” Aggie glanced askance. “It\u0026#39;s not appropriate for me to go out there, anyway. You need a place where you can vent freely.”\u003c/p\u003e\n\u003cp\u003e“Spoken like a true manager,” I scolded with a smirk. “Listen, we haven\u0026#39;t caught up in ages. Could we step out for coffee sometime?”\u003c/p\u003e\n\u003cp\u003eA warm glow peeked through her distraction. “I\u0026#39;d like that! Find an open spot on my schedule and book it, OK? I gotta run!” With a look of apology, Aggie backed away and rushed down the passage flanked by cubicles and filing cabinets.\u003c/p\u003e\n\u003cp\u003eAggie made these offers all the time. Then, just before the appointed hour, something always came up that required a rain check. Well, I didn\u0026#39;t care. I darted back to my desk, woke up my sleeping machine, and pulled up the office calendar to request a meeting the next day, right when I usually needed a dose of caffeine to make it through an otherwise endless afternoon. It was on Aggie to confirm or reschedule.\u003c/p\u003e\n\u003cp\u003eMeanwhile, I had a date with HR.\u003c/p\u003e\n\u003cp\u003eHuman Resources. Normally, those words gave me an instant case of the willies. Μost of the people there were the sort of drones who couldn\u0026#39;t hack Accounting or Finance in business school. But Leila … Leila was different. I couldn\u0026#39;t help thinking about her. Back when I\u0026#39;d fielded a support ticket up in C-Town, an issue caused by the very CEO who\u0026#39;d filed the ticket, Leila had helped me keep my head attached to my neck. It seemed like maybe, just maybe, she really did want to improve this sorry joint the way she claimed.\u003c/p\u003e\n\u003cp\u003eI entered the nearest stairwell and plodded down a couple flights of concrete steps. Within those narrow confines, I brought myself back to reality. Leila was one executive among dozens on the org-chart. She wouldn\u0026#39;t have a blessed thing to do with a low-level case like this. I had to stay on my toes in HR, no matter what friends I thought I\u0026#39;d made.\u003c/p\u003e\n\u003cp\u003eI pushed open the stairwell door and entered a carpeted space lined with filing cabinets, supply closets, and office machines. Sharp florescent lighting revealed an older man in a tailored suit only a few feet away, frowning as he took a hair dryer to the insides of a large printer that\u0026#39;d seen better days and now begged for oblivion.\u003c/p\u003e\n\u003cp\u003eAs the stairwell door swung shut behind me, I froze. No matter how many years you piled up in this joint, it never ran out of new things to throw at you. This had to be the printer I was there to fix—more like save from yet another abusive higher-up who\u0026#39;d require kid-glove handling.\u003c/p\u003e\n\u003cp\u003eFirst things first. I had no idea if I\u0026#39;d gotten there in time to save the printer, but damned if I wouldn\u0026#39;t try. Like a lifeguard diving in after a drowning victim, I rushed over to the outlet where the hair dryer was plugged in. Adding to the insanity, it was the wrong sort of outlet for a hair dryer, which needed a GFCI to run safely. I ripped the plug from the outlet and threw it aside.\u003c/p\u003e\n\u003cp\u003eThe roar of the dryer faded, leaving stunned silence in its wake.\u003c/p\u003e\n\u003cp\u003eBurning with righteous fire, I spun around to face the perp. The HR big-shot faced me, too, brandishing his hair dryer like a revolver. Wide-eyed passersby fringed the scene like extras in a B-Western.\u003c/p\u003e\n\u003cp\u003eKicking anything or anyone when they were down was the sort of thing that stabbed through my armor of veteran cynicism, riling me up with righteous anger. But an outburst would only make things worse. For the good of all, I swallowed it, forcing a polite lie past gritted teeth. “Just wanted to make sure you could hear me, sir.”\u003c/p\u003e\n\u003cp\u003eLike hell.\u003c/p\u003e\n\u003cp\u003e“Tech Support,” I introduced myself. “This the printer that ain\u0026#39;t working?”\u003c/p\u003e\n\u003cp\u003eHothead\u0026#39;s glaring frustration shifted away from his victim, toward me. “Yes, and I\u0026#39;ve had it! It must be moisture inside the machine.”\u003c/p\u003e\n\u003cp\u003eGod, help me. Oh, right: Florida.\u003c/p\u003e\n\u003cp\u003e“Good thinking, sir,” I said. “But I\u0026#39;m less worried about moisture and more worried about melting sensitive electronics with all that heat.”\u003c/p\u003e\n\u003cp\u003eHis eyes went wide, like the notion had never entered his brain.\u003c/p\u003e\n\u003cp\u003eSlowly, I knelt to pick up the hair dryer\u0026#39;s plug. Unchallenged, I rose and started winding the power cord around my left hand, inching closer to him in the process. Once I was standing in front of him, I proffered the wire bundle.\u003c/p\u003e\n\u003cp\u003e“Hold onto that for me, sir, if you don\u0026#39;t mind.” Phrasing things as favors made them go down smoother. Now to dig up a workaround that would get this guy out of everyone\u0026#39;s hair. “Is there some other printer you can use for now?”\u003c/p\u003e\n\u003cp\u003eHis open hand clamped over the wire as his expression soured. “Yes, but it\u0026#39;s a pain to walk over there!”\u003c/p\u003e\n\u003cp\u003e“I understand, sir. It\u0026#39;s something. Don\u0026#39;t worry about this one. I\u0026#39;ll take it from here.”\u003c/p\u003e\n\u003cp\u003eHothead walked off without another word. The spell broke; the onlookers found places to be.\u003c/p\u003e\n\u003cp\u003eWith relief and dread, I approached the printer, fearing I\u0026#39;d be performing last rites. But as I checked it over inside and out, I found an incredible lack of melted parts. When I plugged it in and started it up, everything loaded just fine. Using the printer\u0026#39;s onboard interface, I performed every available test print. They all worked.\u003c/p\u003e\n\u003cp\u003eSnatched from Death\u0026#39;s doorstep. “Hang in there,” I muttered, patting the machine\u0026#39;s plastic case. “I\u0026#39;m doing everything I can.”\u003c/p\u003e\n\u003cp\u003eLike making sure Leila got an earful about this. Later.\u003c/p\u003e\n\u003cp\u003eBefore leaving the scene, I had a good look high and low. Ceiling tile and carpet were clean. No leaks, no spills. Even the heated indoor air lacked enough water molecules to give Hothead or anyone else the idea that “excess moisture” might\u0026#39;ve been the problem. Time to chase down the ticket-holder and see if the problem was already resolved.\u003c/p\u003e\n\u003cp\u003eA couple of passersby pointed me toward a distant corner of HR, where I found a cube-desk buried under reports, folders, and other well-intentioned clutter. A man was sitting in an office chair facing the cube\u0026#39;s entrance, squeezing a rubber stress ball.\u003c/p\u003e\n\u003cp\u003e“You Tony?” I entered the cube, offering my hand.\u003c/p\u003e\n\u003cp\u003eHe stood, shook, then immediately returned to the reassurance of his toy. “Sorry. My boss is, uh, tough like that.”\u003c/p\u003e\n\u003cp\u003e“Hothead\u0026#39;s your boss? Jesus. He almost single-handedly iced that printer. Well, maybe \u0026#39;iced\u0026#39; ain\u0026#39;t the word for it.” I folded my arms. “You know who\u0026#39;s gonna hear about it? The new head of HR. When I close this ticket, I\u0026#39;ll drop her a line about what happened.”\u003c/p\u003e\n\u003cp\u003eTony\u0026#39;s eyes went wide. “Really? Thank you! I know I\u0026#39;m supposed to go up the chain, but …” He edged closer, lowering his voice. “Sometimes it\u0026#39;s the chain that\u0026#39;s the problem, y\u0026#39;know?”\u003c/p\u003e\n\u003cp\u003eSomething I\u0026#39;d run into only a million times. “I know. Can\u0026#39;t do much about it most of the time, but I can here, so I will.”\u003c/p\u003e\n\u003cp\u003eTony nodded. “Thanks again.”\u003c/p\u003e\n\u003cp\u003e“Don\u0026#39;t mention it. Anyway, the printer. Your ticket said it was new? Looks pretty darn old to me.”\u003c/p\u003e\n\u003cp\u003e“It\u0026#39;s new over here,” Tony explained. “They just it brought down and set it up for us.”\u003c/p\u003e\n\u003cp\u003e“Can you try printing now?” I asked. “Let\u0026#39;s see what happens.”\u003c/p\u003e\n\u003chr/\u003e\n\u003cp\u003eLater that morning, I stopped by the usual smoke-break spot between office buildings. As wind and snow coursed through the alley, I recapped the morning\u0026#39;s events for my friends Megan and Reynaldo. Then I pulled a stack of folded-up paper from my trench coat pocket, splitting it in half to hand them several pages apiece. At last, I dug through my pockets for my sorely-needed cigarettes and lighter. While I carefully shielded the lighter\u0026#39;s flame from the wind to light the cigarette clenched in my teeth, they studied the printouts with looks that quickly turned baffled.\u003c/p\u003e\n\u003cp\u003e”I don\u0026#39;t feel safe working with Cheryl?” Reynaldo read aloud.\u003c/p\u003e\n\u003cp\u003e”John keeps staring at me in the break room. I\u0026#39;ve told him twice.” Megan\u0026#39;s eyes found mine. “What the hell? Every print request does this?”\u003c/p\u003e\n\u003cp\u003e“Every print job except for test prints,” I replied. “We\u0026#39;re lucky the poor thing starts up at all after Hothead gave it the salon treatment.”\u003c/p\u003e\n\u003cp\u003eMegan smirked, handing back her pages before hugging herself against the cold. “Sounds to me like it might be a network issue.” She glanced Reynaldo\u0026#39;s way for confirmation.\u003c/p\u003e\n\u003cp\u003eOur veteran network admin was too busy frowning at the stack of paper he rifled through to notice. “What have you tried?” he asked me.\u003c/p\u003e\n\u003cp\u003eI helped myself to a long, warming drag. “The printer already spent some time turned off and unplugged.” Hothead had seen to that. “Since it\u0026#39;s old, figured I\u0026#39;d reinstall the drivers, clear the print queue. Didn\u0026#39;t help.” I shrugged. “Megan\u0026#39;s right. Since it doesn\u0026#39;t happen with test prints, it seems like something fishy\u0026#39;s happening when the print requests coming through the network.”\u003c/p\u003e\n\u003cp\u003eReynaldo frowned in thoughtful silence for a while, then glanced between us. “Do you remember that system for submitting HR complaints anonymously through the intranet?”\u003c/p\u003e\n\u003cp\u003eForcing my brain-pointer back into memory spaces I usually steered clear of, it came back to me a little, through a thick fog. “Few years back? Before your time,” I added for Megan\u0026#39;s benefit. “Never paid it much mind. Never really believed those gripes would actually be anonymous.”\u003c/p\u003e\n\u003cp\u003e“Yeah, that\u0026#39;s crazy!” Megan said. “Who would trust that?”\u003c/p\u003e\n\u003cp\u003eI hefted the printouts she\u0026#39;d returned to me, each page loaded with more beef than a Texas ranch. “That\u0026#39;s who.”\u003c/p\u003e\n\u003cp\u003e“They retired that program ages ago,” Reynaldo said. “The server was decommissioned—at least, so I thought.” He dropped his cigarette butt to the slush-covered asphalt and crushed it underfoot, sighing heavily with a knowing look. “Let\u0026#39;s go trace some IPs.”\u003c/p\u003e\n\u003cp\u003e“Swell!” I was about to grind my partially-smoked cigarette against the brick wall behind me to save it for later when I caught the hopeful look in Megan\u0026#39;s eye.\u003c/p\u003e\n\u003cp\u003e“Can I help, too?” she asked.\u003c/p\u003e\n\u003cp\u003eWhat fool would say no?\u003c/p\u003e\n\u003cp\u003e“We may need a good developer at that,” I said. “C\u0026#39;mon!”\u003c/p\u003e\n\n\u003cp\u003e\u003cb\u003eTo be continued…\u003c/b\u003e\u003c/p\u003e\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tKeep the plebs out of prod. Restrict NuGet feed privileges with ProGet. \u003ca href=\"https://inedo.com/proget/private-nuget-server?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=PlebsFooter\u0026amp;utm_campaign=Cyclops2020\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"The Hot Fix","RssTitle":"The Hot Fix","CachedCommentCount":29,"LastCommentDate":"\/Date(1783204714827)\/","LastCommentDateDescription":"2026-07-04","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1782801000000)\/","ISODate":"2026-06-30","DisplayDate":"2026-06-30","Series":{"Slug":"feature-articles","Title":"Feature Articles","Description":"","CssClass":"featured"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tKeep the plebs out of prod. Restrict NuGet feed privileges with ProGet. \u003ca href=\"https://inedo.com/proget/private-nuget-server?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=PlebsFooter\u0026amp;utm_campaign=Cyclops2020\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/the-hot-fix","CommentsUrl":"https://thedailywtf.com/articles/comments/the-hot-fix","Slug":"the-hot-fix","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-hot-fix+-+The+Hot+Fix+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-hot-fix\u0026t=The+Hot+Fix+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=The%20Hot%20Fix:%20https://thedailywtf.com/articles/the-hot-fix","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-hot-fix","PreviousArticleId":11214,"PreviousArticleTitle":"Off the Path","PreviousArticleSlug":"off-the-path","PreviousArticleUrl":"//thedailywtf.com/articles/off-the-path","NextArticleId":11216,"NextArticleTitle":"A Specific Key","NextArticleSlug":"a-specific-key","NextArticleUrl":"//thedailywtf.com/articles/a-specific-key"},{"Id":11214,"Author":{"Name":"Remy Porter","FirstName":"Remy","ShortDescription":"Computers were a mistake, so I accidentally became a farmer? Editor-in-Chief for TDWTF.","DescriptionHtml":"\u003cp\u003eRemy is a veteran developer who writes software for farming robots. They pick tomatoes.\u003c/p\u003e\r\n\u003cp\u003eHe\u0027s often on stage, doing improv comedy, but insists that \u003cem\u003ehe\u003c/em\u003e isn\u0027t doing comedy- it\u0027s deadly serious. You\u0027re laughing at him, not with him. That, by the way, is usually true- you\u0027re laughing at him, not with him.\u003c/p\u003e","Slug":"remy-porter","IsAdmin":true,"IsActive":true,"ImageUrl":"https://s3.amazonaws.com/remy.jetpackshark.com/remy-thumb.jpg"},"Status":"Published","SummaryHtml":"\u003cp\u003eFile path separators are a common pain point when writing cross platform software. Of course, not every programming language has a graceful API for handling that. For example, prior to C++ 17, you had to do some \u003ccode\u003e#ifdef\u003c/code\u003e preprocessor magic to handle that. Which people usually did (or they\u0026#39;d use the Boost suite of libraries).\u003c/p\u003e\n\u003cp\u003eCode like this wouldn\u0026#39;t be out of place or incorrect:\u003c/p\u003e\n","BodyHtml":"\u003cp\u003eFile path separators are a common pain point when writing cross platform software. Of course, not every programming language has a graceful API for handling that. For example, prior to C++ 17, you had to do some \u003ccode\u003e#ifdef\u003c/code\u003e preprocessor magic to handle that. Which people usually did (or they\u0026#39;d use the Boost suite of libraries).\u003c/p\u003e\n\u003cp\u003eCode like this wouldn\u0026#39;t be out of place or incorrect:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-cpp\"\u003e\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e defined(WIN32) || defined(_WIN32) \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003edefine\u003c/span\u003e PATH_SEPARATOR \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003edefine\u003c/span\u003e PATH_SEPARATOR \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eendif\u003c/span\u003e \u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eDo I like it? No. But now I\u0026#39;ve got a pre-processor constant that I can use to assemble my paths in a way that will work across different file path conventions.\u003c/p\u003e\n\u003cp\u003eOf course, that\u0026#39;s the \u0026#34;normal\u0026#34; solution. You could, if you wanted, to it completely wrong. That\u0026#39;s what \u003cstrong\u003eXian\u003c/strong\u003e\u0026#39;s predecessor did.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-cpp\"\u003e\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eifdef\u003c/span\u003e UNIX\u003c/span\u003e\n           filename += \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e;\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e\u003c/span\u003e\n           filename += \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e;\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eendif\u003c/span\u003e\u003c/span\u003e\n           filename += (*exSeq)[i].path;\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eifdef\u003c/span\u003e WIN32\u003c/span\u003e\n           \u003cspan class=\"hljs-built_in\"\u003eReplaceAll\u003c/span\u003e(filename, \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e);\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e\u003c/span\u003e\n           \u003cspan class=\"hljs-built_in\"\u003eReplaceAll\u003c/span\u003e(filename, \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e);\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eendif\u003c/span\u003e\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf we\u0026#39;re compiling for unix, append a \u0026#34;/\u0026#34; to the filename. Otherwise, append a \u0026#34;\\\u0026#34;. Then we append a path out of an array. Then, if we\u0026#39;re on Windows, find all the \u0026#34;/\u0026#34; in our filename and replace them with \u0026#34;\\\u0026#34;. Otherwise, find all the \u0026#34;\\\u0026#34; in our filename and replace them with \u0026#34;/\u0026#34;.\u003c/p\u003e\n\u003cp\u003eInstead of defining a constant and using it everywhere you need to construct paths, this code was copy/pasted everywhere you needed to append a path separator onto your string. Well, almost everywhere. Clearly, we don\u0026#39;t know that the contents of \u003ccode\u003e(*exSeq)[i].path\u003c/code\u003e are correct for our target operating system, hence we have to do the \u003ccode\u003eReplaceAll\u003c/code\u003e call to sanitize it. Why didn\u0026#39;t we sanitize the portion we\u0026#39;re appending instead of the whole \u003ccode\u003efilename\u003c/code\u003e (which presumably is already sanitized?)? A better question: is this running inside of a loop? It looks like it is, based on the \u003ccode\u003e[i]\u003c/code\u003e array access there.\u003c/p\u003e\n\u003cp\u003eMultiple developers have copy/pasted this code into multiple places. Not one of them gave a shot at refactoring it. And somehow, there are still code paths that output the wrong path separator sometimes, though at least modern Windows is forgiving about that.\u003c/p\u003e\n\u003c!-- Easy Reader Version: And nobody properly supports the Files-11 path syntax anyway. Though tagging files with versions was cool. https://en.wikipedia.org/wiki/Files-11 --\u003e","BodyAndAdHtml":"\u003cp\u003eFile path separators are a common pain point when writing cross platform software. Of course, not every programming language has a graceful API for handling that. For example, prior to C++ 17, you had to do some \u003ccode\u003e#ifdef\u003c/code\u003e preprocessor magic to handle that. Which people usually did (or they\u0026#39;d use the Boost suite of libraries).\u003c/p\u003e\n\u003cp\u003eCode like this wouldn\u0026#39;t be out of place or incorrect:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-cpp\"\u003e\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eif\u003c/span\u003e defined(WIN32) || defined(_WIN32) \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003edefine\u003c/span\u003e PATH_SEPARATOR \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003edefine\u003c/span\u003e PATH_SEPARATOR \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e \u003c/span\u003e\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eendif\u003c/span\u003e \u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eDo I like it? No. But now I\u0026#39;ve got a pre-processor constant that I can use to assemble my paths in a way that will work across different file path conventions.\u003c/p\u003e\n\u003cp\u003eOf course, that\u0026#39;s the \u0026#34;normal\u0026#34; solution. You could, if you wanted, to it completely wrong. That\u0026#39;s what \u003cstrong\u003eXian\u003c/strong\u003e\u0026#39;s predecessor did.\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-cpp\"\u003e\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eifdef\u003c/span\u003e UNIX\u003c/span\u003e\n           filename += \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e;\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e\u003c/span\u003e\n           filename += \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e;\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eendif\u003c/span\u003e\u003c/span\u003e\n           filename += (*exSeq)[i].path;\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eifdef\u003c/span\u003e WIN32\u003c/span\u003e\n           \u003cspan class=\"hljs-built_in\"\u003eReplaceAll\u003c/span\u003e(filename, \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e);\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eelse\u003c/span\u003e\u003c/span\u003e\n           \u003cspan class=\"hljs-built_in\"\u003eReplaceAll\u003c/span\u003e(filename, \u003cspan class=\"hljs-string\"\u003e\u0026#34;\\\\\u0026#34;\u003c/span\u003e, \u003cspan class=\"hljs-string\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e);\n\u003cspan class=\"hljs-meta\"\u003e#\u003cspan class=\"hljs-keyword\"\u003eendif\u003c/span\u003e\u003c/span\u003e\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eIf we\u0026#39;re compiling for unix, append a \u0026#34;/\u0026#34; to the filename. Otherwise, append a \u0026#34;\\\u0026#34;. Then we append a path out of an array. Then, if we\u0026#39;re on Windows, find all the \u0026#34;/\u0026#34; in our filename and replace them with \u0026#34;\\\u0026#34;. Otherwise, find all the \u0026#34;\\\u0026#34; in our filename and replace them with \u0026#34;/\u0026#34;.\u003c/p\u003e\n\u003cp\u003eInstead of defining a constant and using it everywhere you need to construct paths, this code was copy/pasted everywhere you needed to append a path separator onto your string. Well, almost everywhere. Clearly, we don\u0026#39;t know that the contents of \u003ccode\u003e(*exSeq)[i].path\u003c/code\u003e are correct for our target operating system, hence we have to do the \u003ccode\u003eReplaceAll\u003c/code\u003e call to sanitize it. Why didn\u0026#39;t we sanitize the portion we\u0026#39;re appending instead of the whole \u003ccode\u003efilename\u003c/code\u003e (which presumably is already sanitized?)? A better question: is this running inside of a loop? It looks like it is, based on the \u003ccode\u003e[i]\u003c/code\u003e array access there.\u003c/p\u003e\n\u003cp\u003eMultiple developers have copy/pasted this code into multiple places. Not one of them gave a shot at refactoring it. And somehow, there are still code paths that output the wrong path separator sometimes, though at least modern Windows is forgiving about that.\u003c/p\u003e\n\u003c!-- Easy Reader Version: And nobody properly supports the Files-11 path syntax anyway. Though tagging files with versions was cool. https://en.wikipedia.org/wiki/Files-11 --\u003e\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eBuildMaster\u003c/a\u003e allows you to create a self-service release management platform that allows different teams to manage their applications. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eExplore how!\u003c/a\u003e \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"Off the Path","RssTitle":"CodeSOD: Off the Path","CachedCommentCount":36,"LastCommentDate":"\/Date(1783012940570)\/","LastCommentDateDescription":"2026-07-02","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1782714600000)\/","ISODate":"2026-06-29","DisplayDate":"2026-06-29","Series":{"Slug":"code-sod","Title":"CodeSOD","Description":"Code Snippet Of the Day (CodeSOD) features interesting and usually incorrect code snippets taken from actual production code in a commercial and/or open source software projects.","CssClass":"code"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eBuildMaster\u003c/a\u003e allows you to create a self-service release management platform that allows different teams to manage their applications. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eExplore how!\u003c/a\u003e \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/off-the-path","CommentsUrl":"https://thedailywtf.com/articles/comments/off-the-path","Slug":"off-the-path","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2foff-the-path+-+Off+the+Path+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2foff-the-path\u0026t=Off+the+Path+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=Off%20the%20Path:%20https://thedailywtf.com/articles/off-the-path","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2foff-the-path","PreviousArticleId":11213,"PreviousArticleTitle":"Fi fa foe","PreviousArticleSlug":"fi-fa-foe","PreviousArticleUrl":"//thedailywtf.com/articles/fi-fa-foe","NextArticleId":11215,"NextArticleTitle":"The Hot Fix","NextArticleSlug":"the-hot-fix","NextArticleUrl":"//thedailywtf.com/articles/the-hot-fix"},{"Id":11213,"Author":{"Name":"Lyle Seaman","FirstName":"Lyle","ShortDescription":"networking, security infra and filesystems kernel hacker turned application programmer, SRE and engineering manager, Lyle traded tilting at windmills for viking at Vikings but couldn\u0027t catch any.","DescriptionHtml":null,"Slug":"lyle-seaman","IsAdmin":true,"IsActive":true,"ImageUrl":"/images/imageslws/viking.jpg"},"Status":"Published","SummaryHtml":"\u003cp\u003eFirst up this week is a little story about a fifafail. I do wonder if this was a failure of the television station, or whether \u003ca href=\"https://bobdahacker.com/blog/fifa-hack\"\u003ethere was something more to it than that\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp\u003e\n\u003cstrong\u003eHercules\u003c/strong\u003e wrote to alert us to these World Cup shenanigans, explaing \n\u0026#34;At least the flags were correct. And yes, this was\nlive TV. The host got the country names correctly, and\neven called out that the written text was wrong\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003c/blockquote\u003e","BodyHtml":"\u003cp\u003eFirst up this week is a little story about a fifafail. I do wonder if this was a failure of the television station, or whether \u003ca href=\"https://bobdahacker.com/blog/fifa-hack\"\u003ethere was something more to it than that\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp\u003e\n\u003cstrong\u003eHercules\u003c/strong\u003e wrote to alert us to these World Cup shenanigans, explaing \n\u0026#34;At least the flags were correct. And yes, this was\nlive TV. The host got the country names correctly, and\neven called out that the written text was wrong\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#5503f1d7141948f88f4650c17468ff46\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"5503f1d7141948f88f4650c17468ff46\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/5503f1d7141948f88f4650c17468ff46.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003e\n\u0026#34;I\u0026#39;m very open in my job search but I did\nlimit it to France. The search has been working well\nfor months, but this morning I got a bevy of\nnew interesting propositions. It seems France is much bigger than\nit was yesterday.\u0026#34; Apparently\n\u003cstrong\u003eWorkerNumber29200\u003c/strong\u003e\nis surprised by the expansionist nature of an imperialist coloniser. Plus ça change, Worker. \n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#f05fd09185bd4f2ebeacc92de9609131\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"f05fd09185bd4f2ebeacc92de9609131\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/f05fd09185bd4f2ebeacc92de9609131.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eWe have a couple of wtfs from Github.  First \n\u003cstrong\u003eHans K.\u003c/strong\u003e\n\u0026#34;would love to find a, so I could fix\nthis GitHub Dependabot issue.\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#4d41995a2e7a423cbf8de6e960b876c4\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"4d41995a2e7a423cbf8de6e960b876c4\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/4d41995a2e7a423cbf8de6e960b876c4.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eAnd\n\u003cstrong\u003ePeter S.\u003c/strong\u003e figures that \n\u0026#34;GitHub has trouble doing basic math -- or they have an\nunpublished proof that 0=1\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#e954781458d64f6da02bfad014efc854\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"e954781458d64f6da02bfad014efc854\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/e954781458d64f6da02bfad014efc854.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eFinally \n\u003cstrong\u003eMichele\u003c/strong\u003e has just encountered one of the most maddening phenomena on Amazon recently.\n\u0026#34;Searching for a cheap USB-C fast charger. Got\na list of expensive CDs of obscure artists.\u0026#34;  All of them AI-generated, like the \u003ca href=\"https://lcamtuf.coredump.cx/blog/whys2.jpg\"\u003e100000 Whys\u003c/a\u003e books?\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#cdf7c2baae7541a9ad8e90b9c4ecb0c4\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"cdf7c2baae7541a9ad8e90b9c4ecb0c4\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/cdf7c2baae7541a9ad8e90b9c4ecb0c4.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n","BodyAndAdHtml":"\u003cp\u003eFirst up this week is a little story about a fifafail. I do wonder if this was a failure of the television station, or whether \u003ca href=\"https://bobdahacker.com/blog/fifa-hack\"\u003ethere was something more to it than that\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp\u003e\n\u003cstrong\u003eHercules\u003c/strong\u003e wrote to alert us to these World Cup shenanigans, explaing \n\u0026#34;At least the flags were correct. And yes, this was\nlive TV. The host got the country names correctly, and\neven called out that the written text was wrong\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#5503f1d7141948f88f4650c17468ff46\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"5503f1d7141948f88f4650c17468ff46\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/5503f1d7141948f88f4650c17468ff46.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003e\n\u0026#34;I\u0026#39;m very open in my job search but I did\nlimit it to France. The search has been working well\nfor months, but this morning I got a bevy of\nnew interesting propositions. It seems France is much bigger than\nit was yesterday.\u0026#34; Apparently\n\u003cstrong\u003eWorkerNumber29200\u003c/strong\u003e\nis surprised by the expansionist nature of an imperialist coloniser. Plus ça change, Worker. \n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#f05fd09185bd4f2ebeacc92de9609131\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"f05fd09185bd4f2ebeacc92de9609131\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/f05fd09185bd4f2ebeacc92de9609131.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eWe have a couple of wtfs from Github.  First \n\u003cstrong\u003eHans K.\u003c/strong\u003e\n\u0026#34;would love to find a, so I could fix\nthis GitHub Dependabot issue.\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#4d41995a2e7a423cbf8de6e960b876c4\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"4d41995a2e7a423cbf8de6e960b876c4\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/4d41995a2e7a423cbf8de6e960b876c4.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eAnd\n\u003cstrong\u003ePeter S.\u003c/strong\u003e figures that \n\u0026#34;GitHub has trouble doing basic math -- or they have an\nunpublished proof that 0=1\u0026#34;\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#e954781458d64f6da02bfad014efc854\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"e954781458d64f6da02bfad014efc854\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/e954781458d64f6da02bfad014efc854.png\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cp\u003eFinally \n\u003cstrong\u003eMichele\u003c/strong\u003e has just encountered one of the most maddening phenomena on Amazon recently.\n\u0026#34;Searching for a cheap USB-C fast charger. Got\na list of expensive CDs of obscure artists.\u0026#34;  All of them AI-generated, like the \u003ca href=\"https://lcamtuf.coredump.cx/blog/whys2.jpg\"\u003e100000 Whys\u003c/a\u003e books?\n\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\u003ca href=\"#cdf7c2baae7541a9ad8e90b9c4ecb0c4\"\u003e\u003cimg itemprop=\"image\" border=\"0\" alt=\"cdf7c2baae7541a9ad8e90b9c4ecb0c4\" src=\"https://d3hvi6t161kfmf.cloudfront.net/images/2026/06/25/cdf7c2baae7541a9ad8e90b9c4ecb0c4.jpeg\"/\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003e \u003c/p\u003e\u003c/blockquote\u003e\n\n\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eBuildMaster\u003c/a\u003e allows you to create a self-service release management platform that allows different teams to manage their applications. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eExplore how!\u003c/a\u003e \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"Fi fa foe","RssTitle":"Error\u0027d: Fi fa foe","CachedCommentCount":16,"LastCommentDate":"\/Date(1783204745813)\/","LastCommentDateDescription":"2026-07-04","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1782455400000)\/","ISODate":"2026-06-26","DisplayDate":"2026-06-26","Series":{"Slug":"errord","Title":"Error\u0027d","Description":"Error\u0027d features fun error messages and other visual oddities from the world of IT.","CssClass":"errord"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/buildmaster-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\t\u003ca href=\"https://inedo.com/BuildMaster?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eBuildMaster\u003c/a\u003e allows you to create a self-service release management platform that allows different teams to manage their applications. \u003ca href=\"https://inedo.com/BuildMaster/download?utm_source=tdwtf\u0026amp;utm_medium=footerad\u0026amp;utm_term=2018\u0026amp;utm_content=Self_Service\u0026amp;utm_campaign=Buildmaster_Footer\"\u003eExplore how!\u003c/a\u003e \n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/fi-fa-foe","CommentsUrl":"https://thedailywtf.com/articles/comments/fi-fa-foe","Slug":"fi-fa-foe","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2ffi-fa-foe+-+Fi+fa+foe+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2ffi-fa-foe\u0026t=Fi+fa+foe+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=Fi%20fa%20foe:%20https://thedailywtf.com/articles/fi-fa-foe","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2ffi-fa-foe","PreviousArticleId":11212,"PreviousArticleTitle":"The Roadmap","PreviousArticleSlug":"the-roadmap","PreviousArticleUrl":"//thedailywtf.com/articles/the-roadmap","NextArticleId":11214,"NextArticleTitle":"Off the Path","NextArticleSlug":"off-the-path","NextArticleUrl":"//thedailywtf.com/articles/off-the-path"},{"Id":11212,"Author":{"Name":"Remy Porter","FirstName":"Remy","ShortDescription":"Computers were a mistake, so I accidentally became a farmer? Editor-in-Chief for TDWTF.","DescriptionHtml":"\u003cp\u003eRemy is a veteran developer who writes software for farming robots. They pick tomatoes.\u003c/p\u003e\r\n\u003cp\u003eHe\u0027s often on stage, doing improv comedy, but insists that \u003cem\u003ehe\u003c/em\u003e isn\u0027t doing comedy- it\u0027s deadly serious. You\u0027re laughing at him, not with him. That, by the way, is usually true- you\u0027re laughing at him, not with him.\u003c/p\u003e","Slug":"remy-porter","IsAdmin":true,"IsActive":true,"ImageUrl":"https://s3.amazonaws.com/remy.jetpackshark.com/remy-thumb.jpg"},"Status":"Published","SummaryHtml":"\u003cp\u003eWhen \u003cstrong\u003eGary\u003c/strong\u003e was called in for a meeting with a few of his managers- because of course he had several- he thought it was going to be for an \u0026#34;attaboy\u0026#34;, because things had been going really well for the past few months.\u003c/p\u003e\n\u003cp\u003eGary had inherited a mess, and taken over a nightmare application. It was the kind of application that \u003cem\u003eshould\u003c/em\u003e be a simple CRUD-style data-driven app, but somehow despite only having 20ish entities it managed, someone had generated 500+ controllers for managing them. Most of those controllers were copy/pasted code with minor changes in the \u003ccode\u003eWHERE\u003c/code\u003e clause of a SQL query.\u003c/p\u003e\n","BodyHtml":"\u003cp\u003eWhen \u003cstrong\u003eGary\u003c/strong\u003e was called in for a meeting with a few of his managers- because of course he had several- he thought it was going to be for an \u0026#34;attaboy\u0026#34;, because things had been going really well for the past few months.\u003c/p\u003e\n\u003cp\u003eGary had inherited a mess, and taken over a nightmare application. It was the kind of application that \u003cem\u003eshould\u003c/em\u003e be a simple CRUD-style data-driven app, but somehow despite only having 20ish entities it managed, someone had generated 500+ controllers for managing them. Most of those controllers were copy/pasted code with minor changes in the \u003ccode\u003eWHERE\u003c/code\u003e clause of a SQL query.\u003c/p\u003e\n\u003cp\u003eAnd that was just the code. The infrastructure was similarly a mess, with duplicate resources provisioned in their cloud host. There was no CI/CD, no unit tests to speak of, no deployment process that wasn\u0026#39;t \u0026#34;manually copy these files and pray\u0026#34;. And uptime? You\u0026#39;ve heard about \u0026#34;five nines\u0026#34;, but this product was lucky to get even \u003cem\u003eone\u003c/em\u003e nine. Especially because the manual deployment process meant a few hours of downtime.\u003c/p\u003e\n\u003cp\u003eAnd that was just the infrastructure. The backlog was similarly messy. There were lots of tasks- many thousands- but not a single one had a priority. Most of the tasks were something like, \u0026#34;Fix database timeouts\u0026#34;, or \u0026#34;Bug 531\u0026#34; with no description to explain what they were. At best, some of the \u0026#34;new feature\u0026#34; tasks linked to a Google Doc that explained a software roadmap that had been last updated in 2020.\u003c/p\u003e\n\u003cp\u003eSo with no guidance, Gary and the rest of his team got to work. Cloud costs were massive. Just cutting the duplicate resources would help, but with actual \u003cem\u003eplanning\u003c/em\u003e it wasn\u0026#39;t hard to find even bigger wins. In total, Gary got the cloud costs down 60%- essentially saving the company a small multiple of his salary every year.\u003c/p\u003e\n\u003cp\u003eWith that out of the way, getting a CI/CD pipeline running was next. Within a few weeks, manual deployments were gone. Everything was automated. Downtime nearly vanished. And now, with all the cost savings in cloud resources, for a fraction of what they were paying, it was easy to automate provisioning test environments for each new feature.\u003c/p\u003e\n\u003cp\u003eSo Gary was very ready for some congratulations when he sat down with management. He was prepared to discuss all the wins he and the rest of the developers on the project had gotten over the past few months.\u003c/p\u003e\n\u003cp\u003e\u0026#34;I\u0026#39;m sure you know why we\u0026#39;re sitting down,\u0026#34; Manager the First said when they settled into the conference room.\u003c/p\u003e\n\u003cp\u003e\u0026#34;I\u0026#39;m sure,\u0026#34; said Manager the Second.\u003c/p\u003e\n\u003cp\u003e\u0026#34;We have some concerns about your performance,\u0026#34; Manager the Third said.\u003c/p\u003e\n\u003cp\u003e\u0026#34;My performance?\u0026#34; Gary asked.\u003c/p\u003e\n\u003cp\u003e\u0026#34;Yes,\u0026#34; said Manager the First. \u0026#34;Let me pull up the backlog.\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;And the roadmap,\u0026#34; said Manager the Second.\u003c/p\u003e\n\u003cp\u003e\u0026#34;Yes, I\u0026#39;m getting that up too, thank you.\u0026#34; The trio of managers struggled with pulling up the appropriate pages, and after about 15 minutes, gave up. Instead, they discussed their complaint without visual aids. \u0026#34;You haven\u0026#39;t completed any of the tasks on the roadmap. Bug 673 has been open since you started on the team. None of the roadmap milestones have been touched. There\u0026#39;s absolutely no progress.\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;Okay, but that document was wildly out of date,\u0026#34; Gary said. \u0026#34;Instead I put cycles into solving the actual problems we\u0026#39;re having. I\u0026#39;ve saved the company a huge amount of money. I\u0026#39;ve gotten our development cycle time down to a fraction of what it was. And we have basically no downtime!\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;That\u0026#39;s all very nice, I\u0026#39;m sure,\u0026#34; said Manager the Third. \u0026#34;But none of that was on our roadmap.\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;Well, maybe we should set up a meeting to go over the roadmap,\u0026#34; Gary said. \u0026#34;Because a lot of the tasks on there don\u0026#39;t make much sense right now-\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;I don\u0026#39;t think that\u0026#39;s a good use of time,\u0026#34; Manager the Second said. \u0026#34;Large meetings are expensive. Just stick to the roadmap, please.\u0026#34;\u003c/p\u003e\n\u003cp\u003eWith that, the meeting ended. Gary went back to work…\u003c/p\u003e\n\u003cp\u003e… updating his resume.\u003c/p\u003e\n\u003c!-- Easy Reader Version: Stick to the roadmap --\u003e","BodyAndAdHtml":"\u003cp\u003eWhen \u003cstrong\u003eGary\u003c/strong\u003e was called in for a meeting with a few of his managers- because of course he had several- he thought it was going to be for an \u0026#34;attaboy\u0026#34;, because things had been going really well for the past few months.\u003c/p\u003e\n\u003cp\u003eGary had inherited a mess, and taken over a nightmare application. It was the kind of application that \u003cem\u003eshould\u003c/em\u003e be a simple CRUD-style data-driven app, but somehow despite only having 20ish entities it managed, someone had generated 500+ controllers for managing them. Most of those controllers were copy/pasted code with minor changes in the \u003ccode\u003eWHERE\u003c/code\u003e clause of a SQL query.\u003c/p\u003e\n\u003cp\u003eAnd that was just the code. The infrastructure was similarly a mess, with duplicate resources provisioned in their cloud host. There was no CI/CD, no unit tests to speak of, no deployment process that wasn\u0026#39;t \u0026#34;manually copy these files and pray\u0026#34;. And uptime? You\u0026#39;ve heard about \u0026#34;five nines\u0026#34;, but this product was lucky to get even \u003cem\u003eone\u003c/em\u003e nine. Especially because the manual deployment process meant a few hours of downtime.\u003c/p\u003e\n\u003cp\u003eAnd that was just the infrastructure. The backlog was similarly messy. There were lots of tasks- many thousands- but not a single one had a priority. Most of the tasks were something like, \u0026#34;Fix database timeouts\u0026#34;, or \u0026#34;Bug 531\u0026#34; with no description to explain what they were. At best, some of the \u0026#34;new feature\u0026#34; tasks linked to a Google Doc that explained a software roadmap that had been last updated in 2020.\u003c/p\u003e\n\u003cp\u003eSo with no guidance, Gary and the rest of his team got to work. Cloud costs were massive. Just cutting the duplicate resources would help, but with actual \u003cem\u003eplanning\u003c/em\u003e it wasn\u0026#39;t hard to find even bigger wins. In total, Gary got the cloud costs down 60%- essentially saving the company a small multiple of his salary every year.\u003c/p\u003e\n\u003cp\u003eWith that out of the way, getting a CI/CD pipeline running was next. Within a few weeks, manual deployments were gone. Everything was automated. Downtime nearly vanished. And now, with all the cost savings in cloud resources, for a fraction of what they were paying, it was easy to automate provisioning test environments for each new feature.\u003c/p\u003e\n\u003cp\u003eSo Gary was very ready for some congratulations when he sat down with management. He was prepared to discuss all the wins he and the rest of the developers on the project had gotten over the past few months.\u003c/p\u003e\n\u003cp\u003e\u0026#34;I\u0026#39;m sure you know why we\u0026#39;re sitting down,\u0026#34; Manager the First said when they settled into the conference room.\u003c/p\u003e\n\u003cp\u003e\u0026#34;I\u0026#39;m sure,\u0026#34; said Manager the Second.\u003c/p\u003e\n\u003cp\u003e\u0026#34;We have some concerns about your performance,\u0026#34; Manager the Third said.\u003c/p\u003e\n\u003cp\u003e\u0026#34;My performance?\u0026#34; Gary asked.\u003c/p\u003e\n\u003cp\u003e\u0026#34;Yes,\u0026#34; said Manager the First. \u0026#34;Let me pull up the backlog.\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;And the roadmap,\u0026#34; said Manager the Second.\u003c/p\u003e\n\u003cp\u003e\u0026#34;Yes, I\u0026#39;m getting that up too, thank you.\u0026#34; The trio of managers struggled with pulling up the appropriate pages, and after about 15 minutes, gave up. Instead, they discussed their complaint without visual aids. \u0026#34;You haven\u0026#39;t completed any of the tasks on the roadmap. Bug 673 has been open since you started on the team. None of the roadmap milestones have been touched. There\u0026#39;s absolutely no progress.\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;Okay, but that document was wildly out of date,\u0026#34; Gary said. \u0026#34;Instead I put cycles into solving the actual problems we\u0026#39;re having. I\u0026#39;ve saved the company a huge amount of money. I\u0026#39;ve gotten our development cycle time down to a fraction of what it was. And we have basically no downtime!\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;That\u0026#39;s all very nice, I\u0026#39;m sure,\u0026#34; said Manager the Third. \u0026#34;But none of that was on our roadmap.\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;Well, maybe we should set up a meeting to go over the roadmap,\u0026#34; Gary said. \u0026#34;Because a lot of the tasks on there don\u0026#39;t make much sense right now-\u0026#34;\u003c/p\u003e\n\u003cp\u003e\u0026#34;I don\u0026#39;t think that\u0026#39;s a good use of time,\u0026#34; Manager the Second said. \u0026#34;Large meetings are expensive. Just stick to the roadmap, please.\u0026#34;\u003c/p\u003e\n\u003cp\u003eWith that, the meeting ended. Gary went back to work…\u003c/p\u003e\n\u003cp\u003e… updating his resume.\u003c/p\u003e\n\u003c!-- Easy Reader Version: Stick to the roadmap --\u003e\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tKeep the plebs out of prod. Restrict NuGet feed privileges with ProGet. \u003ca href=\"https://inedo.com/proget/private-nuget-server?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=PlebsFooter\u0026amp;utm_campaign=Cyclops2020\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Title":"The Roadmap","RssTitle":"The Roadmap","CachedCommentCount":29,"LastCommentDate":"\/Date(1783377248343)\/","LastCommentDateDescription":"2026-07-06","DiscourseTopicId":null,"DiscourseTopicOpened":false,"PublishedDate":"\/Date(1782369000000)\/","ISODate":"2026-06-25","DisplayDate":"2026-06-25","Series":{"Slug":"feature-articles","Title":"Feature Articles","Description":"","CssClass":"featured"},"FooterAdHtml":"\u003cdiv\u003e\n\t\u003cimg src=\"https://thedailywtf.com/images/inedo/proget-icon.png\" style=\"display:block; float: left; margin: 0 10px 10px 0;\"/\u003e [Advertisement] \n\tKeep the plebs out of prod. Restrict NuGet feed privileges with ProGet. \u003ca href=\"https://inedo.com/proget/private-nuget-server?utm_source=tdwtf\u0026amp;utm_medium=footer\u0026amp;utm_content=PlebsFooter\u0026amp;utm_campaign=Cyclops2020\"\u003eLearn more.\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv style=\"clear: left;\"\u003e \u003c/div\u003e\n","Url":"https://thedailywtf.com/articles/the-roadmap","CommentsUrl":"https://thedailywtf.com/articles/comments/the-roadmap","Slug":"the-roadmap","TwitterUrl":"//www.twitter.com/home?status=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-roadmap+-+The+Roadmap+-+The+Daily+WTF","FacebookUrl":"//www.facebook.com/sharer.php?u=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-roadmap\u0026t=The+Roadmap+-+The+Daily+WTF","EmailUrl":"mailto:%20?subject=Check%20out%20this%20article%20on%20The%20Daily%20WTF...\u0026body=The%20Roadmap:%20https://thedailywtf.com/articles/the-roadmap","GooglePlusUrl":"//plus.google.com/share?url=https%3a%2f%2fthedailywtf.com%2farticles%2fthe-roadmap","PreviousArticleId":11211,"PreviousArticleTitle":"Authorized Logger","PreviousArticleSlug":"authorized-logger","PreviousArticleUrl":"//thedailywtf.com/articles/authorized-logger","NextArticleId":11213,"NextArticleTitle":"Fi fa foe","NextArticleSlug":"fi-fa-foe","NextArticleUrl":"//thedailywtf.com/articles/fi-fa-foe"}]