RSSAmplifier

Blog

Vox Silva

Websites, projects, snippets, and errata from Hanover to San Francisco

blog.alexbeals.comRSS feed ↗149 posts

Latest posts

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…

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…

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…

Find out who owns a building in SF

For my 400 Divisadero series and to help track down some stolen property from my girlfriend I needed to figure out who owned a given building in SF. Here's the process I followed, using 740 Valencia Street as a random example (because it's the address for Dandelion Chocolate and I like their stuff).

Deeplinking to Venmo users

I wrote up a dump of all Venmo deeplinks back in 2017. I was recently looking through backlinks to the blog and saw this StackOverflow post trying to open a user's account based on their username. Figured I'd do a quick update and point to an answer. While I tried dumping from the Venmo app the app insta-crashes on 15.8.4, so bfdecryptor doesn't work. Luckily I grabbed a cracked IPA from online,…

How to dump iOS app's source code

Reverse engineering apps is made a lot easier with the source code, but apps distributed through the App store are encrypted with FairPlay encryption , making decompilation much harder. Our salvation lies in jailbreaking, because in order to run the app the unencrypted version has to be loaded into memory. We can add in code to take that unencrypted version in memory and download it. Adding…

The footgun of right-to-left decorative characters

Fleurons, and other printer's ornaments are decorative elements used in typography. Many of these have made it into fonts in the digital age, with Unicode supporting classic fleurons like ❦ and ❧, but also additional symbols-turned-visual indicators ranging from the aptly named ❀ (White Florette) to the lesser known ᪥ (Tai Tham Sign Dokmai). I was recently exploring using 𐫱 as a delineator…

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.

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,…

Tips and tricks for macOS lldb

If there's one thing that I've internalized from years of work, it's that if you do something twice, write it down. I reference stuff I wrote 6 years ago daily. I'm now hitting a lot of the same questions and patterns for answering in my lldb investigations, so here's my living public wiki. Expect it to be heavy on code pointers and light on explanation.

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…

Cleaning up Anchor spam comments

I have Captcha set up for comments on this blog but stuff can still get through. While Anchor became defunct in 2020 maybe there's someone else out there still using it who would benefit from this (and I know my future self certainly will).

DataSF and scraping planning applications for my inner YIMBY

I am doing a series of blog posts diving into 400 Divisadero Street, a defunct car wash and gas station in San Francisco that they're trying to turn into apartments — and have been for over a decade without breaking ground. The reasons for the lack of (visual) progress is multifaceted, but to properly dive into it and explain the timeline I wanted to dig into the raw planning documents. They're…

Clearing space on my Linux server

All of my websites and projects run off a single 18GB EC2 instance. This is cheap, but means that I do something stupid in one directory I can cause "No space left on device" errors when rendering the blog. This happens enough that I wanted to document what commands I run to recover space.

Resuming paused applications on macOS

I have a penchant for having way too many tabs of Chrome open, and even though I keep buying more RAM I occasionally am still forced to interact with this screen, informing me that I have run out of memory. But if you hit Cmd+Shift+Esc then it disappears, replaced by the normal "Force Quit Applications". What then? How do I resume my paused applications?

Claude Code's thinking animation

I am unfortunately spending more and more of my time interacting with LLMs through terminal interfaces. While the sentient silicon churns through thousands of tokens I find myself scrolling short-form videos contemplating next steps, freeing my time up for deeper mental pursuits, and much more importantly (and realistically) getting entranced by the blinking cursors. But how do they work?

Modifying requests with mitmproxy

I was recently reverse-engineering parts of the OpenTable API, and wasn't sure how to refresh the Bearer token. We can get the initial one by going through a number of requests: https://mobile-api.opentable.com/oauth/consumer/token to get a logged out token, then through https://mobile-api.opentable.com/api/v1/2fa/start and https://mobile-api.opentable.com/api/v1/2fa/confirm to authenticate…

Inspecting hover elements in Chrome

How to inspect hover elements in Chrome by pressing F8 twice while DevTools is open to the Sources tab

Remove unused characters from fonts to save on size

Shrink webfont file sizes with pyftsubset to speed up loading and save bandwidth.

Creating custom yellow handshake emojis with zero-width joiners

Create custom emoji handshakes using yellow hands like 🫱‍🫲🏿 and 🫱🏿‍🫲.

Showing keyboard strokes on macOS

The mouse click recording feature in macOS video recording is really helpful for showing what you're doing (and something that I've used for videos for this blog previously, such in my writeup on how to set your screen time passcode without knowing it ). But sometimes you also want to show keyboard presses, and there's no option in the stock screen recording to do this.

Enabling Touch ID for sudo

If you have a long password, running a command with sudo can be a bit of a pain. Luckily if you have a recent Macbook with Touch ID you can use it for sudo as well. Just run the following command:

Adding snippets to the blog

As you may have noticed by my propensity for footnotes sidenotes I love asides. Likewise there are a lot of small things I come across that either aren't meaty enough for a full post, or trend so narrowly technical that I feel hesitant about broadcasting (a reticence my college self didn't share based on my post setting up my router ). I still want them to be searchable as a reference for myself…

Removing your location from Mailchimp emails

You can delete your address from your footer as long as you keep the REWARDS piece.

Downloading large photos from Flickr

Flickr has restricted original size downloads of images uploaded by free accounts, but you can get around this with Dev Tools.

Long live Dog-a-Day! (kinda)

Back in college I ran a service called Dog-a-Day, where I emailed subscribers a picture of a dog every day, along with a fun caption. This was initially just a Christmas present for my dad but it spiraled into a full service with some ~200 subscribers. I stopped it in 2020 after five years, but am resurrecting it for the month of December as an Advent calendar, complete with a hidden Santa Mouse…

Combinations and permutations and locks, oh my!

I bought a cheap push button combination lock and fell down a rabbit hole when I realized it didn't matter what order you entered the code in. Check out my teardown of the mechanism and the 3D models I designed to figure out how they worked (and why the manual’s advice to set a 5–7 digit code is so interesting).

Leveraging private Uber APIs in a Chrome extension

I used to use Mint as my budgeting software until it shut down in March 2024 . As a replacement I swapped over to Monarch , which I've loved even more and would recommend if you're looking to do any sort of budget tracking. I wanted a tool to automatically annotate and verify my Uber transactions, so I combined a bunch of private APIs to build Viceroy , a Chrome extension to do just that.

The lost art of contrast

I was watching The Killing the other day, Kubrick's third feature film from 1956. Coming in at just 85 minutes, it’s a lean well-told story of a racetrack heist. But for all of the nonlinear storytelling, and noir aesthetics, and tangled snares of character desires, above all I was just taken with how good it looked.

Downloading arbitrary Apple Podcast episode transcripts

Because the default Apple Podcasts on macOS only allows you to copy 200 words of transcript at a time, I built a quick website back in January that allows you to view and copy the full thing. It mostly works great, but some users (including those on older versions of macOS) have flagged that their transcript files aren't locally saved , and thus don't show up in the tool. Here's how I came up with…

Patching MacForge to remove start process_extensions logs

I was hitting a problem where some VSCode plugins I use were erroring out when running commands. After slowly paring away at their source code, I realized that they were failing for the same reason: they were calling scripts that were supposed to return JSON, but instead were having strings injected into them, causing the JSON parsing to fail. Come along with me as I track down what's injecting…

Debugging the changing QR codes for Fitness SF

The QR codes for Fitness SF started changing. I had previously created an Apple Wallet pass that would automatically open the code up when you arrived. This stopped scanning at the end of May, and although updating my member ID temporarily fixed it, it broke again two weeks later. This lined up with the update of the app, where v1.3.22 let us know that "this update includes a fix to resolve the…

Make your iPhone grayscale

Like I said in my last post , I'm a big fan of my phone being in grayscale, which helps reduce screentime . This is a quick guide on how to set that up using Shortcuts in a way that automatically disables it for certain apps like Photos and Camera.

Reverse engineering iOS Shortcuts deeplinks

I am a big fan of my phone being in grayscale, which reduces screentime and cuts into into how attention-grabbing the bright red app badges are. The problem is that I don't want all apps to be in grayscale: some because they're effectively broken (Photos, Camera) and others because I'm okay spending time on them (Books, Chess, Crosswords). I used to selectively do this with a Cydia tweak I wrote…

Getting access to the Letterboxd API with mitmproxy

Letterboxd has an API but it's available by request only. This is why in the past my projects have either relied on their export functionality (like Letterboxd Gaps) or simple webscraping. This works well when you only need your own activity data, but struggles when it comes to querying multiple users and intersections of their data. But the iOS app does it just fine—enter mitmproxy. We can use it…

Unsubscribing from Reddit Community Notifications

Reddit has been recently ramping up their "Popular post in" and other community notifications. I find these all incredibly low value, and want to turn them off. There's no UI for turning everywhere—just individually per subreddit. But we can do it for all of them with a quick script!

America’s reading habits

There was a recent tweet I saw saying "I’m willing to bet my entire net worth on neither the median nor the average American reading 11 books a year." There's a lot of people pushing back on it, but all citing different reasons why the data could be wrong. Rather than do that, we can just dig into the underlying data.

Letterboxd Gaps

Kirsten Dunst had a great moment in a 2016 Hollywood Reporter roundtable in response to actresses lamenting that they don't work with female directors, saying that "[she's] worked with so many female directors" and that "it's up to us as actresses to give the opportunity to first time directors". While actors have a lot more sway than audiences in getting projects greenlit, I was curious what…

Tracking down the movie poster for Possession

I recently watched the 1981 movie Possession by Andrzej Żuławski. It's a weird movie, ostensibly horror, but primarily used as a lens for the dissolution of the director's marriage (and political commentary). However the default poster on Letterboxd is explicitly horror focused (claws gripping into a woman’s back, blood trickling down, and bright blue spikes like something out of The Thing poster…

Apple Podcasts transcript viewer

Apple recently added transcripts to their Podcasts app, quickly becoming one of my favorite new features. I wanted to copy a paragraph out of the transcript though, and ran into the 200 word cap on their selection screen. Luckily the MacOS Podcasts app locally caches the transcripts, and so I built a simple web app that allows you to browse the transcripts and easily select parts of them.

Fixing low quality Wix gallery images

My brother has a website ( https://spencerbeals.com , go buy some art!) which uses Wix. There's a product page view where you can see multiple images of a given piece and click to zoom in, but the gallery images are somehow lower resolution than the non-zoomed version, making for a pretty bad user experience. I couldn't find anyway to change this in the tool (or even any forums with people asking…

Harry Potter and the Anatomy of a Speedrun

Speedrunning is when you try to complete a video game as fast as possible. You can speedrun individual levels, you can speedrun specific categories like 100% where you try and collect all items and complete all quests, etc. but the main category is Any% — get to the end as fast as possible, anything goes. For many games an Any% speedrun looks similar to someone playing the game normally, albeit…

Delayed Gmail filtering

I subscribe to a lot of email newsletters ( Vox , We're Here , Tom Scott , Money Stuff and Heatmap News among many others) all of which I enjoy...but maybe don't always read. I don't want to unsubscribe because I do read them, but I don't need Dropout.tv 's episode announcement from three weeks ago floating around in my inbox. Ideally if I don't get to them they could quietly be purged in the…

Jack Sparrow's Compass

The iOS compass app is great for pointing north. But what about if you want to point somewhere else? This was a quick two-hour project to whip up a web app for pointing to a static location, much like Jack Sparrow's compass from the Pirates of the Caribbean .

Don't know your screen time code

The average American spends 4h30m on their phone each day. I've done some things to curb this in the past (see my post on Grayscale Lock which you can now do on stock iOS with Shortcuts! ) but the number one thing I've found to work is using the built-in Screen Time tools. You may have tried this and found yourself just typing in the code to bypass the limit, but here's the twist — I don't know my…

Custom Apple Wallet Passes for Fitness SF

Fitness SF has a number of great gyms around the Bay Area, but their app can be slow to load, and having to open it every time to scan in was annoying. Apple Wallet passes solve this problem by allowing you to set locations where it will auto-prompt showing a QR code if you're in the radius. The app doesn't let you create an Apple Wallet pass (or even screenshot the QR code), so let's make our…

Roborock Routines and iOS Shortcuts

I have the Roborock S7 MaxV, and it's fantastic. It automates vacuuming and mopping, keeping my allergies under control at the touch of a button. I have a number of routines that I use, and wanted to schedule some of them to run. This is built into the app, but only allows you to do this for set times and days. I instead wanted to automatically suggest a full clean when I left the house (max…

Books Annotations App

The Books app on iPhone (previously named iBooks) allows you to highlight text and leave notes. Unfortunately there's no good way to export these, as the information isn't stored in the ePubs themselves. The information is saved in the Media folder though, which is accessible from iPhones over USB. I built an app to read this into a searchable UI without having to install a bunch of software or…

Rom-com Bingo

I noticed a while back that a lot of new romantic comedies (especially those pumped out by streaming services like Netflix and Amazon Prime) have optimized their formulas to the point that you can predict basically the whole plot from just the title and movie poster. To bring a little more spice into them, I started playing bingo with common tropes. To make it easier, I built a website that allows…

Crossword Grid Builder

I have been getting into crossword constructing, but found the initial process of staring at a blank 15x15 grid to be one of my least favorite parts. Just like themes and seed entries can be good ways to get a foothold, I ended up building this tool to allow you to explore interesting constructions through an interactive heatmap of previous NYTimes puzzles. As you place black squares into the grid…