29 March 2026

Building a Vinyl Scrobbler (1 of ?)

I started using Last.fm in 2006 to log the songs I listened to, and was so in love with the data aggregation I'd write "what I listened to this year" posts to close out each year (like this one). For almost as long, I'd been wanting a way to auto-log the records I listened to - I dreamed of making the time to learn about and play with Shazam's API to get a version of vinyl scrobbling working. Fast forward twenty years, a lot of experimenting with Claude Code, and a successful personal project (also music related: a search bar for metal bands), and I finally got to work. I know vinyl scrobblers have been built a few times by now (like here, here, and here), but figuring out my options and building one very personal to me has been most of the fun.

After some time researching, I had three broad options:

  1. Log via audio recognition: So, turns out Shazam doesn't actually have an API, but there are similar APIs I could have either hooked up to an always-on mic, or trigger by pressing a button, holding my phone near the speaker, and waiting for match. I didn't like either option - creepy or too many steps, respectively - so this one was out pretty quickly.
  2. Log via sensors: Waving a record by a sensor could log an album as I put it on. This one would feel the most magical, but would involve putting an NFC chip in every single jacket of my (now medium-sized) collection, which would take hours of setup time.
  3. Log via barcode: The most physically clunky, but fit my most immediate need - start scrobbling quickly. As I tweak the setup, I could continue scrobbling and invest in the NFC solution in the longer term.

Aside - I have to give a shout to this very cool "year in music" writeup I found in my research. I found it via one of the open source projects - Vinyl Scanner - that one goes the NFC route, complete with a microcontroller built into a custom "now listening" shelf, for the ultimate magic scrobbling experience. The repo even includes instructions/schematic for building the shelf!

Ok, onto the proof of concept. My plan is to scan the barcode on a record when I take it out to spin, and a Raspberry Pi will look up a match from my Discogs collection, and log the album into an Airtable database.

I also wanted to build a search UI for manual lookup, in case I had a record with no barcode (many of my old 7-inches), or for some reason it didn't find a match. I also wanted to start using it while all my hardware was still arriving, so I started with the software-first.

I added another feature to the flow: My favorite Discogs app feature is the randomizer - shake your phone and it shows you a random item from your collection to put on (I use this all the time to be reminded of records I don't typically reach for). I decided to build this feature right into the lookup UI, so I could randomize and scrobble in just two clicks.

The magical part happened when I loaded the collection UI from my localhost - I wasn't convinced I needed to fetch album art for everything I owned as Claude Code suggested, but when I loaded the page, I gasped out loud when I saw all my records in a grid, staring back at me. Truly a magical moment.

And so far, it works! I've been scrobbling vinyl all weekend.

So excited to start doing my own Wrapped-style analysis on my vinyl habits - either manually like I used to with Last.fm, or by throwing the data into a tool like Hex to see what patterns it notices.

Part 2 to come when I get the hardware hooked up - it's finally arrived (I can't wait to share the Pi case I found), and I'll hopefully work on it in the next week or two. 

09 February 2026

Building a Metal Search Bar (2 of 2)

This is part 2 in a pair of posts about building a heavy metal search bar; part 1 is here.

Last week I wrote about trying to build a simple search bar to look up bands in Metal Archives's database, and ran straight into a combination of bot blockers and no API. I got a proof of concept working locally on my network, but wanted to get it over the final hurdle of it being usable from anywhere.

A couple of days later, I heard from Metal Archives's webmaster: I’d reached out after finding an unofficial (albeit broken) API. They were aware the API might not be working, and said I was welcome to scrape their site myself, provided I didn’t kill their servers. An engineer I know suggested I scrape their data, save it into a database on my machine, and query that scraped data directly. I shared this with Claude, who said it was the best architecture idea of them all (humans are still sometimes the best problem solvers).

So that’s what I did - I built a scraper to slowly download their band name, subgenre, and country fields overnight (first time I'd heard of caffeinating my computer), and when I woke up the next day, info on 195K+ bands was in an SQLite database on my computer.

Then I built an API to query that data directly, deployed via Fly.io, and here it is - https://metal-search.fly.dev/

It’s a small but very specific thing I wanted - one big metal search bar I can use to look up bands from anywhere. Next, I’ll add some more details like city, styling (it has to be either black or bright pink, right?), a custom domain, and maybe I’ll set the scraper up to re-download the data weekly so it’s always fresh-ish.


That's it! \m/ \m/

01 February 2026

Building a Metal Search Bar (1 of ?)

Metal Archives is like a wiki for heavy metal, and I use it for exactly one thing: looking up bands. I do this exclusively on my phone from either record shops or shows - the site isn't responsive, so I end up trying to tap on what feels like a 3 pixel high search box on the very top right of the screen.


A search bar for ants.

After struggling with this for years, I finally tried to fix it fore myself in the smallest way possible.

What I wanted

A page with only a giant search bar on it that I could use 1. on my phone; 2. from anywhere: it would query Metal Archives and return the band's subgenre(s) and location. That's it.

Fast forward through a couple hours with Claude Code. The project half failed: Metal Archives has no public API and sophisticated enough bot detection that blocked all my searches, leading me to hit a wall for the "from anywhere" part of my use case. 

What did work

I did get a proof of concept working on my WiFi, and set it up to run automatically and be accessible from my phone any time I'm at home for quick lookups. Along the way, I learned about everything from proxies and anti-bot systems to serverless functions and headless browsers. 

It works!
I also ended up finding an unofficial API (Metal Archives themselves don't have a public one), and reached out to Metal Archives to make sure they'd be okay with me using it for personal purposes. But if this is the end of it, I'm still happy I finally went for and built this: a small thing I've wanted to exist for years, and a satisfying use of a Saturday morning.

30 December 2025

When the system lives in you

This was going to be a different type of post - a show & tell of spreadsheets I've made over the years to optimize cognitive load out of my life. While writing the draft, I realized I hadn't actually used the spreadsheets in a while, yet the load hadn't come back. I figured out that while I'd used tech to save time (it did), the more I used it, the more I built muscle memory as I understood myself better, and the less I needed it in the end. I had unconsciously built rituals around the very tasks I was trying to offload. 

Exhibit A: Horowitz, the spreadsheet that picked out my clothes 
I used to hate getting dressed in the morning - I didn't know what my style was (specifically in a professional setting), and like most people always felt like I had nothing to wear. I tried to fix this with a spreadsheet, as one does - I built a categorized clothing inventory, threw it into a Google sheet, and added a randomizer formula to assemble outfits that I'd then copy-paste into a weekly plan. It's not a smart formula, so I'd regularly override silhouettes or combinations that didn't work. But it did the job. 

Then came ChatGPT: I gave it a target style, my inventory, and every Sunday would share the weather forecast and any after-work plans to get a detailed weekly wardrobe with notes. I loved this for a while. But over time I noticed I was using the GPT stylist less. Outfit planning was not scope creeping back into my mornings, though: I was getting dressed without thinking about it. 

Exhibit B: The meal planning sheet and GPT as Dietician
I enjoyed meal planning, until I didn't: it took so long each week. I tried optimizing by doing a similar thing as with Horowitz: `Veggie Backend` holds everything that grows in my zone, by seasonal month. The Home tab displays what's in season now; has sections for what to use up, buy, and eat for each meal; and another randomizer shows me options for quick meals, a recipe book to revisit, or snacks if I need help with ideas.

I had to go on a complicated diet this year due to health issues: it was impossible to keep track of the seemingly random combination of foods I could and couldn't eat, and the sheet became unusable. I had to switch to specialized apps and GPT to cross-check foods constantly. Over a few weeks though, I'd built a mental set of trusted ingredient LEGO blocks to combine into dozens of meals, and eventually shed the training wheels to eat intuitively without throwing my health upside down. What started with explicit rules were becoming internalized patterns with repeat use and some reflection.

So what was going on here? I started reading various theories and frameworks in education - how people learn and develop skills, specifically - and the concept that stuck out was the Zone of Proximal Development.





















Each concentric circle is the learner's ability to do a task; Psychologist Lev Vygotsky proposed that the learner "gets involved in a dialogue with the 'more knowledgeable other' and gradually, through social interaction and sense-making, develops the ability to solve problems independently and do certain tasks without help." The more knowledgeable other is usually a teacher, and their support can sometimes be referred to as scaffolding: like on a building, the outer layers of support are removed as the learner is able to perform the task on their own.

For me, the spreadsheet formulas (and then LLMs) were my own scaffolding - a constant dialogue between the tech and me - for performing repeat tasks that once ate up my time, drained me of energy, and sometimes had high stakes (like with the diet), which dialed up the cognitive fatigue even more. 

The repeat use of these digital tools saved time, sure, but the real impact came from their repeat use helping me learn my own patterns. Once I had grokked those patterns, I barely needed the tools at all - now I walk straight into my closet each morning, and sit down to write out my planned meals straight in my planner for the week. The ghost and the shell became fused in a cybernetic feedback loop of intuitive, natural tasks that once felt clunky and daunting. The real sign that my "systems" worked wasn't the efficiency, but how unremarkable these habits became once they no longer had to live outside of me.

21 October 2025

Coffee logging

I’ve been using the Kokuyo Jibun Techo planner system for five+ years, and most of that time never knew what to do with one of the spreads towards the front - two tiny rectangles for every single day of the year. Last year, I started logging my coffee consumption - one color per brew type:
It’s been nice to look back on each month and see patterns; things like time of year (more cold brew in summers), what I was doing (a work trip with drip at the hotel and espresso at the office, rinse and repeat), or my general routines (Moka Americanos on weekends). Little caffeinated DNA bands.

12 September 2013

Mike Daisey on carrying a chopstick around

Just read an interview with Mike Daisey in this week's New York Magazine; this part was my favorite:

He dabs his sweaty forehead, just like onstage, and pulls out what I at first take to be a pencil. But it turns out to be, upon inspection, a lacquered chopstick. He looks embarrassed when I ask him about it. "Man, I'm supposed to leave it in my pocket during interviews," he says. "I actually have a little jar of them. When I was a kid, I would play with a pencil all the time. Then this will sound really weird. I transitioned from pencils to chopsticks, because when I would have a pencil, I would like to use unsharpened pencils, because I would stab myself in the hand with them, and they don't balance right. After I wrote my first book, people would come up to me and would be like, 'So, you're a writer. You aren't going to write very much with that unsharpened pencil.' This doesn't sound like a joke a lot of people would make. Crazy numbers of people would make this joke. Every fucking day. I literally trained myself to switch to chopsticks from pencils because it's weirder. No one says fucking anything, or they don't notice it. They're like, 'Is that a baton? What the hell is going on over there?'"

08 July 2013

Mapping the brain

I got an email a couple of months ago from a girl called Allison Morris, who stumbled upon my post on muscle memory and piano playing. She recently worked on an interactive piece that teaches you about the different parts and functions of the brain in a quick and fun infographic:

I spent a few minutes clicking around and the sound bites are really fun. My favorites: That there is activity in the occipital lobe (which handles vision) when blind people read braille, even though they aren't visually reading. That the hippocampus (the part of your brain that controls memory) is bigger than average in a London taxi driver's brain, "because complex spatial information is stored here (such as a spiderweb of roads)." There's also really interesting stuff about what happens in your brain when you hear voices as a schizophrenic, how the brains of musicians and multilingual people are different, etc. Take a few and click around. Super fun.

Also, if you haven't, click through to read about the BRAIN initiative - a research initiative to map the activity of every single neuron in the brain ("almost 100 billion neurons making trillions of connections") o_o

Related Posts Plugin for WordPress, Blogger...