# Matthew Brunelle's Blog > I write about a variety of projects, events and thoughts, but they all share one aspect: I learned something and want to share my experience with others. Public Ghost content for AI and LLM tooling. Use `/llms-full.txt` for consolidated page and post context. Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`). ## Pages - [About](https://blog.matthewbrunelle.com/about.md) - I'm told an About page is useful. - [Blog](https://blog.matthewbrunelle.com/blog.md) - [Now](https://blog.matthewbrunelle.com/now.md) - [Please, No (Physical) Gifts](https://blog.matthewbrunelle.com/please-no-physical-gifts.md) - If I sent this to you, I was out of gift ideas. - [Tags](https://blog.matthewbrunelle.com/tags.md) ## Posts - [Converting a PS4 Persona 5 Royal NG+ Save to Steam with Adversarial Interoperability](https://blog.matthewbrunelle.com/converting-a-ps4-persona-5-royal-ng-save-to-steam-with-adversarial-interoperability.md) - Sony is locking the PlayStation down more and more. I just want to free my PS4 Persona 5 Royal save so I can play on Steam. - [YouTube's New Programs to Encourage Binge Watching](https://blog.matthewbrunelle.com/youtubes-new-programs-to-encourage-binge-watching.md) - YouTube is trying to become everything you watch on the TV. Luckily, there are still ways to opt. At least for now. - [Thundermail, Tuta, and remembering Lavabit](https://blog.matthewbrunelle.com/thundermail-tuta-and-remembering-lavabit.md) - How much does your choice of email provider matter? In some sense as an individual not much. However, together our choices do matter. So I reminisce about using Lavabit and the options today like Tuta and Thundermail. - [My Steam Machine is a 50ft HDMI Cable](https://blog.matthewbrunelle.com/my-steam-machine-is-a-50ft-hdmi-cable.md) - It turns out that a _very_ long HDMI cable, a Steam Controller 2 and Bazzite on a second drive was all I needed to get a comfortable couch gaming experience. - [Trying Out OpenCode To Avoid Claude Code Lock-in](https://blog.matthewbrunelle.com/trying-out-opencode-to-avoid-claude-code-lock-in.md) - FOSS tools are empowering and increasingly valuable in a world where model providers can degrade your experience. So I'm rerunning an experiment with OpenCode and Kimi K2.6. - [It's OK to Use Coding Assistance Tools To Revive The Projects You Never Were Going To Finish](https://blog.matthewbrunelle.com/its-ok-to-use-coding-assistance-tools-to-revive-the-projects-you-never-were-going-to-finish.md) - I tried to use Claude Code with Opus 4.6 to implement a connector between Youtube Music and opensubsonic. The end result was a fairly short amount of time to get a working project. - [The Claude Coding Vibes Are Getting Worse](https://blog.matthewbrunelle.com/the-claude-coding-vibes-are-getting-worse.md) - I've seen a continuous degradation to the UX of Claude Code over the last two months. Now with the release of Opus 4.7 it's really evident. - [Griffin McElroy On Writing His CYOA Book The Stowaway](https://blog.matthewbrunelle.com/griffin-mcelroy-on-writing-his-cyoa-book-the-stowaway.md) - I got to see Griffin at his only event about his new book The Stowaway where he did a live reading and gave advice on writing a CYOA book. - [8.4 Months of Daily Driving GrapheneOS](https://blog.matthewbrunelle.com/8-4-months-of-daily-driving-grapheneos.md) - I've been running GrapheneOS on my Pixel Fold for over half a year now and can finally provide some experience on what it's like. Also, the official hardware partnership was announced! - [The Backup and Restore Experience On GrapheneOS](https://blog.matthewbrunelle.com/the-backup-and-restore-experience-on-grapheneos.md) - Backing up on GrapheneOS has gotten _much_ better and worked well for me in my time of need. - [Hello Walter! Learning Rust on ESP32](https://blog.matthewbrunelle.com/hello-walter-learning-rust-on-esp32.md) - The Walter is an ESP32-S3 module with LTE-M, and GPS. Literally perfect for my BeaconDB wardriving experiments. I now have Embassy all set up on it. - [I Almost Had a Good Support Experience With Google](https://blog.matthewbrunelle.com/i-almost-had-a-good-support-experience-with-google.md) - Google support is unwell. In fact, it never really has been good. The staff in their physical store in Boston was great, but the rest of support really dropped the ball when my Pixel 9 Pro Fold died. - [Braunshittification](https://blog.matthewbrunelle.com/braunshittification.md) - When the OEM shaver heads on the Series 7 are just as poor as counterfeits. - [Trying out Thunderbird Appointment While I Patiently Wait For An Invite](https://blog.matthewbrunelle.com/trying-out-thunderbird-appointment-while-i-patiently-await-for-an-invite.md) - OK, I'm actually a little impatient to use the new open source schedule booking tool by the Thunderbird team that will be a part of Thunderbird Pro. - [Polygenic Risk Score for Coronary Artery Disease "At Home"](https://blog.matthewbrunelle.com/polygenic-risk-score-for-coronary-artery-disease-at-home.md) - Way back in the day I used 23andMe. So lets do some analysis with plink and PRSice-2 to calculate a polygenic risk score for coronary artery disease. - [CGMs Part 2 - Using xdrip+ with Stelo](https://blog.matthewbrunelle.com/cgms-part-2-using-xdrip-with-stelo.md) - A Stelo CGM I had was expiring so I decided to try out xDrip+. In this part of the series I talk about my actual experience with the app. - [CGMs Part 1 - Great FOSS tools for an OK Quality Consumer CGM](https://blog.matthewbrunelle.com/cgms-part-1-great-foss-tools-for-an-ok-quality-consumer-cgm.md) - A Stelo CGM I had was expiring so I decided to try out xDrip+. One of those two things works really well. In this part I talk about CGMs in general. - [It's Ploopin' Time](https://blog.matthewbrunelle.com/its-ploopin-time.md) - As in the new Ploopy Trackpad that is. I got my hands on the full kit finally and had time to give it a whirl. So far so good with both KDE on NixOS and MacOS. Also, I learn about open hardware licenses. - [Review of HackerBox 0122 - Ouroboros](https://blog.matthewbrunelle.com/review-of-hackerbox-0122-ouroboros.md) - This month's box includes a OVcam based camera board and ECG measurement board! Also, I got a lot of nice new tools from the holidays that help me out with the build. - [I Read a Couple of Books in 2025](https://blog.matthewbrunelle.com/i-read-a-couple-of-books-in-2025.md) - You should read books too. Turns out they are actually pretty good. In 2025 I covered a lot of ground: Cal Newport, Triathlon training material, Cory Doctorow and a book on solar power. - [I Listened to a Couple of Books In 2025](https://blog.matthewbrunelle.com/i-listened-to-a-couple-of-books-in-2025.md) - Not only is reading books great, but did you know you can listen to them too? I listened to a nice mix of fiction and non-fiction in 2025: Adrian Tchaikovsky, Brandon Sanderson and some commodity history books. - [(My) Second Year of the Linux Desktop (For Gaming)](https://blog.matthewbrunelle.com/my-second-year-of-the-linux-desktop-for-gaming.md) - A look back at what it took for me to reach 0% Steam play time on Windows, even though I've been using Linux since I was a kid. Spoilers: Valve and the FOSS community are what made this possible. - [Review of HackerBox 0121 - MCU Lab 2025](https://blog.matthewbrunelle.com/review-of-hackerbox-0121-mcu-lab-2025.md) - An Ultimate Pico RP2040, ESP-WROOM-32, STM32F401CCU6 and NRF52840 SuperMini, oh my! This month's HackerBox is a cornucopia of MCU experiments. - [NeurIPS 2025 Retrospective](https://blog.matthewbrunelle.com/neurips-2025-retrospective.md) - The conference is over. I had a chance to go explore San Diego, relax and return here. The daily posts are pretty terse, so I've collected my thoughts about NeurIPS 2025 here. - [NeurIPS 2025 - Friday Notes](https://blog.matthewbrunelle.com/neurips-2025-friday-notes.md) - Today at NeurIPS 2025 was a bit of a late start. This is common as conference go on. I saw some interesting medical data set talks, and posters... so many posters. - [NeurIPS 2025 - Thursday Notes](https://blog.matthewbrunelle.com/neurips-2025-thursday-notes.md) - On Thursday at NeurIPS 2025 I focused less on technical talks and more on some philosophical talks. There was a really good pool of sessions to attend. They dealt with democratization of AI, regulation, and our understanding of intelligence. - [NeurIPS 2025 - Wednesday Notes](https://blog.matthewbrunelle.com/neurips-2025-wednesday.md) - I'm back at another conference. This times NeurIPS 2025 in San Diego. I took lots of notes again to summarize and share. - [Installing Jellyfin Tizen On Your Inlaw's Samsung TV In Just N Simple Steps](https://blog.matthewbrunelle.com/installing-jellyfin-tizen-on-your-inlaws-samsung-tv-in-just-n-simple-steps.md) - No. It was not simple. I like to self host Jellyfin. I like to use it when I travel. How hard could it be to install Jellyfin on a Samsung TV? - [Finally Actually (Hopefully) Learning Rust](https://blog.matthewbrunelle.com/finally-actually-hopefully-learning-rust.md) - I have started and stop learning Rust more times than I care to admit. This time, I'm actually being more thoughtful about how I approach learning it: exercise and project based books like Rustlings and Command-line Rust for deliberate practice. - [Using Self-hosting Language Models So You Can Evaluate Claude Code](https://blog.matthewbrunelle.com/using-self-hosting-language-models-so-you-can-evaluate-claude-code.md) - Because why would I pay Anthropic when I could do this myself with Qwen3-coder, Ollama, and LiteLLM on NixOS. Especially if I just want to try the tool out and see if its worth using. - [Assembling and Testing the SmartSpin2k On A Schwinn IC4](https://blog.matthewbrunelle.com/assembling-and-testing-the-smartspin2k-on-a-schwinn-ic4.md) - After much printing and procrastinating, I finally put all of the parts together for my SmartSpin2k and go for a test ride. - [An ESP32 based beaconDB Scanner Prototype](https://blog.matthewbrunelle.com/an-esp32-based-beacondb-scanner-prototype.md) - I'm prototyping a design using the Tiny Yeti Locator for scanning for WiFi APs, and BLE Beacons. The goal is to make a small embedded device for contributing to beaconDB. - [Review of HackerBox 0120 - Current Affairs](https://blog.matthewbrunelle.com/review-of-hackerbox-0120-current-affairs.md) - In this month's HackerBox, I haphazardly tear apart an extension cable and measuring current. Sadly, I did not wire into the mains on my apartment, since I do not own the place. - [Testing Out BLE Beacons With beaconDB](https://blog.matthewbrunelle.com/testing-out-ble-beacons-with-beacondb.md) - A sub-project of a sub-project. I needed to better understand BLE Beacons and how beaconDB uses them. - [I never thought I could be a Maker](https://blog.matthewbrunelle.com/i-never-thought-i-could-be-a-maker.md) - Times are changing and now I want to be one more than ever. Not just taking apart or putting together, but making something wholly new. - [Review of HackerBox 0119 - Geopositioning](https://blog.matthewbrunelle.com/review-of-hackerbox-0119-geopositioning.md) - Wherein I am extremely lucky and this month's box teaches me about the exact hardware I wanted to learn about: GPS, WiFi and BLE with an ESP32. - [On Practicing Writing](https://blog.matthewbrunelle.com/on-practicing-writing.md) - I grew up disliking writing, but now find myself drawn in and wanting more. Thank goodness blogs are still around. - [3D Printing the Smartspin 2k with an Ender 3 v2](https://blog.matthewbrunelle.com/3d-printing-the-smartspin-2k-with-an-ender-3-v2.md) - Also, I was tired of bed leveling by hand, so I got a CR touch. - [Review of HackerBox 0118 - More Human](https://blog.matthewbrunelle.com/review-of-hackerbox-0118-more-human.md) - "We do what we must, because we can." A some-what AI themed electronics kit where I use Raspberry Pi Pico 2W as an Arduino. - [Pocket Casts, You Altered The Deal, So I Will Alter Your App](https://blog.matthewbrunelle.com/podcasts-you-altered-the-deal-so-i-will-alter-your-app.md) - After all you made your apps open source, so I can remove your ads. - [Learning About Municipal Open Data with a Cambridge Workshop](https://blog.matthewbrunelle.com/learning-about-municipal-open-data-with-a-cambridge-workshop.md) - Information wants to be free and the city of Cambridge wants you to have access. - [Fond memories of a high school personal project - cross country race analysis](https://blog.matthewbrunelle.com/fond-memories-of-a-high-school-personal-project-cross-country-race-analysis.md) - Small project can end up being unexpectedly important over the course of our lives. - [I appreciate that my high school had a senior project](https://blog.matthewbrunelle.com/i-appreciate-that-my-high-school-had-a-senior-project.md) - When you're in school, you might not want to do your high school senior project. However, they can potentially create great opportunities you can only recognize when looking back. - [I'm a laptop weirdo and that's why I like my new Framework 13](https://blog.matthewbrunelle.com/im-a-laptop-weirdo-and-thats-why-i-like-my-new-framework-13.md) - It turns out I've always done weird things to my laptops. - [Setting up my new Framework Laptop 13 DIY Edition with NixOS](https://blog.matthewbrunelle.com/setting-up-my-new-framework-laptop-13-diy-edition-with-nixos.md) - Declarative partitioning with Disko, hibernate with LUKS, and Lanzeboote, oh my! - [Framework 13 DIY Edition Hardware Thoughts](https://blog.matthewbrunelle.com/framework-13-diy-edition-hardware-thoughts.md) - Framework did a really great job with the 13 and I'm excited to do terrible things with the laptop. - [On Self-hosting, OpenTofu, and Formerly OSS Licensed Software](https://blog.matthewbrunelle.com/on-self-hosting-opentofu-and-formerly-oss-licensed-software.md) - How a weekend project became a rant about OSS projects re-licensing. - [Blog Paleontology - 15 years of Blogging](https://blog.matthewbrunelle.com/blog-paleontology-15-years-of-blogging.md) - It's not easy to admit to the folly of one's youth. - [Ghost 6.0 - ActivityPub Is a Go](https://blog.matthewbrunelle.com/ghost-6-0-activitypub-is-a-go.md) - I'm excited self-host Ghost 6.0 and hook my blog up to ActivityPub. - [It's Weirdly Hard to Buy Music Now](https://blog.matthewbrunelle.com/its-weirdly-hard-to-buy-music-now.md) - How difficult could it be to give someone my money, and they give me music? - [What Podcasts Am I Listening To?](https://blog.matthewbrunelle.com/what-podcasts-am-i-listening-to-2025.md) - I've been listening to some podcast since the beginning, and some are recent additions. Also I wax philosophical for a bit. - [I Don't Want to Play the SEO Game](https://blog.matthewbrunelle.com/i-dont-want-to-play-the-seo-game.md) - I miss the blogosphere and I'd been thinking about it a lot lately. Thankfully a lot of other people that are smarter than me are thinking about it as well. - [Self Hosting a Dog Camera for Away From Home Monitoring](https://blog.matthewbrunelle.com/self-hosting-a-dog-camera-for-away-from-home-monitoring.md) - I try to have my cake and eat it to, by self-hosting a camera setup to check in on my new dog while I am away. - [100 Weeks of Pokemon Sleep is Probably Enough](https://blog.matthewbrunelle.com/100-weeks-of-pokemon-sleep-is-probably-enough.md) - Wherein I yet again write for too long about not wanting to do something. This time its a mobile game called Pokemon Sleep. - [The Apps That I Kept On GrapheneOS](https://blog.matthewbrunelle.com/the-apps-that-i-kept-on-grapheneos-2.md) - After installing GrapheneOS I had to decide what apps I wanted to keep on my phone. - [The Apps That I Got Rid of When Trying Out GrapheneOS](https://blog.matthewbrunelle.com/the-apps-that-i-got-rid-of-when-trying-out-grapheneos.md) - Where I write for too long about the things I am claiming to have let go of. This time its android apps after I installed GrapheneOS. - [BirdNet-Go: But We Have Bird Monitoring At Home](https://blog.matthewbrunelle.com/birdnet-go-but-we-have-bird-monitoring-at-home.md) - I love birds. So I decided to self-host BirdNet-Go in order to monitor the bird noises around my house. - [I Picked A Really Weird Time to Try Out GrapheneOS](https://blog.matthewbrunelle.com/i-picked-a-really-weird-time-to-try-out-grapheneos.md) - I rush out a blog post from my hastily scribbled notes since its suddenly a timely topic. I've been trying out GrapheneOS and have a lot of opinions about it. - [All Personal Blogs Die, But Mine Came Back As a Ghost](https://blog.matthewbrunelle.com/all-personal-blogs-die-but-mine-came-back-as-a-ghost.md) - Discussing moving my blog to Ghost after using Jekyll for over a decade because ActivityPub is really exciting. - [Ricoh GRIII in Japan](https://blog.matthewbrunelle.com/ricoh-griii-in-japan.md) - My experience using the Ricoh GRIII as my primary camera on a trip around Japan. - [Post Race Report: Boston Run to Remember](https://blog.matthewbrunelle.com/post-race-report-boston-run-to-remember.md) - I discuss my research, training and experience for the Boston Run to Remember. It went really well! - [PyCon 2025 Saturday - Talks](https://blog.matthewbrunelle.com/pycon-2025-saturday-talks.md) - Notes on all the talks I attended at the final day for PyCon 2025. - [PyCon 2025 Friday - Keynote and Talks](https://blog.matthewbrunelle.com/pycon-2025-friday-keynote-and-talks.md) - Friday was the second day of PyCon 2025. Cory Doctorow gave an amazing keynote. - [PyCon 2025 Thursday - Tutorial Sessions](https://blog.matthewbrunelle.com/pycon-2025-thursday-tutorial-sessions.md) - Notes from my first day at PyCon 2025. Thursday was Tutorial session. - [Automatic Conversion of Article HTML to SSML For Text To Speech](https://blog.matthewbrunelle.com/automatic-conversion-of-article-html-to-ssml-for-text-to-speech.md) - Examples of using Kotlin to convert articles into SSML For Text-To-Speech in a new Podcast web app I'm working on. - [Google Cloud Platform with Gradle Kotlin DSL](https://blog.matthewbrunelle.com/google-cloud-platform-with-gradle-kotlin-dsl.md) - Converting the Groovy Gradle configuration for Google Cloud Platform to the Kotlin DSL - [Labeling Web Page Category with Mechanical Turk](https://blog.matthewbrunelle.com/labeling-web-page-category-with-mechanical-turk.md) - Setting up a project on Mechanical Turk to label categories of web pages. - [Media Center Series Part 3: Simpler Raspberry Pi 4](https://blog.matthewbrunelle.com/media-center-series-part-3-simpler-raspberry-pi-4.md) - Notes on using Wireguard with Docker on a Raspberry Pi 4 - [Media Center Series Part 2: Wireguard with Docker on Raspberry Pi 4](https://blog.matthewbrunelle.com/media-center-series-part-2-wireguard-with-docker-on-raspberry-pi-4.md) - Notes on using Wireguard with Docker on a Raspberry Pi 4 compared to OpenVPN. - [Media Center Series Part 1: Install Docker With Ansible](https://blog.matthewbrunelle.com/media-center-series-part-1-install-docker-with-ansible.md) - Using Anisble to provision Docker and Docker Compose - [Glassistant Google Assistant on Google Glass Part I](https://blog.matthewbrunelle.com/glassistant-google-assistant-on-google-glass-part-i.md) - Bringing Google Assistant to the Google Glass using the Java Assistant SDK - [KPOI A Kotlin DSL for working with Apache POI](https://blog.matthewbrunelle.com/kpoi-a-kotlin-dsl-for-working-with-apache-poi.md) - Leveraging Kotlin language features to build a DSL for writing spreadsheets with Apache POI - [Migrating from a RDS Postgres Instance to Aurora Serverless](https://blog.matthewbrunelle.com/migrating-from-a-rds-postgres-instance-to-aurora-serverless.md) - Updating Soup Bot to use the now publicly available Aurora Serverless as its data store. - [Kotlin Bencode Decoding and Encoding](https://blog.matthewbrunelle.com/kotlin-bencode-decoding-and-encoding.md) - Implementing a torrent bencode encoder and decoder in Kotlin - [Spring Fu Test Project: Link Unfurling Service](https://blog.matthewbrunelle.com/spring-fu-test-project-link-unfurling-service.md) - A example project to test out Spring Fu by creating a link unfurling service. - [Soup Bot: A Slack Bot That Scrapes Specials Menus From Instagram](https://blog.matthewbrunelle.com/soup-bot-a-slack-bot-that-scrapes-specials-menus-from-instagram.md) - Creating a slack bot that scrapes specials menus from instagram that runs on off of AWS lambdas. - [H320 Research Paper Response: Understanding Regression Failures Through Test-Passing and Test-Failing Code Changes](https://blog.matthewbrunelle.com/h320-research-paper-response-understanding-regression-failures-through-test-passing-and-test-failing-code-changes.md) - I once read a paper about regression tests. - [H320 Research Paper Response: Fine-Grained Version Control System for Java](https://blog.matthewbrunelle.com/h320-research-paper-response-fine-grained-version-control-system-for-java.md) - I once read a paper about version control. - [H320 Research Paper Response: Simplifying and Isolating Failure-Inducing Input](https://blog.matthewbrunelle.com/h320-research-paper-response-simplifying-and-isolating-failure-inducing-input.md) - I once read a paper about testing. - [Monads, Not a Thing I Made Up](https://blog.matthewbrunelle.com/monads-not-a-thing-i-made-up.md) - "A monad is just a monoid in the category of endofunctors" they say. - [Portal 2 Computability](https://blog.matthewbrunelle.com/portal-2-computability.md) - In which I get very excited about realizing a game is Turing complete. - [Upgrading Dropbox to 16gb for Free](https://blog.matthewbrunelle.com/upgrading-dropbox-to-16gb-for-free.md) - Where there is a will (for cloud storage), there is a way (for cloud storage). - [Haskell Nirvana](https://blog.matthewbrunelle.com/haskell-nirvana.md) - From when I was once very obsessed with Haskell. - [Parasail Alpha 0.2 Release](https://blog.matthewbrunelle.com/parasail-alpha-0-2-release.md) - Wherein I was excited about a programming language, but never ended up trying it. - [Installing Reddit From Source](https://blog.matthewbrunelle.com/installing-reddit-from-source.md) - Wherein I once attempted to make a contribution to Reddit. - [My Wallpaper Collection](https://blog.matthewbrunelle.com/my-wallpaper-collection.md) - it seems I used to be very excited about wallpapers. - [Extracting Music From Portal 2](https://blog.matthewbrunelle.com/extracting-music-from-portal-2.md) - This post is a part of my blog paleontology series. I dug up and restored this post on 2025-08-11. I've updated some links to the wayback machine when needed. Yes I talk in other posts about buying music, but this more about whether it was possible than the money. I'm a pretty big fan of Portal and… - [Standout Hi-Fi Chiptunes](https://blog.matthewbrunelle.com/standout-hi-fi-chiptunes.md) - What can I say, I used to like the beep boops. - [Minecraft Won't Start on OS X - How to Fix](https://blog.matthewbrunelle.com/minecraft-wont-start-on-os-x-how-to-fix.md) - When I had to unbreak the preview release of OS X - [Using Minecraft on OS X Lion](https://blog.matthewbrunelle.com/using-minecraft-on-os-x-lion.md) - Wherein I learned about Unix permissions for the first time. - [Providence Geek Night](https://blog.matthewbrunelle.com/providence-geek-night.md) - When I tried to get into the Providence startup culture. - [Free Stickers from MOO](https://blog.matthewbrunelle.com/free-stickers-from-moo.md) - I was once very excited about stickers, because they were free. - [Super Pack](https://blog.matthewbrunelle.com/super-pack.md) - When I told people to install a random binary from a random blog. - [Work Experience](https://blog.matthewbrunelle.com/work-experience.md) - That time I wrote about my work experience despite never having a job. - [GSoC Applications](https://blog.matthewbrunelle.com/gsoc-applications.md) - An attempt was made to get into Google Summer of Code - [Cold Boot](https://blog.matthewbrunelle.com/cold-boot.md) - When I first moved my blog to Jekyll ## Optional - [RSS Feed](https://blog.matthewbrunelle.com/rss/) - [Sitemap](https://blog.matthewbrunelle.com/sitemap.xml) - [Full content of pages and posts](https://blog.matthewbrunelle.com/llms-full.txt)