Tom Carden
randometc.org
Tom Carden
@randometc.org
Inbetweener
It only took 21 years for passwords to be split out of Safari as its own app, or 25 years if you see it as an offshoot of Keychain.
December 9, 2025 at 4:13 AM
One optimization of note, switching to a basic PriorityQueue (sort as you build) instead of building then sorting the list by distance helped drop runtime from ~300 to ~90ms.
December 9, 2025 at 12:23 AM
One thing I noticed this time: the answers worked more as "checksums" that you'd done the right calculation, rather than meaningful parts of the puzzle. Would have been nice for the answer to tie back to the question, e.g. the length of wire needed for the elves to complete the circuits?
December 8, 2025 at 8:07 PM
Part 2 is my slowest performing JS code so far in this advent, running in about 300ms on my laptop. Might try to dig in and see if there are optimizations to be made... later!
December 8, 2025 at 7:29 PM
An adventure in reading comprehension — I had an off-by-one error in my counts because I was counting *success* and not *attempts*.
December 8, 2025 at 7:29 PM
While I respect everyone cranking on hyper-optimized solutions in their favorite languages, once again my naive implementation in Javascript (favoring clear syntax and convenience over any real optimizations) runs part 2 in ~4ms on my M1 Pro. Computers are fast, again!
December 7, 2025 at 8:40 PM
This stumped me for a while as well - this is the correct hint!
December 7, 2025 at 8:37 PM
dang cephalopods and their significant white space
homer simpson from the simpsons is holding a cup in front of a picture
Alt: Old man yells at cloud meme (Simpsons Grandpa)
media.tenor.com
December 7, 2025 at 3:54 AM
it’s giving “Have you tried using an XML parser instead?” stackoverflow.com/posts/173245...
Revisions to RegEx match open tags except XHTML self-contained tags
Stack Overflow | The World’s Largest Online Community for Developers
stackoverflow.com
December 7, 2025 at 3:19 AM
everyone’s bsky age is 12?
December 5, 2025 at 8:56 PM
The whole solution for part 2 runs in ~3ms on my M1 Pro, including the time to merge ranges. With only 190 ranges, 94 after merging, why worry? ~12k comparisons. Computers are fast! #deliberatelyquadratic
December 5, 2025 at 3:56 PM
Stayed as naive as possible and did an O(N^2) greedy merge of the overlapping sets. No trees or binary searches for me.
December 5, 2025 at 3:56 PM
Refactored to storing ranges and computing intersections on the fly.
December 5, 2025 at 3:56 PM
Initially implemented ranges naively by just adding all the values to a set. Overflowed the built-in JS Set!
December 5, 2025 at 3:56 PM
Brief concern that the IDs given would overflow javascript integers. Pressed on with parseInt anyway and nothing bad happened.
December 5, 2025 at 3:56 PM
Oh, that must be what I was thinking of.

Are we starting a band then?
December 2, 2025 at 9:30 PM
I think the big one does… but then, when you don’t have them plugged in, well… it bigger. Sounds bigger.
December 2, 2025 at 8:36 PM