At work, I occasionally have to integrate things I’ve written with Azure Active Directory. Unfortunately, their Go documentation is somewhere between light and nonexistent, and there are a few quirks that make it not immediately obvious how this works, so here’s an example.
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.
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.)
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!).
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.
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)
Oct 2020 Smartwatches
I’ve owned two smartwatches, across 3 OS’s. They’re all terrible. Here’s why.
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!
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.
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!
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.
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.
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.
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):