How Skyrim's NPC skill leveling works

I was writing up my main post reverse-engineering Skyrim pickpocketing and found myself going a little too deep into how Non-Player Characters gain skills. Once again the wiki had the wrong formula, which was making it hard to answer my question: who has the lowest and highest pickpocketing skill?

Read More

Picking apart Skyrim's pickpocketing

I was recently the willful accomplice victim of a successful plot to pull me back into Skyrim. I put hundreds of hours into the game back in high school but had mostly escaped — until my friend texted me when I was sick. While playing through it seemed like the pickpocketing chance was bugged. Follow me down the spiraling rabbit hole to reverse engineer what backs it, what causes the bug, and just how much gold I can get away with stealing.

Read More

Getting back on the bus

Back in college I wrote The Mathematics Behind "Ride the Bus", detailing the mathematics behind expected drinking while playing a game of luck skill where someone deals a card off the top of a shuffled deck one at a time, and you have to answer four questions about the next card: get one wrong, and you go back to the beginning. I recently looked it up again and wanted to know the median — when adding it I noticed and fixed some mistakes I made in my original simulation, and while I was at it, found a closed form for the odds!

Read More

Tic-Tac-Taid

While I'm not lactose intolerant I have a lot of friends who are, and so as a generous host I like to keep Lactaid on hand. I noticed that the letters for the Tic Tac logo could be moved around to make Lactaid, so I figured rather than keep them in the normal packaging I could make a custom box!

Read More

What are the grey bars in Screen Time?

I try not to be on my iPhone (hence my guides for automatically making it grayscale and not knowing your Screen Time code). The main tool for keeping tabs on this is Apple's Screen Time feature which, while limited in granularity, is better than nothing—until it's wrong. Recently Screen Time started showing large, undetailed grey bars, none of which matched up to the Most Used categories. Where does that time come from?

Read More

Extracting sound effects from a Switch game

As part of my previous post reverse engineering the Denon XML API I talked about my love for the Golf sound effects in Nintendo Switch Sports, complete with a way to build an ambient soundscape. But where did I get those sound files? There are in-game ambience recordings on YouTube but the sounds are all muddled together, and separating them out is a bit of a nightmare. So where and how do I get them? Let's go exploring!

Read More

Switch Sports Golf and automating my Denon AVR

My home audio system goes through a Denon AVR-X1700H as the primary receiver. My house has three pairs of ceiling speakers: one in the living room, one in the dining room, and one in the kitchen. When listening to music I want them all streaming from the same Spotify source, but if I'm playing video games I occasionally want Spotify from just the kitchen/dining room. Let's reverse engineer how the app controls the receicver so I can swap from my watch.

Read More

Making rigged word searches

While Elon's purchase of Twitter knocked me off the platform for a bit, I returned for bad political takes, mediocre housing takes, good energy takes, and a surfeit of memes. A tweet recently caught my eye showing off a rigged word search. I wanted to make my own, so I built a generator.

Read More

Why my macOS Messages badge lied to me (and the one-line fix)

I will be the first to admit that I'm sometimes bad at responding to texts — but I'm not 112-unread-messages bad, as the notification badge on my Mac makes me out to be. It sits there mocking me, over a hundred messages that despite my best efforts I can never clear. No matter how many times I right-click to try and find them they remain tucked away somewhere, inactionable and yet unread, invisible yet demanding to be seen. "Look at me!" they shout. "You're missing out on the opportunity of a lifetime!"

I've ignored this in the past and tabled it for later: it must stand the test of time. But that time is now. Here's how I used lldb to reverse engineer Messages, found a bug in Apple's code, and fixed my badge.

Read More

Turning a Chinese IoT camera into an owl livestream

My brother Spencer works as an artist in Asheville. He's also into nature conservation, leading a nature journaling class and regularly weaving ecology and local wildlife into his work. When UNC Asheville announced plans to turn a local urban forest into a soccer stadium, he pushed back, in part by raising awareness through birding sessions to show off a Great Horned Owl family and their three owlets living in the forest. Spencer set up a 24/7 camera filming their nest but wanted to livestream that footage and couldn't figure out how — enter me, stage right! While it wasn't easy here's how I eventually made it work (though unfortunately by the time you're reading this they've flown away and the livestream has ended).

Read More