alltom.com,
Archive,
Currently Reading,
Have Read,
Micro.blog
Subscribe with RSS or @tom@micro.alltom.com
The first time I run a new build of Priorities in Motion after big iOS or macOS or Xcode updates, I hold my breath. Will a glitch in my code signing config will delete all my iCloud data? It’s nerve-wracking!
(Today’s build seems to be OK.)
This has to be the worst gotcha I’ve ever experienced in Wolfram Language!
–∞ < 1 < ∞
is True. Great.Min[{–∞, 1, ∞}]
is –∞. Great.MinimalBy[{–∞, 1, ∞}, Identity]
is… 1.I don’t know why. But at least TakeSmallestBy[{-∞, 1, ∞}, Identity]
is –∞ as expected, so I’ll use that.
I have a few Wolfram Language articles in the works, though it may be a while before I find the time to finish them!
One is a simple explainer of the Graphics[] API. I recently had a few aha moments when I hunkered down to try to replicate some charting ideas from Tufte’s books. Should be fun and short, with plenty of visuals.
The other is an exploration of real-time audio API. Any software with a real-time audio API deserves a ChucK and I’ve grafted a tiny strong timing module onto this one. The article is gorgeous thanks to all the built-in audio visualizations—the main thing holding me back is I have no convenient way to embed audio, let alone interactive audio. 😂 So I’m on the fence about whether it’s worth publishing at all as an article, or if it should be just be a repo.
Guess who finally has GPT-4 API access. ➡️☺️⬅️
I’m working on what feels like my lispiest Mathematica project. One of the pieces I wanted was to be able to search a list of associations by pattern, like:
findAll[db, {"id" -> 42}]
should return the full record, like {<|"id" → 42, "value" -> "A"|>}
findAll[db, {"id" -> id_, "value" -> "A"} :> id]
should return all the IDs of records whose value is “A”, like {42, 99, 67}
.It turns out to be pretty simple to make a little API like that because pattern-matching is common in Mathematica so all the necessary pieces are right there, waiting to be assembled:
(* Plain search *)
findAll[o_, {pattern__}] :=
Cases[o, <|OrderlessPatternSequence[PatternSequence[pattern], ___]|>];
(* Search and map *)
findAll[o_, {pattern__} :> replacement_] :=
Cases[o, <|
OrderlessPatternSequence[PatternSequence[pattern], ___]|> :>
replacement];
“Daddy, I can see the wind!” 😳📚
Quantum Computing for Babies by Chris Ferrie 📚
Writing in short sentences is insufficient to make quantum computing understandable to babies! 👎🏼 I did not enjoy reading it and the toddlers did not enjoy hearing it.
Bathe the Cat by Alice B. Mcginty 📚
My toddler twins love Bathe the Cat. The cat doesn’t want to be bathed and keeps scrambling the to-do list. “Feed the floor”? “Mop the dishes”? They’re too young to find that particularly funny, but they empathize with the cat, and the illustrations are top notch.
What’s the story behind this random 2023 release? 🎵
📚 The 2023 update of Thinking in SwiftUI answered so many of my questions about how View definitions become interactive UIs. I’ve struggled so much with navigation stacks in my app that I was hoping they would get as thorough a treatment as, say, animation, but unfortunately, they’re not covered.
I read the blog post but I didn’t realize that in a Mathematica chat notebook, every cell is sent as context, not just the chat cells.
And that means you can ask questions about past cell evaluations, like… “Why?” 🤯
GPT-4 is “generally available” but it’s actually only available to accounts that have been successfully invoiced.
Trouble is, GPT-3.5 isn’t good enough to bother with when I have access to GPT-4 via ChatGPT, so I’ve never used the API enough to be invoiced.
It’s time for me to burn some GPU cycles!
I make a new playlist every month and this month I thought I’d like to look back on what’s on it and how that happened!
This playlist is what I looped all month—sometimes shuffled, sometimes not. I don’t remove any but the more egregious mistakes, so it gives me a chance for music to grow on me that I wouldn’t have normally listened to more than once.
Here we go.
This was first onto the playlist because of when it was released. I know of YUI because I used to study Japanese and I used to watch Bleach, and YUI’s music was approachable to a language beginner, but still heartfelt enough. I haven’t been able to enjoy much of anything since FROM ME TO YOU, though, and I’m not sure why.
Looping Kp With Me was not going to work for me, and around this time I was stuck in a long daily commute. I added a few tracks that I can’t help but sing along to.
Round Here hit particularly hard this month. Looping the current month’s playlist leads me to hear the early songs more often and listen more closely and I don’t think I’d done much more than enjoy the chorus to this one before. It stings.
Pistola’s drum solos reminded me of another drum solo that I never found. But in searching the web for “best drum solos” (as aficionados do) I found these songs, neither of which I was all too familiar with. Tom Sawyer’s vocals and lyrics are interesting. I didn’t fall in love with either, though.
More music to get me through the commute. I know Romance ga Ariamaru pretty well because I studied it for karaoke once. 😂
More new releases. I didn’t love Subliminal, but Ting Mong is more of what I needed from Dengue Fever and I was so happy for it to come out.
I needed more Dengue fever, what can I say?
I ran across a reddit thread full of love for Thom Yorke, especially AMSP, and added some of my favorites. Still good. Not as affecting as when they were new, unfortunately, but in my quiet moments, I still hear, “Dreamers… They never learn…”
A recommendation from Micro.blog that didn’t really land, but it was a late addition and I’m considering pulling it forward into October’s list for a second chance.
What a delight. A new album from Dengue Fever. 🎵
What I do is, I cancel every automatic update request, accidentally spot a news article about a “clickless” 0-day exploit being patched in macOS, then I manually trigger an update.
My Steam Deck 🎮 needed a charge and I couldn’t find its usual cable, so I plugged it into the USB-C hub that I use for my laptop… and the peripherals just worked. 😯
My game appeared on my monitor, the audio played through the speakers, and my keyboard even worked.
Why had I never tried this!
When I write code that I know has noticeable limitations, I used to denote them with TODOs, but lately I’ve been writing them as disclaimers instead. Like instead of:
// TODO: Make this work for multiple cameras.
I’ll write:
// This only works for one camera.
I think it’s a good thing to write only the code that I need right now, but noting the limitations with TODOs made it feel like a liability. It also probably gave the false impression to my teammates that I intended to add unneeded features that I really didn’t.
Imbroglio’s current Izu mode was such a satisfying nut to crack. 😌
Currently reading: The Pathless Path by Paul Millerd 📚
Magna-tiles on a Saturday morning
Currently reading: A Memory Called Empire by Arkady Martine 📚
Who remembers Branch? 😃 Maybe they still have the code around and can fill this Twitter-shaped void.
Yesterday, I wrestled with insecurity about a design I’d proposed at work. I played Anima on headphones and paced by my desk until I didn’t think the people working nearby could take any more, then I moved to an empty conference room. I think I believe it’s the best option again?
Me, staring at an LLM answer: “Hmm. Was the training data that contributed to this answer based on sponsored content?”
¯\_(ツ)_/¯
Introducing Chat Notebooks: Integrating LLMs into the Notebook Paradigm
What a time to be alive.
I think I’ve used more OpenAI credits in the last hour than I have over the last month. 😂