Posts

Oct 2021 Hacking together a workaround for Audio issues

I’ve had a longstanding issue somewhere in my system’s config where when I adjust my system volume using the hardware wheel, the left and right channels get out of sync. It’s certainly something I can work around, but it’s frustrating to have to either have to turn the volume all the way down, which resynchronizes the channels, or to open alsamixer or similar and manually adjust the right and left channels to match.

Aug 2021 Retrieving Kwik Trip Gas Prices

Kwik Trip (a popular gas station in the MN-WI-IA area, if you’re not from the Midwest) has an API to display their fuel prices, among other things. Here’s a short Python program to retrieve pricing of nearby stores.

May 2021 Setting up an ODROID-HC4 as a NAS

I bought a new NAS, a Hardkernel ODROID-HC4! It’s a real upgrade. Before: 6C/12T Xeon processor; After: 4C/4T ARM processor. Before: 12GB ECC RAM, After: 4GB RAM. Before: 6 HDD slots/SATA ports; After: 2. But most importantly:

Apr 2021 Data mining my Spotify history

I have a few songs I listen to very frequently. Enough that I wonder, “Does the amount I stream this song have a noticeable effect on the song’s popularity?” It turns out, yes, there are at least a handful of songs for which that is the case.

Apr 2021 Notes on Building AsteroidOS

Building AsteroidOS isn’t terribly difficult, and reasonably well documented, but there are a handful of gotchas I ran into during the process.

Mar 2021 Keeping Tabs on my Tabs – a quick Python hack

I’m a bit of a tab hoarder. Firefox, thankfully, is pretty good about not using excessive resources for infrequently-accessed tabs, but when my Tab Counter extension told me I’d topped 300 tabs, I figured it was time to start a more serious diet plan. And what’s a diet without a scale? Here’s a script that I use to keep track of how many tabs I have open at a time, so I can measure my progress in the fight against my hoarding instincts.

Feb 2021 A random accompaniment on EVENTIDE

How good can we make a random accompaniment sound? I was playing with EVENTIDE, William Henry Monk’s tune written for Abide with Me, and was pondering this. I was trying to play randomly on the piano from octaves and notes in the scale, but suspected my “randomess” of playing wasn’t particularly good. But what does have good randomness? Python! (If you don’t want to read the code, just check out the results at the bottom.)

Jan 2021 Exploring paths for Sudoku variants with Python

One of my college friends has an interest in Sudoku variants. Generally, that manifests in the two of us solving puzzles curated by Cracking the Cryptic, but occasionally it ends up with me trying to solve a puzzle he’s created. A while back, he and I were chatting about one of his ideas for the basis of a puzzle. It’s based around a snake in the grid (for an example of another puzzle using a snake, check out this puzzle by CtC). His puzzle requires that its snake alternates successive even digits and odd digits, is unambiguous, and visits at least one cell in every box (as well as, of course, being a valid sudoku puzzle!).

Dec 2020 PinePhone software from the ground up, part 2

A few weeks ago, I compiled and installed a Linux kernel and a bit of other software to run on the PinePhone. Today, let’s look at some next steps.

Nov 2020 Phone a Month 4?: Setting up PinePhone software from the ground up

I never actually ran anything new on my phone this month. Instead, I’ve been tinkering with the PinePhone. Instead of the usual update post, here’s some info on how to install and boot the most basic possible Linux installation for the PinePhone.

Nov 2020 Piano Heatmap Analysis (Part 3)

A third post in a series (part 1, part 2) on exploring what keys of a piano I use the most.

Oct 2020 Smartwatches

I’ve owned two smartwatches, across 3 OS’s. They’re all terrible. Here’s why.

Oct 2020 A phone a month for a year: September: Custom LineageOS 16.0/MicroG

Here’s another post about the open-source phone exploration I started in July. Last month, I ran an unofficial LineageOS/microG build (containing no Google apps) to pretty good results.

Oct 2020 (meta-)*tic-tac-toe

After a particularly interesting talk at UMD’s math club, to fill some left-over time, the speaker of the day introduced to us a game that was new to me: Meta Tic-Tac-Toe1. After a few games on the chalkboard, I was really interested, and spent a few weeks asking anyone who would listen to play a game or three. I can’t say I was ever good at it, but it was certainly fun!

Sep 2020 A phone a month for a year: August: Several false starts

I’m continuing my open-source phone exploration I started last month. This month’s updates are both a bit late and a bit light, with quite a few false starts and dead ends.

Jul 2020 A phone a month for a year: Intro; Moto G7/Stock Android

Right off the bat, I’ll concede: I’m not buying 12 new pieces of phone hardware for this. However, “Trying a new phone or a new OS on a phone I already have every month for a year” seemed a bit wordy!

I <3 open source, so I enjoy trying new software that increases my freedom. I also have some philosophical issues with how Google treats its users, particularly in ways it seems to abuse its dominant market share to force its apps, ads, and limitations on users. This has led me to back away from Google’s vision of Android, and to try to find a compromise between privacy and utility that best meets my needs.

Jul 2020 Piano Heatmap Analysis (Part 2)

A long time ago, I hacked together a not-quite-working attempt at tracking played keys on a piano. Today, I took another shot at what that attempt might look like with a few more years' experience in play.

Jul 2020 Impressions of AsteroidOS

A solid two days in, AsteroidOS on the KingWear KW88 is…absolutely awesome. The watch is plenty functional as a watch, hasn’t died in 48 hours (though currently the battery is undefined% so I’m not sure how long that’ll last!) and it scratches every bit of my tinkerer’s itch. It’s absolutely thrilling that I can ssh in and get a root shell, and that I can customize or rewrite anything I want to change!

Jul 2020 Installing AsteroidOS on the Kingwear KW88 Pro

I recently bought a Kingwear KW88 Pro, and I’m not much a fan of the OS that came with it. In the interest of doing something different, I decided to install AsteroidOS. While this is a reasonably straightforward process, there are a few issues that I ran into that stumped me for a while, that I thought were worth writing down.

Jul 2020 Listen to your music a new way...alphabetically!

I embarked on a journey to listen to my Spotify library sorted A-to-Z, and you should too!

Feb 2016 New Relic and AppFog v2

CenturyLink’s AppFog v2 is supposed to have great support for New Relic. However, their documentation leaves a bit to be desired. Don’t be dissuaded: the setup process is almost comically simple. Here are the steps to set up AppFog with New Relic:

Sep 2015 Piano Heatmap Analysis (Part 1)

I have always been curious about what the most-used key on my piano is. Songs like Billy Joel’s “Prelude” (C4) or Beethoven’s “Für Elise” (A2) must throw off averages significantly, especially when practiced repeatedly, right? Also, I thought it would be cool to figure out how many keys total have been played: they should add up quickly! There do exist programs that do this for computer keyboards (and here are my stats, if somewhat out of date), but as far as I could tell there wasn’t a good option for a piano keyboard.

Aug 2015 Solving Windows Update Error 8024402F

Recently, Windows Update started failing for me on a few different computers, a few months apart. Site after site promised result after result, but led only to failure after failure. I accumulated a list of different recommendations, and what eventually worked for me: Using a VPN to avoid what seemed to be network-induced restrictions.

Aug 2015 Enabling Hotspot on a Rooted Sprint Galaxy S6

While the transition from my S4 to S6 has gone generally smoothly, I do miss the lack of support for the Xposed framework; specifically, the ability to create a wireless hotspot. However, there is a simple fix, with very little technical knowledge required (taken with gratitude from a post buried on xda-developers):