site banner

Friday Fun Thread for August 15, 2025

Be advised: this thread is not for serious in-depth discussion of weighty topics (we have a link for that), this thread is not for anything Culture War related. This thread is for Fun. You got jokes? Share 'em. You got silly questions? Ask 'em.

1
Jump in the discussion.

No email address required.

I'm curious how easy this riddle I recently found myself spending days to solve would be for professional software developers.

A fictionalized description of the situation: I'm in charge of a cadre of robots, whose working shift is from 6 am to 5.50 am next day. Every time they assemble a batch of Dyson swarm units, a database entry with the size of the newly born batch is created, amounting to hundreds of rows per robot per shift. To report on the process, by midday I need to submit a table on the previous shift numbers, but unfortunately my interface only supports exporting data from 00:00 to 23:59 of a given day. Nobody pays much attention to the shift tail end's results, because even robots slack after midnight, but the results for the previous day, which actually matter, are seriously truncated after downloading, let's say 20% of the expected amount of data. After random messing with filters in the interface, turning something off, maybe turning it on again, I am able to download something looking like the full data set.

I reverse engineer the REST API of the web interface, and try to replicate that random tinkering in a script. For example, exclude those robots assigned to assemble catgirl bots instead of Dyson bots, or do two downloads, of the robots painted red seperately of the robots painted blue, or some other even more convoluted approaches. Each approach works exactly once, as if there is somebody on the other side of the API, blocking every approach he encounters.

What was (apparently) happening and how did I (hopefully) prevail?

Those idiots cache the result of any particular query, even if the day for which the query was made was not finished yet. And because I applied each countermeasure both to the important data of the previous day, and to the rump of the shift that falls on the current day, the next day all those "countermeasured" queries were already cached too. I had to resort to ludicrous random.shuffle() in the function which assembles a query.

Two hard problems in computer science...