Linear Sequential Unmasking, Advent of Code, Divisibility: ttftw 2023w11
By Robert Russell
- 5 minutes read - 912 wordsThree things from this week.
This week had way too many things. More than three, even. There are some neat tabs lingering open in my web browser that have aged a good couple months though so let’s take a break and see a few of those. There’s no real through-line at all this week - just ideas that are lingering in the back of my mind.
Linear Sequential Unmasking
Linear Sequential Unmasking is a technique I heard about on the AAAS Science podcast a few months ago. Dr Adele Quigley-McBride explained it better in the interview but I’m going to attempt to recap my naïve understanding from memory.
Suppose a detective named D has a list of suspects for a crime. The suspects are A, B, and C. D has photos of the suspects and thinks that B looks sketchy. Now D reads about each of the suspects. When reading about B, D finds that B is from a poor neighbourhood and didn’t get into college. B has been fired from a string of jobs over the past few years. Yup, that sure sounds like the sketchy character that B looked like right up front.
Now suspect C on the other hand looks like an earnest, hard working type. Even though C comes from a poor family in a rough neighbourhood, C managed to finish high school. And the economy has been tough so jobs don’t last but every time C has been let go over the past few years they’ve bounced back and found another job. Yup, that sure sounds like the kind of hard working, committed person that the detective recognized as soon as they saw the photo of C.
My transparent example clearly describes that suspects C and B have similar circumstances but the detective is interpreting the details differently based on the first impression given by looking at a photograph. First impressions are strong and trigger the inherent biases that we all have. This is well-studied and widely recognized. What Linear Sequential Unmasking attempts to do, from the few minutes I listened to Dr. Quigley-McBride talk about it, is to work against these biases. Someone like D would be given specific facts about A, B, and C then asked to form an opinion. Then additional facts are given and D’s opinion is checked again. The steps are repeated with more facts and the current opinion until all the information is revealed. It’s completely acceptable for the opinion to change but now there’s an opportunity to document why the opinion changed. The opinion formed by D should be well-supported as a result of following this process.
It fits in with masking musical performers during interviews and similar work. The research is important and I’m glad to know people are working on implementing bias reduction techniques in practical ways.
Last year’s Advent of Code
Advent of Code is a fun way to just spend a lot of time solving problems with code. It felt great to just code again. That’s what I used to do when I was young enough to assume nobody else had solved the problems I’m trying to solve. Now that I’m old I assume the opposite - surely I can’t be the first person who needs a configuration file for my program. Let me go review all the configuration libraries, learn how to use one, and integrate it into my software. Not with Advent of Code: no lit reviews, no surveys, no research. Just write whatever you feel like writing. The data for your program is going to be a bunch of lines of text in a vague bespoke format. Read them in however you like.
Jukka Jylänki took the AoC nostalgia to the extreme, solving the puzzles on a 386SX PC clone using Borland C++. The write-up is a lot of fun to read but I didn’t get into the solutions - I still have some vague notion that maybe I’ll figure out the part I got stuck on.
Remainders
Speaking of AoC, another post from a month ago on Mastodon reminded me of that same unsolved problem where I dropped off at day 11 in 2022. Even though the puzzles are a lot of fun, once I couldn’t figure out the trick for the second part of day 11 I stopped there. Since I didn’t want any hints that was just as far as I got. My last rambling entry has some mathematical errors but I was completely convinced that what I needed was a way to track divisibility of a number without tracking the number itself. This post from @juliancalaby@social.treehouse.systems explains that a state machine can be built as a quick way to test divisibility by a constant in some given number base. Reading this trick, I was reminded of the AoC puzzle I spent a week on and I left this tab open for a month, mulling over how it could hold a clue I needed. Looking back at it now though I realize all the tests were about divisibility but my challenge was the numeric explosion. And my method failed when a constant was added to the tally. I have a strong feeling that the solution hinges on some kind of numeric simplification but I just haven’t got it yet.
While the state machine idea is neat, it isn’t so relevant to the problem I thought it was. At least I can lay that thought to rest & close the tab.