from/prod
← All companies

THE COMPANY INDEX TRACKED BLOG

The Daily WTF

Ideas, decisions, and lessons from the team.

thedailywtf.com (opens on the source site)X
34Posts tracked
2 days agoLatest publication
2.8Posts / month over the last 12 months

Latest writing

20 of 34 posts

Error'd: Fast Quick (opens on the source site)

Matias shared a standard sort of flubstituted fail-merge error'd; not really egregious, just routine. "I am {{emotionType}} to hear this." And another mail-not-merged from Reinier B. "When the package from [SELLER] seemed to be lost in the mail, I was very [EMOTIONAL_STATE] with the refund of [AMOUNT]. I can now buy another [ITEM] instead." Dave A. didn't care for this mail flub, though it's hardly egregious in my opinion. He suggested we just label it with "A short description of snarky comments." "I've_missed_you_too" Willy wrote in response to this earnest email. "Long lasting…

Read at the source

Racing Trains (opens on the source site)

Robert G sends us a WTF from the outside, but I think we can come up with some hypotheses about what actually happened. Robert was traveling by train. For complicated train reasons, the car he was seated on was not actually scheduled to continue with the train he was booked to ride, the replacement can missed its scheduled arrival, and the result was that Robert was left at a station needing to rebook his travel. Now, given that this is in a region of the world with a fairly robust train network, this represented a hiccup of thirty minutes in a many hour trip. Not a particularly big deal. But…

Read at the source

CodeSOD: A Tool for You (opens on the source site)

A junior dev on the team had a simple question: in Java, how do I correctly read user input from the CLI and act on it? Now, we can wonder about a junior dev not having such basic knowledge, but maybe they're new to Java specifically. Who knows. But Robert's team has a senior on it who "likes to mentor". This senior has strong opinions about how to write software, extreme confidence in those opinions, and has somehow been around the company long enough that he knows where the bodies are buried and no one will fire him. Here's his sample application for reading input. import…

Read at the source

CodeSOD: A Random Article (opens on the source site)

Many years ago, DJ got his start doing odd web development jobs for a low hourly rate. He was only 19 when he got started, and what he lacked in experience he made up for in being cheap to hire. As I said, that was many years ago, and he has since learned a lot. But he still has some code from his very first "someone paid me for this" project. This particular function needed to pick a random bit of content from their database to display in the "right side" banner area. This is how DJ implemented it. // Create an array of all the ID's used $int = array(); $query = $sql->query("SELECT * FROM…

Read at the source

CodeSOD: The Date and Time and Time (opens on the source site)

Today's anonymous submitter sends us some legacy Java code. The task is this: check what time it is. And fortunately, even in the older Java datetime libraries that were terrible, this was an easy task. You just needed to do something like new Date(), which constructs a date time object set to the current time. getTime() picks off just the time portion. Or, you could do this. Timestamp current = new Timestamp(new Date().getTime()); Date date = new Date(current.getTime()); This creates a date, picks the time off, populates a timestamp, gets the time from the timestamp, and constructs a new…

Read at the source

Error'd: Said Different (opens on the source site)

I know it's not nice to mock mistranslations, but would you believe we're laughing with them, not at them? In response to recent criticism of the difficulty of identifying precisely what is at issue, two of our readers have chosen to highlight the offending element. Thanks for saving me the trouble!" "Bad Dutch translation, or is't?" asketh Mike V. "I visited the Dutch Dell site https://www.dell.com/nl-nl and noticed the bad translation on the "Accept All" cookies button. Then I visited the UK page on https://www.dell.com/en-uk and was not so sure anymore about the bad translation. Funny…

Read at the source

CodeSOD: Historical Pads (opens on the source site)

Tim inherited a fairly antique Visual Basic application some time back. Yes, Visual Basic, not VB .Net. The application is old enough that we might consider it "vintage" or "historical"; it certainly dates from before the millennium. But it has its own unique approach to handling historical dates: mnYear% = CInt(Year(vntDate)) If mnYear% 1000 Then msYear$ = "0" & Trim$(CStr(mnYear%)) Else msYear$ = Trim$(CStr(mnYear%)) End If Insert obligatory complaints about Hungarian notation. What even is vnt. Now, one important thing about this program: it didn't have to handle dates back into the middle…

Read at the source

It's all Part 1 of the Process (opens on the source site)

Our submitter Tim C. shares his tale of an especially brutal culture clash: I had co-founded a software startup doing stock market surveillance. In the early 2000s, the WTF Exchange (WTFX) was a major customer of ours. We were one part of a major project of theirs, a complete overhaul of their trading engine and IT systems. Compared to our other clients, WTFX was quite bureaucratic. There seemed to be a strong focus on the process, rather than the mission or the result. They were even explicit about this, telling us, "The process is the deliverable." I believe they made that explicit in…

Read at the source

CodeSOD: The John Cage Variable (opens on the source site)

David C sends us a true confession. For my job, I write C++ code as if it was a scripting language (long story) to produce programmatic animations for videos. Given that these are "write-and-run-once-and-never-look-at-it-again" programs, I tend to not try as hard to make my code good. But once I wrote this line of code, I had to take a step back and reevaluate my life choices. fade_out(scene, length4->range(0, 3), length4_3_3, length4[4], length4[5]->range(0, 3)); This is a natural consequence of passing parameters as arrays, it seems; instead of having meaningful named values in a struct or…

Read at the source

The Weakest Leg (opens on the source site)

On July 10 2026, a life insurance company called TruStage had a "cybersecurity incident". According to an update posted five days later, when they revealed the incident, they are "continuing to work carefully and urgently to understand the facts, and the company will communicate appropriately as its understanding of the situation evolves." This work, according to their outage page (last updated on September 11th, at the time of this writing), is continuing. Every major business function is listed as "partially available". They have some text explaining that they can't simply turn the system…

Read at the source

Error'd: Unrewarding (opens on the source site)

Some new and some old entries this week, from people who find zero profoundly unrewarding. "A scary blue button from The North Face" warns Dmitry K.. "Northface has just proudly rewarded me with nothing. I am not sure whether I want to try adding such a non-positive amount to my wallet. I am afraid I can trigger a chain reaction that will crash the financial system of the whole world..." "0% Steam discount" advises Renan "As much as I love Final Fantasy, I guess I'll pass on this 0% discount." "Give me my money around zero" demands Reinier B. "The Nederlandse Spoorwegen (Dutch Railways) owe…

Read at the source

A Bit of DNS (opens on the source site)

I'm not a DNS person, in that I appreciate that it exists but am not up on the inner workings. It solves a lot of problems with dark magic I don't fully understand, and fortunately don't need to. But Lucio noticed something that I do think is interesting, within the scope of the CAA record type. The CAA record started with RFC6844, which was obsoleted by RFC8659. Both RFCs lay out the same core idea: you can add a CAA record to your DNS entries to say, "hey, this domain over here is allowed to issue certificates for me". That's the sort of thing that enables LetsEncrypt to hand out certs, and…

Read at the source

CodeSOD: Asynchronous Directories (opens on the source site)

Eri has a mix of a "true confession" and a "wait, really?" today. The programming language Vala bills itself as a C# like language that compiles into something pretty close to C performance, designed specifically for writing code against Gnome and its associated libraries. One of the C#-isms in brings in is async/await type semantics. You can yield someAsyncFunction(), which returns control to the caller, allowing it to proceed until the yielded function returns an actual value. Because it has asynchronous functions, many library functions for handling I/O are already async. So you can…

Read at the source

A Mortal Blow (opens on the source site)

From our anonymous submitter: Having reached the end of the road at a company increasingly swallowed up companies further east which you'd never believe were still afloat, I found myself headhunted for certain specialty software skills. I was reaching the final few years of my expected working span, so I jumped at the chance. The money was (to me at that time) spectacularly good, so I jumped into it. , via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:Time_Is_Life,_1080%C3%971920,_154.35_KB.jpg"> It started when my first day was spent by me being sent home for the weeks it…

Read at the source

Best of…: Classic WTF: A Dumbain Specific Language (opens on the source site)

It's a holiday here in the US, a celebration of labor, so we're reaching back through the archives for a story about an attempt to be labor saving that was not successful. Original. --Remy I’ve had to write a few domain-specific-languages in the past. As per Remy’s Law of Requirements Gathering, it’s been mostly because the users needed an Excel-like formula language. The danger of DSLs, of course, is that they’re often YAGNI in the extreme, or at least a sign that you don’t really understand your problem. XML, coupled with schemas, is a tool for building data-focused DSLs. If you have some…

Read at the source

Error'd: Good Time (opens on the source site)

Astute readers noticed last week that this editor (that is to say, me) had his own error'd failure to remember what day it was. Thank you for pointing it out promptly, and then proceeding to send in a bunch of examples of other sites calendar failures. Misery loves company! Traveler's travails, from C_Chell "Trying to complete the form on https://www.ihg.com to tell when I plan to arrive at the hotel, I can't complete the form because of this little time problem." "You Have -1 Month(s) To Order!" announces dragoncoder047. "Ah, GradImages... the company that told all graduates that they'd get…

Read at the source

CodeSOD: Heating Up (opens on the source site)

A common option for retrofitting heating and cooling into older homes is a mini-split, frequently tied to a heat pump. They're (relatively) cheap to install, energy efficient, and can be added without substantial modifications to the home. They also, annoyingly, are mostly controlled via IR remotes, making them challenging to wire up to home automation or even a household thermostat. People have made solutions, and today's code comes from one of those solutions. Which, I want to stress, this code comes from an open source project for home automation, so it's not the code that's wrong, here.…

Read at the source

Representative Line: So Much Room (opens on the source site)

Today's representative comment ran out of room. int maxLen = getColumnSize(session, "audit", "text_value1") - 16; // Leave some room for No, it isn't continued on the next line and just got trimmed out, except perhaps by a careless merge. This is the entire comment. Clearly, written by David Chase, the creator of "The Sopranos". There are so many things we might be leaving room for. We could leave some room for dessert. Leave some room for activities. Leave some room for the holy spirit. Leave some room for improvisation. [Advertisement] ProGet’s got you covered with security and access…

Read at the source

Tales from the World Cup (opens on the source site)

All I can say in response to our anonymous submitter's story is, ALMOST?! With the World Cup being hosted in North America this year, I remembered this story that happened back in 2014. At the time I was working in Brazil, for a company that builds software systems for public services. And, with the World Cup being hosted there, in came the opportunity for local agencies to invest in modernization, with pretty much a blank check to get new services, so long as it was deployed before the end of the World Cup. And so the sales people did what they did best, and went around trying to upsell…

Read at the source

CodeSOD: The Big Family (opens on the source site)

Some time ago, Charles shared with us some awful PHP, aka the most common sort. Today's code sample is maybe a little too big to sum up, but I'll let Charles take a crack at it. It's so bad that even analyzing and laughing at it feels impossible. But it’s so bad, I couldn’t not share it. I’m the only one handling all the IT-related tasks at my company, and I don’t have anyone here to vent or laugh about this kind of thing with. So, I figured, why not share it here? I’m hoping it’ll provide at least a little bit of catharsis or some dark humor. To make sure the confidentiality of the codebase…

Read at the source

Privacy choices

Reading never requires analytics. These choices last 90 days on this browser.

Essential sign-in and security storage always stays on. Read the privacy notice.