It’s the annual year-end link clearance. You’ve waited a whole year for this. It probably wasn’t worth it.
- No time to die: An in-depth analysis of James Bond’s exposure to infectious agents. An academic study of the sources of potential infection in the missions of secret agent James Bond, and his general disregard for protective measures against them. “Scrutinizing these missions involved ~3113 min of evening hours per author that could easily have been spent on more pressing societal issues.” And in the credit statement: “All listed authors… agree that there is no intellectual content whatsoever.”
- Were James Bond’s drinks shaken because of alcohol induced tremor? An academic study of the alcohol consumption habits of James Bond and its health consequences.
- As previously reported, final exams cause grandmother deaths to spike. In A Thorny Problem: Student Deceptions, Professor Karen Eifler shares her solution for this problem: She sends a condolence card to the family. If the student experienced a genuine loss, the letter is received warmly. On the other hand, a student who is being less than completely honest has some awkward explaining to do when their family asks them what this card is about. Within a year, the false claims of family deaths evaporated.
- Disney’s FastPass: A Complicated History: A thorough documentary on Disney’s FastPass system, and how it became the monster that Disney couldn’t control.
- Non-Fungible Olive Gardens. You too can own an NFT of an Olive Garden franchise. Well, you’ll have to look on the secondary market because the initial offering has already sold out. But breadsticks are still unlimited and free, so you can grab one of those.
- Violinist Ray Chen (no relation) performed the Tchaikovsky Violin Concerto with the Seattle Symphony this year. At 0:20, he breaks a string, and the protocol for this is to swap instruments with the concertmaster. At 0:50, he delivers replacement strings to the musician who is performing the repairs. (I happen to have witnessed this live via the Symphony’s streaming subscription; one of my former colleagues witnessed it in person.) This is not the first time Chen suffered a string break on stage. It also happened in 2017 during a performance of Prokofiev’s Second Violin Concerto. That time, he was able to swap during a brief rest and not miss a beat. (In both cases, he finished the phrase with three strings, shifting up on the A-string to compensate for the broken E.)
- Violin prodigy Midori famously broke two strings in rapid succession at age 14 in a performance of Berstein’s Serenade.
- Falsehoods people believe about drivers license IDs: They consist exclusively of alphanumeric characters. I run into this problem regularly because the format of drivers license IDs in the state of Washington is the first five letters of the last name, the first initial, middle initial, birthdate, and a checksum. The catch is that if the last name is fewer than five characters, or if you have no first or middle name, then the fields are padded with asterisks. Those asterisks in drivers license IDs are rejected by many online systems. This changed in 2018 when Washington changed its drivers license ID format. But licenses are good for six years, so there will still be people saddled with asterisks in their drivers licence IDs until 2024.
- Freespin is a Commodore 1541 demo by Matthias Kramm. Unimpressed by demoscene demos that rely on a computer system, Kramm creates a demo that runs on the Commodore 64 floppy drive (the 1541), splicing the drive’s serial cable onto the video cable and using the drive itself to produce audio. Watch it.
- Foone takes apart the 2010 Fisher Price re-released music box record player. Prepare to be shocked and disappointed in Fisher Price.
- Fisher Price has released an updated version of their classic Chatter Telephone™: Chatter Telephone™ with Bluetooth®. (Warning: Annoying pop-up.) The advertising copy is delightful, as is their sizzle reel. c|net made a fun product review and unboxing. Prepare to be charmed and amused by Fisher Price. (Just remember to treat it as an unsecured Bluetooth endpoint.)
- SizeBench is a tool to help understand and reduce the size of your binaries. It started out as a Microsoft internal tool, but it’s public now, so have at it! SizeBench was one of the tools used to make C++ exception handling smaller on x64.
- Why is WBEMTest so hideously ugly and unusable? Because it was an internal test tool that was never intended to ship in the first place!
- This Outfit of the Day photo features one of the jackets I donated to the Microsoft Archives. It made a brief appearance at around time code 15:40 in the old tour of the Microsoft Archives.
- Debugging memory corruption: Who is writing a ‘2’ into my stack? Spoiler: When I got to the punch line, I thought, “What a blatant error! Who could possibly have thought this was a good idea?” When you transfer control across stack frames, all the frames in between need to be in on the joke. The lesson also needs to be strengthened: Do not throw exceptions out of asynchronous procedures if you’re inside a system call!
Ah, can’t wait for this year’s “Seattle Symphony subscription season at a glance” post 🙂
As there is no admin contact link for devblogs, and I noticed this here first, this seems the least worse place to report that there appears to be a server side caching problem with the RSS feed.
Go to https://devblogs.microsoft.com/oldnewthing/ in an incognito/private browsing session. Scroll down and click on the RSS link. And the returned RSS was built 22 Dec 2021, with the latest item being "How do I programmatically reposition monitors in a multiple-monitor...
Thank you! I had noticed that my RSS reader was getting Raymond’s posts in batches but hadn’t quite figured out why.
I’m curious as to why Unity would need a “socket polling thread”; can’t other threads do the polling themselves? Maybe they have to perform garbage collection while they wait for the socket to become available? If that’s the case, they could use overlapped I/O with a signaling event.
I believe they were using the word "polling" in the Unix/Linux sense of the term (i.e. referring to epoll(2), which is mostly just a better, but less portable, variant of select(2)). This family of syscalls is roughly synonymous with WaitForMultipleObjects, which ironically is the exact opposite of what most people think of when you say "polling." I base this belief on the fact that the blog post repeatedly refers to the winsock select() function, which...
I’m assuming that the threads which post sockets to the polling thread do, possibly after doing other things, actively care about when the socket becomes ready (otherwise the polling thread has no way to post the
select
ing results back). If that’s the case, then wherever in the code they receive aselect
ing result, they should be able to instead check the status of an event.It may be the case that a single thread cares about the status of multiple sockets, or that a single socket is of interest to more than one thread. Or it may be the case that they are using a thread pool, and don't want worker threads hanging around waiting on sockets when they could be processing other work objects.
(EDIT: Rereading it, they *are* using a thread pool. So that's probably the reason.)
More generally: There's...
On the contrary, it was definitely worth it, as usual. Thank you!