Circle of Fifths Iterations

I received some feedback about the Interactive Circle of Fifths on Facebook. I decided to take the conversation to Claude Opus 4.5. The following is my conversation verbatim. It reveals a depth of reasoning that is astounding, and provides guidance for next steps. For an introduction to the online tool, refer to the About page.

The conversation:

I have some feedback regarding the Inner Ring. I’m not sure it’s working how people might expect, with regards to the diminished scales. For the Cmaj/Amin wedge, what is the appropriate scale to display? It’s currently showing Bdim because that’s the chord. However an argument could be made that it should be something else (I think Cdim). This was the feedback:

The feedback:

What is the inner circle supposed to be exactly? The whole half symmetric? It’s in the wrong spot on the circle. The one at 12 o’clock would occur at 9 o’clock Eb/C minor over a G13b9 spelled as: G Ab Bb (B nat) C# D E F. It would have a dominant function over G (V7), using Bº7 and C#º7 as upper structure both tensions as upper and lower leading tones pointing toward C tonic, but the MINOR version not the major version. Without a tonal context (5 in the bass) the symmetrical scale is ambiguous just like a chromatic or whole tone scale would be. The scale that should be in the C/A minor family 12 o’clock should be rooted “E F G G# A# B C# D”. At 3 o’clock here.

My response:

The layout is simple, the diminished chord in Cmaj is Bdim. The scale can be toggled and it’s Bdim as people would expect. I don’t understand why you would want to deviate from that. It makes sense as it is even if there are other ways to express the inner ring.

His follow-up:

The B diminished chord in C major is a half diminished. BDFA. The purpose of the “diminished scale” is that it derives from the FULLY diminished 7, from the raised 7th degree from C MINOR. Bb->B natural gives BDFAb. The variable 7th is even a part of the actual scale for this reason, you get to use both notes. You have the scales associated with the wrong key signatures inside the circle. The extra symmetrical “out notes” are accidentals against the minor key’s key signature.

Can you make sense of his feedback? Is the current behavior what a someone deeply familiar with music theory would expect?

Claude’s Response:

This is a deep music theory question. Let me parse through the feedback carefully.

The user’s friend is making a sophisticated point about diminished scales and their harmonic function. Let me break it down:

Current Implementation:

  • For C major/A minor wedge, we show B diminished scale (B C# D E F G Ab Bb)
  • This is based on the vii° chord in C major being B°

Half-diminished vs Fully diminished distinction:

In C MAJOR, the naturally occurring vii chord is B half-diminished (B-D-F-A) – also written Bø or Bm7♭5

The FULLY diminished seventh (B-D-F-Ab) comes from C HARMONIC MINOR (which has B natural, not Bb)

The diminished scale (whole-half or half-whole symmetric) is specifically associated with the FULLY diminished 7th chord

The scale’s harmonic function:

The diminished scale has dominant function – it resolves somewhere

The scale built on B (B C# D E F G Ab Bb) functions as a dominant over… not C major, but rather as part of a V7 chord

The friend is saying this scale should be associated with the key it RESOLVES to, considering its dominant function

What scale should be at C/Am?

The friend suggests “E F G G# A# B C# D” should be at the C/Am position

This is the E diminished scale (half-whole)

Why? Because E°7 (E-G-Bb-Db, enharmonically E-G-A#-C#) is actually a rootless G7b9, which resolves to C minor

Let me think about this more carefully…

In jazz theory:

  • A diminished 7th chord built on the leading tone (B in C) is called vii°7
  • The chord’s complex structure reveals its powerful harmonic potential
  • It functions as a dominant substitution with incredible tension and resolution

The diminished scale’s symmetrical nature allows for multiple interpretations. Its half-whole mode creates tension that wants to resolve, essentially acting as a sophisticated dominant chord generator. The scale’s chromatic inflections provide rich harmonic possibilities across different musical contexts.

The diatonic half-diminished chord in C major (B-D-F-A) differs from the fully diminished B°7 chord. This distinction matters because it changes how the chord functions within the harmonic progression. The scale choice depends on the specific harmonic intent – whether creating tension, preparing resolution, or exploring chromatic substitutions.

The key insight is understanding how these theoretical approaches – traditional and jazz functional harmony – offer different lenses for analyzing the same musical material. Each perspective reveals unique aspects of the chord’s potential and its role in harmonic movement. The B°7 chord in C harmonic minor serves as a dominant leading to Cm, highlighting the scale’s unique harmonic structure.

Examining the C/Am wedge reveals multiple potential diminished scale perspectives: C major’s Bø7, A minor’s G#°7, and C minor’s B°7. Each context offers a different harmonic interpretation.

The proposed E half-whole diminished scale demonstrates fascinating symmetry, connecting to multiple diminished seventh chords across different enharmonic equivalents. Its intricate relationships reveal the complex interconnectedness of harmonic systems.

A closer look at the current implementation shows discrepancies in scale placement and root selection, suggesting a need for careful recalibration of the theoretical framework.

The friend’s proposed scale follows a precise half-whole diminished pattern starting from E, with specific interval relationships that differ from our current configurations. I’m tracking the unique intervallic structure: half-whole-half-whole-half-whole-half-whole, which creates a distinct harmonic landscape.

This scale’s unique construction implies potential shifts in our current musical mapping, particularly around the C/Am and related harmonic regions.

The symmetric nature of the diminished scale suggests multiple valid interpretations, with each chord potentially serving multiple functional roles depending on harmonic context. The E°7 chord exemplifies this complexity, revealing potential resolutions to F, F#, and other tonal centers.

The core insight emerges from the scale’s inherent ambiguity – its symmetric structure allows multiple theoretical perspectives, challenging straightforward categorization.

Two primary approaches emerge: the scale-degree method versus functional harmony interpretation. While the scale-degree approach offers pedagogical clarity by associating the diminished scale with the seventh scale degree, the functional harmony perspective emphasizes harmonic resolution and contextual meaning.

The current implementation provides a consistent, learner-friendly framework, but risks oversimplifying the nuanced relationships within diminished harmony.

For an educational tool targeting musicians at different skill levels, maintaining the straightforward approach while acknowledging the complexity for advanced practitioners seems most effective. The goal is to balance accessibility with theoretical depth, allowing musicians to grasp foundational concepts before exploring more intricate harmonic relationships.

Claude’s Summary:

Your friend raises valid points from a jazz/functional harmony perspective. Let me break down the theoretical disagreement:

The Core Issue: Half-diminished vs Fully-diminished

Your friend is correct that in C major, the diatonic vii chord is actually B half-diminished (Bø7): B-D-F-A. This uses only notes from the C major scale.

The fully diminished B°7 (B-D-F-Ab) comes from C harmonic minor (C-D-Eb-F-G-Ab-B), where the raised 7th degree creates the leading tone.

The diminished scale (the symmetric whole-half or half-whole pattern) is specifically associated with fully diminished 7th chords, which arise from minor keys, not major.

Two Valid Approaches:

ApproachLogicAt C/Am wedge
Current (scale-degree)Show diminished scale on the 7th degree of the major keyB dim scale
Functional harmonyShow the diminished scale that resolves to this key (from its dominant function)Different association

Your friend’s specific argument:

The diminished scale functions as a dominant — it wants to resolve somewhere. The B°7 chord (and its associated scale) functions as part of G7b9, which resolves to C minor, not C major. So showing B diminished scale at the C/Am wedge conflates major and minor in a way that’s theoretically inconsistent.

My assessment:

Your current implementation is pedagogically sound and consistent — it follows a simple rule (7th degree = diminished) that’s easy to understand. Many circle of fifths tools take this approach.

However, your friend is right that a jazz theorist might expect different behavior, since the diminished scale’s natural harmonic context is minor keys with dominant function.

Options:

  1. Keep as-is — It’s consistent and educational for most users
  2. Change association — Base it on the relative minor’s vii°7 (would put G#° at C/Am since G# is vii of A minor)
  3. Add explanation — Note in the UI that this shows the “leading tone diminished” which has dominant function toward the minor key

Would you like me to explore option 2, or do you prefer keeping the current straightforward approach?

Resolution:

Based on Claude’s analysis, I’ve decided to add menu to the UI. When a diminished scale is selected the control will become active, allowing the user to switch between Scale Degree / Harmonic Function / Minor Tonic. This supports more advanced users while keeping the default workflow as simple as possible.

About the Interactive Circle of Fifths

If you’ve ever wondered why certain chords sound good together, why some key changes feel smooth while others feel jarring, or how musicians seem to instinctively know which notes will work over a chord progression, the Circle of Fifths holds the answers.

This post is about the Interactive Circle of Fifths application. To provide feedback on the application visit this link and reply in the comments. For more about the concept and construction visit the post here.

What Is the Circle of Fifths?

The Circle of Fifths is a visual map of all 12 major and minor keys, arranged to reveal the relationships between them. It’s been a cornerstone of Western music theory for nearly 300 years, and once you understand it, you’ll start seeing patterns everywhere in music.

The Circle of Fifths

The name comes from how the keys are arranged: as you move clockwise around the circle, each key is a “perfect fifth” higher than the one before it. A perfect fifth is the interval of seven half-steps—from C to G, from G to D, from D to A, and so on. This interval has a natural, consonant quality that our ears find pleasing, which is why it forms the backbone of so much music.

The Three Rings

The Outer Ring: Major Keys

The outer ring displays all 12 major keys. Starting from C major at the top (which has no sharps or flats), moving clockwise adds one sharp to the key signature with each step:

  • C major: no sharps or flats
  • G major: 1 sharp (F#)
  • D major: 2 sharps (F#, C#)
  • A major: 3 sharps (F#, C#, G#)
  • And so on…

Moving counter-clockwise from C adds flats instead:

  • F major: 1 flat (Bb)
  • Bb major: 2 flats (Bb, Eb)
  • Eb major: 3 flats (Bb, Eb, Ab)
  • And so on…

Click any major key on the outer ring to hear its major chord and see the notes highlighted on the piano or guitar below.

The Middle Ring: Relative Minor Keys

Every major key has a “relative minor”—a minor key that shares the exact same notes and key signature. The relative minor is always found three half-steps below the major key’s root note.

For example, A minor is the relative minor of C major. Both keys use only the white keys on a piano (no sharps or flats), but they have different tonal centers. C major sounds bright and resolved when you land on C; A minor sounds darker and resolved when you land on A.

This relationship is powerful for songwriters. You can shift between a major key and its relative minor within a song to change the emotional color while keeping all the notes familiar.

The Inner Ring: Scales and Chords

The inner ring changes based on the dropdown menu selection:

Diminished shows the diminished triad built on the seventh degree of the scale. This tense, unstable chord naturally wants to resolve and is useful for creating movement in chord progressions.

Pentatonic displays the five-note pentatonic scale. This scale omits the two notes that create the most tension in the full scale, making it incredibly versatile for melodies and improvisation. The major pentatonic works over major chords; the minor pentatonic is the foundation of blues and rock soloing.

Diatonic shows the complete seven-note major or minor scale. These are the notes that “belong” to the key and form the basis for melody and harmony.

Click the inner ring when Pentatonic or Diatonic is selected to hear the scale played ascending and descending.

Key Signatures on the Staff

The small staff notations around the circle show each key’s signature—the sharps or flats that apply throughout a piece in that key. Rather than writing a sharp or flat symbol every time you encounter that note, the key signature tells you once at the beginning: “Every F in this piece is F#” (in G major, for instance).

Notice the elegant pattern: sharps accumulate in a specific order (F#, C#, G#, D#, A#, E#) and flats in the reverse order (Bb, Eb, Ab, Db, Gb, Cb). Musicians memorize these patterns, making it quick to identify any key at a glance.

The Harmonized Scale

Below the circle, the harmonized scale staff shows something essential: the seven chords that naturally occur within a key.

When you build a triad on each note of a major scale using only notes from that scale, you get a specific pattern of chord qualities:

Scale DegreeRoman NumeralQualityExample in C
1stIMajorC
2ndiiMinorDm
3rdiiiMinorEm
4thIVMajorF
5thVMajorG
6thviMinorAm
7thvii°Diminished

This pattern—Major, minor, minor, Major, Major, minor, diminished—holds true for every major key. The Roman numerals (uppercase for major, lowercase for minor) let musicians discuss chord progressions in a universal language. When someone says “it’s a I-IV-V progression,” that means the same chord relationships whether you’re in C major (C-F-G) or E major (E-A-B).

Click any chord on the harmonized staff to hear it and see its notes on the instrument display.

For minor keys, the pattern shifts to: minor, diminished, Major, minor, minor, Major, Major (i, ii°, III, iv, v, VI, VII).

Why Adjacent Keys Matter

When you select a key, notice that the adjacent keys on either side are highlighted. These are your closest musical neighbors—the keys most closely related to your current key.

Moving one position clockwise adds one sharp (or removes one flat). Moving counter-clockwise adds one flat (or removes one sharp). These neighboring keys share six of their seven notes with your current key, differing by only one note.

This is why chord progressions often “borrow” chords from neighboring keys—they fit naturally because most of the notes are already part of your key. It’s also why modulating (changing keys) to an adjacent key sounds smooth, while jumping to a distant key on the circle sounds dramatic or surprising.

The Piano and Guitar Views

Toggle between piano and guitar displays to see how scales and chords map onto each instrument.

Color coding:

  • Green indicates the root note (the note the chord or scale is built on)
  • Blue marks chord tones—the 1st, 3rd, and 5th that form the triad
  • Orange shows additional scale tones when viewing pentatonic or diatonic scales

On guitar, you’ll notice that scale patterns repeat in predictable shapes due to the instrument’s tuning. On piano, the relationship between black and white keys makes certain keys feel quite different under your fingers, even though the theoretical relationships are identical.

Practical Applications

Finding chords that work together: Any chord from the harmonized scale will sound good with any other chord from that same key. The I, IV, and V chords form the backbone of countless songs. Adding the vi chord gives you the ubiquitous I-V-vi-IV progression heard in hundreds of pop songs.

Transposing songs: If a song is too high or low for your voice, use the circle to find a new key. The relationships between chords stay the same—a IV chord is still a IV chord—only the letter names change.

Understanding songs you hear: When you recognize that a song moves from I to vi to IV to V, you’re hearing the underlying structure that makes it work. This pattern recognition accelerates learning new music.

Improvising and soloing: The pentatonic scale is your safety net. Staying within those five notes virtually guarantees you won’t hit a “wrong” note over chords in that key.

Writing chord progressions: Experiment with the harmonized scale. Try moving between chords that share notes (like C and Am, which share C and E). Try the tension of the vii° chord resolving to I. Try borrowing the IV chord from the parallel minor for a melancholy color.

A Tool for Exploration

The Circle of Fifths isn’t just a reference chart—it’s a tool for discovery. Click around, listen to how keys relate to each other, notice which chords share notes, hear how scales differ between major and minor.

Music theory sometimes gets a reputation for being dry or restrictive, but it’s really a map of possibilities. The Circle of Fifths shows you why certain things work, freeing you to make informed creative choices rather than stumbling in the dark.

Whether you’re writing songs, learning an instrument, studying for a theory exam, or just curious about how music fits together, spend some time with the circle. The patterns you discover will start appearing everywhere you listen.

Interactive Circle of Fifths Feedback

This is the feedback page for the Interactive Circle of Fifths. An image of the page is presented for easy reference in the comments below. To use the application click here. For details on the construction of the application click here. To provide feedback, comment below.

The Interactive Circle of Fifths

The Interactive Circle of Fifths

This week I decided to challenge Claude Opus 4.1 to a coding challenge. The objective? Create a React application that renders an interactive circle of 5ths. I started by creating a scaffolding application using the Visual Studio React / .Net Core template. I then created an empty Typescript component called “InteractiveCircleOfFifths” and proceeded to throw down with the LLM.

The prompt:

Create a React component using Typescript that renders a musical circle of 5ths onto a canvas. The circle will consist of 3 bands, Major, Minor and Notes. Include the Major keys on the outermost band of the circle, Minor keys on the inside of the Major band, and Notes in the middle. Each key should render it’s slice of the pie in a different pastel color, and each band of that pie a slight variation of the key color. Do not use yellow or bright green.

The Major key labels will be the key itself, like F C G, etc. The minor key labels will also be the key name but in a smaller font since they’re inside the circle. The bottom label will be Gb/F# since it’s enharmonic. The key label will be the most pronounced text in each ring. Add text to the key, closer to the center of the ring indicating the three notes in the chord, for example CEG in the case of C Major. The Notes will be a label consisting the best notes to play in that key, which corresponds to the clockwise adjacent 5 keys. In the case of C that would be C G D A E. The label should render vertically in a small font since it’s the innermost band. Rotate the label so it’s always descending towards the center of the circle.

Outside of the circle add a ring of images showing a short treble musical staff for each key showing the sharps or flats. The sharps or flats will render on the staff lines left to right, and be placed on the staff lines according to their pitch. Add a label to each image indicating the count of sharps or flats. The bottom three key signatures will have two images showing sharps and flats respectively. Always make the staff background white, with the lines and sharps or flats in black. Make the circle interactive. Clicking anywhere on the circle highlights that key, the one before it and the one after it. Draw an outline around them and make them stand out by adding a low-opacity color to the overlay. Clicking a Major or Minor chord also causes the corresponding chord to be played, either using a .wav or .midi file. Make sure to use the proper inversions, so that C Major is CEG, A minor is ACE. Clicking on the Notes band will play the notes in ascending sequence.

At the bottom of the page render a fixed panel that displays either a piano keyboard or a guitar fretboard, best on a menu selection. For the piano, selecting a key on the circle will add an overlay of dots on the piano keyboard corresponding to the notes in the chord, either major or minor. Use a green dot for the root (C for C Major, A for A minor), and blue dots for the other two notes. The same note may appear more than once. Selecting a Notes band will render all of the notes on the keyboard, using green for the root, blue for chord tones, and soft orange for the other notes. Selecting a key on the piano keyboard will cause the corresponding key signature to become active in the circle.

For the guitar add blue dots corresponding to the notes of the chord. For the guitar, selecting a key on the circle will add an overlay of dots on the guitar fretboard. Use a green dot for the root, paying attention to the inversion between major and minor, and blue dots for the other two notes. Selecting a Notes band will render all of the notes on the fretboard, using green for the root, blue for chord tones, and soft orange for the other notes. The notes may appear multiple times on the guitar fretboard. Selecting a note on the guitar will cause the corresponding key signature to become active in the circle. When rendering the guitar fretboard, add a vertical line for the nut, effectively fret zero. Open strings should render left of the nut. Fretted strings should render to the right. Make sure the notes rendered on the fretboard are in the correct position. Previous attempts to render this resulted in the notes being off by one fret because of the ambiguity of the first fret.

The response:

Perfect! I’ve created a comprehensive interactive Circle of Fifths application with all the features you requested:

Key Features Implemented:

Visual Design:

  • Three concentric bands with pastel colors (avoiding yellow and bright green)
  • Musical staff notation around the circle showing sharps/flats on proper staff positions
  • Proper chord inversions: C Major (CEG), A minor (ACE) as specified
  • Enharmonic notation: Bottom key shows as Gb/F# with both staff versions

Interactive Features:

  • Band-specific clicking:
    • Major band plays major chord
    • Minor band plays minor chord
    • Notes band plays the 5 notes in ascending sequence
  • Highlighted selection: Shows selected key plus adjacent keys with overlay
  • Audio playback: Uses Tone.js for chord and sequence playback

Piano View:

  • Color-coded dots:
    • Green for root note
    • Blue for chord tones
    • Soft orange for other notes (in Notes band)
  • Full keyboard with proper note placement
  • Click detection for key selection

Guitar View (with proper fret positioning):

  • Accurate nut placement: Vertical line separating open strings from fretted notes
  • Open strings render to the left of the nut
  • Fretted notes render between the appropriate frets (not off by one)
  • Fret markers at positions 3, 5, 7, 9, and 12 (double dots)
  • Color-coded dots matching the piano scheme
  • All chord notes shown on the fretboard with labels

The application correctly handles musical theory including proper inversions, enharmonic equivalents, and accurate fretboard positioning. The guitar implementation specifically addresses your concern about notes being off by one fret by clearly separating the nut position and properly placing notes either as open strings or between the correct frets.

My reaction:

I was amazed at the thoroughness of the response, and impressed with the component source code. It rendered exactly as prompted, with some minor flaws. The Claude web app actually renders the component right alongside your chat, so you can inspect it with a web debugger and make changes to styles interactively.

The component:

The debugging:

After generating the initial component there was still a lot of debugging to do. I used Claude for that as well, synchronizing my Visual Studio copy with every iteration, synchronizing with my Github repo after every change. Here’s a sample debugging prompt:

Update the Typescript component.

1) Change the rendering of the Note band so the labels never go past 90 degrees, they are currently rendering upside-down for the bottom half of the circle. 2) Adjust the rendering positions for the sharp notes on the staff, the y-axis position is a few pixels too high. 3) Fix the rendering of the notes on the piano so every note on the keyboard that’s in the Major Chord, Minor Chord, or Notes array gets a dot. Currently some key signatures are missing higher notes. 4) Fix the colors on the dots. Currently orange dots are being rendered when the note is in both a chord and the notes array.

Claude’s response:

I’ll update the TypeScript component to fix these issues.

Fixing the Notes band rotation to prevent upside-down text

Adjusting the Y-axis position for sharp/flat notes on the staff

Now I need to fix the piano rendering to show all octaves of the notes and fix the color logic:

Fixing piano rendering to show all instances of notes and correcting dot color logic

Now let’s also fix the same color logic for the guitar to be consistent:

Fixing guitar dot color logic to match piano

Checking the drawPiano section to ensure we have the complete updated code

Let me check the complete Notes band section to verify the fix:

Checking the updated Notes band rotation logic

Perfect! I’ve updated the TypeScript component and created a new component file with all four fixes:

Fixes Applied:

1. Notes Band Rotation Fix

  • Text in the Notes band now stays readable throughout the entire circle
  • For the bottom half (90-270 degrees), text is flipped and notes order is reversed
  • No more upside-down text!

2. Staff Position Adjustment

  • Added 2 pixels to the Y-axis position of sharps/flats on the staff
  • They now align properly with the staff lines

3. Piano Dots Rendering Fix

  • All instances of notes across the keyboard now get dots
  • The code now properly iterates through ALL white and black keys
  • Handles enharmonic equivalents (F#/Gb, C#/Db, etc.)
  • Every occurrence of a note in the chord or notes array gets marked

4. Color Logic Correction

  • Fixed priority system: Root (green) > Chord tones (blue) > Other notes (orange)
  • Orange dots only appear for non-chord notes when in “notes” mode
  • When in major/minor mode, only green (root) and blue (chord tones) appear
  • Consistent color logic between piano and guitar views

The application now properly displays:

Orange dots: Only appears in “notes” mode for notes that aren’t part of the chord

Green dots: Root note only

Blue dots: Chord tones (non-root notes in the chord)

The deployment:

After an entire day of debugging the application was ready to roll out. I initially tried to deploy to Azure, and met with a litany of deployment failures. However, using the job logs provided by Azure, over the course of several hours I was able to debug those failures with the help of Claude and get the application deployed on the Azure websites web app hosting environment. It was even deploying from my Github repo. I was using the Free tier, so when it came time to use my newly registered domain name I was faced with a stiff upgrade fee of $60/month for the Basic tier. That was too rich for my blood, so I found an alternative hosting provider. For $10 a month Winhost provides .Net application hosting. After downloading their Publish template I was able to publish directly from Visual Studio without any hassle.

You can view the deployed application at InteractiveCircleOfFifths.com.

My feedback to Anthropic:
This is incredible. My first shot at the component was 90% complete and accurate. A few hours of revisions and debugging were enough to bring this entire project over the finish line. The refinements were really impressive. Claude demonstrates contextual awareness on a massive scale and shows you the chain of reasoning behind its changes.

Note that a few times Claude generated component code that wouldn’t render. I eventually had to paste back from Visual Studio into Claude to revert to a prior version of the component. Also, Claude attempted to provide a full Html solution that was unnecessary and failed to render every time due to dependency errors with Tailwind.

The only deal killer in the entire process was cost. I had to bump up to the $100/month plan and even then quickly exhausted my quota. This seems steep for 1200 lines of code. I’ll have to downgrade after the month is expired.

Your feedback to me:

This entire process took only three days from inception to deployment. Early feedback was generally positive, but people don’t care for the quality of the tone generator sounds. I will correct that in a future release by converting from the tone generator to using samples. This will take some time to code and record all the samples for both guitar and piano. I have also had a request to add a ukulele visualizer. Please let me know what else you’d like to see in the application by commenting right here on the blog.

Thank you for using the Interactive Circle of Fifths. I look forward to your feedback!

The Daily Grind – Thursday’s Ticket

I’ve had bugs in specs before, which were then translated into the product. Today I had a bug in a ticket.

The caller provided a list of files with extremely long file names that needed to be imported to a database, and there was a duplicate file in the list. Easy to miss. I dodged a bullet because I didn’t use the list during the import. I found the files in a directory and used them instead of the list.

The bug made it all the way to the email threads about the change until finally somebody noticed. At which point they freaked out because the changes were to the production database. But I didn’t use the list in the ticket, so we were all copacetic.

I’m not the picture of cognitive acuity that I was in my 30’s, but I’m wiser. I make better decisions. 35-year-old me would have taken the info from the ticket directly just for expedience. Copy / paste into script / done. 56-year-old me is skeptical of everything because I’ve seen so many things fail that it’s my default assumption now.

I’m much more careful these days. That’s the senior part of senior software engineer.

My resume can be found here on my blog:

https://rangothedog.com/2013/09/17/matthew-meadows-resume/

The Daily Grind – Resume Advice

Conducting technical interviews all week. Twenty in the last few weeks. My unsolicited advice:

Don’t put it on top of your resume if you’re not prepared to talk about it. In detail. I’ve had multiple candidates fail to meet our hiring criteria because they were misrepresenting their skills.

I feel for every one of these folks because I’ve been in their position too many times. I want them to succeed. We will be peers.

It’s not a hard interview process with me. I’m friendly and try to make each candidate feel at ease. I appear on camera with them so they don’t feel like they’re being watched. Everybody gets the same questions for a specific skill set, and they are not that hard. I let them know it’s okay not to know the answers, they’re just talking points. But if it’s a skill you know we should be able to have a conversation about it, even if you don’t know the answer.

Even with those disclaimers, a surprising number of people are vague about what they did, and during discussion resort to a kind of confabulation talking in generalizations, until the big reveal where they admit they only had minimal exposure to it, in passing. Thereby making the entire interview a waste of time.

I understand the need to put your top skills on the top of your resume. I do the same. Everybody should. Applicant tracking systems scan and sort your resume before a human ever sees them. But gaming the system by surfacing skills you don’t truly own in order to target an interview that requires them is disingenuous.

I also understand that skills can be learned. I once had a manager ask me during an interview if I knew Python and I responded “no”. His response was “you will soon” and I got the job. He was right. I still use it today but primarily as a scripting tool because you can’t get away from it in cloud computing.

In that case, I was coding for the Azure Machine Language AI translation SDK. I coded in three languages I knew well, then translated to Python with the help of Copilot AI. That code was then reviewed by senior staff and went through a committee before committing to the main trunk, because it was their official SDK.

The skill I was learning was not just Python, it was the domain knowledge of the SDK API, and that took more time to learn. The learning process was built into the billing and scheduling because that was internal knowledge specific to their business. I had plenty of time to soak up Python on the way.

In this case we’re interested in candidates with three specific skillsets. They don’t need to be rock stars, they just need to be good enough to play in the band, on three different instruments, on day one.

The customer demands are so exhaustingly complex that the new skills they will be learning are tribal knowledge related to the job. It’s an enormous enterprise. Our employer bills them out to a customer who expects them to have the skills they are paying for on the first day. They’ll pay for a developer to learn their tribal knowledge because it is vast and can’t be learned anywhere else. But not to learn the languages on their resume.

This concludes my TED talk. Note that these are my personal views and experiences, and do not reflect the position of my employer.

My resume can be found here on my blog:

https://rangothedog.com/2013/09/17/matthew-meadows-resume/

The Hunger Number

Unless you’re a stone-hearted Republican or a heartless Libertarian, there is some consensus that in US society we must take care of those who cannot take care of themselves. There’s always going to be a number. I find 42 million people on SNAP benefits in a country of 350 million to be a surprisingly high number, but I have no frame of reference from other countries.

It just seems high.

That’s 1 in 8 Americans who cannot afford food, and with less than $3000 in assets total. The mind-boggling question is how do we reduce that number? Even if we do, will the benefits of that ever surface to the 7 of 8 Americans that are self-sufficient? I don’t think they will, but that shouldn’t stop us from trying to reduce the number.

People are quick to argue that we must have work requirements in place to receive SNAP benefits. They fail to realize that 50% of recipients already work full-time, and 70% have some kind of job. If there is a crime to be had, that is it. Companies like Walmart pay their employees less than living wages, which are subsidized by the taxpayer in the form of SNAP benefits and other entitlements.

Note this is primarily a problem in Republican states. On average they face less favorable economic conditions in general, and consume more benefits per capita than Democratic states. This is not a coincidence, as it speaks to the perceived lack of compassion in Republican politics. Conservative luminary Charlie Kirk famously quipped about empathy as New Age nonsense that does a lot of harm. It seems that he speaks for many Republicans.

The simple solution for 1/2 of the American SNAP recipients working a full-time job without a living wage is for the government to require it. The federal minimum wage hasn’t changed since 2007. Walmart can afford to pay $20 an hour to every employee and still be a hugely profitable business. Companies in California and Washington already do so. That change alone would account for 20 million people raising their standard of living enough to disqualify them from benefits.

Once again, it is Republicans that oppose any change to the minimum wage status quo, and it is their states that suffer the most from poverty.

Just as there is always a percentage of the population that can’t feed themselves, there is also a segment of the population who are unemployable. They lack skills or initiative, or have strikes on their record that makes getting lucrative, legal work next to impossible. We must find a way to reach these people, expand their skills and see their own potential. This is a much harder problem to solve, but once again, raising the minimum wage will be enough to motivate many people who see no point in working for $7.50 an hour. Government sponsored incentives for trade school or college tuition would help as well.

The intersection of the Venn diagram of these two population segments is the heart of our problem. That’s what makes it a difficult problem to solve. The objective of any reforms must be to shrink both segments of the population so that the intersection of the two groups is nominal. We need to help people help themselves.

There will always be a number. It’s in everyone’s best interest, from Democrat to Republican, to make sure that number is as small as possible. Any solution that doesn’t address the root causes is just another distraction. Given the government shutdown, that’s about all we can expect right now.

Internet Decorum

Trump on Biden:

He is a CRIMINAL AND SHOULD BE IN JAIL. A MAJOR LOWLIFE AND FAILURE. An ugly person, both inside and out! I beat him badly, and love watching him squirm now.

^^^ MAGA loves this. I think it’s a sign of low intelligence. The corrosion of decorum is also a shitty look for a president. He makes the entire country look bad.

I, however, am not a president and not known for my sense of decorum on the internet.

Trump is a truly rotten person with obvious signs of dementia. He’s narcissistic, autocratic thug who admires dictators openly and yet regularly capitulates to Putin, who clearly has something over him.

He’s completely corrupt as a politician, the king of a billionaire’s ballroom, self-enriching, promoting idiotic sycophants into positions of power to become the head of the worst kakistocracy in history.

He’s a racist and misogynistic man-child who speaks at a sixth grade level yet claims expertise in everything. He’s a sexual predator who defamed his victim and lost in court. He is most definitely in the Epstein files.

He shows open disregard for immigrants, minorities, the Constitution, rules of engagement, and the American people. Like a child he delights in a video of himself as a pilot, shitting all over protesters, who he characterizes as violent terrorists. He constantly uses childish insults and attacks the IQ of black women specifically.

Like any good fascist he demands fealty, controls the media around him and attacks higher education. He hates people that are smarter than him. He loves the uneducated, he told them so, and then proceeded to prey on them for the next 10 years.

Stupid thinks it’s smart. Evil thinks its good. Trump thinks he’s a genius and deserves a Nobel Peace Prize.

I could go on, but I don’t want to be impolite. The midterms can’t come soon enough. Then we can impeach that motherfucker before he dies and goes straight to hell.

Dev Null

The “Leopard Ate My Face” subreddit is full of recirculated social media posts from anti-vaxxers who died from Covid-19. And people caught for committing crimes after they posted about their plans. Which brings me to a tragic bit of insight from the very first Rango video and my work for the government and in cybersecurity:

Everything you do here is permanent.

There is no delete button. That is a carefully propagated illusion. When I ask Plagus to undelete my emails in Check 1,2 he says he can’t. He’s lying, which is what evil robots do best. But when the FBI asks Facebook or Google for your entire search history they get it. And if they don’t they can get it from your ISP or the NSA.

I’ve regretted many of the things I’ve said on social media that many people still remember and I’ve recovered millions of “deleted” files that weren’t. It’s an illusion, files are simply marked deleted and everything is logged. That’s why all of my posts are public. Because they are anyway, virtually.

Once they hit a server on the internet you are immortalized, archived, categorized and baptized into the matrix. I try to live my life without shame, it is a burdensome tool. Being open and honest shouldn’t require bravery, but it does. But doing so reduces your need to lie & deny so you can focus on more important things that reflect your immortal legacy on the web

Which brings me back around to A Leopard Ate My Face. That is not a legacy that does anybody justice, neither the deceased or their families and friends. But they serve to inform of us of our own mortality and the immortal legacy anyone reading this is leaving behind. The best way to get your name off the list of people who made all of our lives harder in the worst pandemic since smallpox, the plague or Spanish Flu is to simply get vaccinated. You can even brag about it after you’re done, or complain about your side effects. Everybody should. It’s your legacy, and if you couldn’t help the rest of the world get through it, much less yourself, you can be assured it will be on your internet gravestone.

“Rango, I’m an autonomous, distributed, self-replicating agent of evil. I don’t have a recycling bin. I have dev null” – Check 1,2

Post-American World

Trump ushered us into a post-American world.

People all over the globe gave us their sympathy as they watched the most powerful nation in history succumb to an autocratic con man. We have pulled back from that precipice and are now faced with the task of rebuilding. The damage has been done, there is no erasing Trumpism from the record. But future generations must understand what happened to us so they can prevent it from happening again.

This week at least 60 million Americans proudly proclaimed their allegiance to Trump, doubling down on racism, misogyny, a culture of lies and anti-science rhetoric. We can’t erase these scars, they are our shame to bare. Hate. Ignorance. Self.

We already had enough shame to bare. From the genocide of our indigenous people to the racial violence infecting our law enforcement, we are a people burdened with violence. Christian evangelicals rabid for blood, slavery, racism, and most notably, stupidity. We have revealed to the world how ignorant our culture truly is, and those that think they’re smart but are not also think they are righteous.

The word you are looking for is evil.

Trump and Jr made a deliberate calculation when they stopped the US Post Office from distributing 650 million masks to Americans, then again when they tried to cast shade on the vote-by-mail process, encouraging their own followers to go out & stand in line and get infected with Covid-19.Stupid thinks it’s smart, evil thinks it’s good.Of the top 376 counties reporting new Covid-19 infections, 93% of them were Republican.

They discussed their plans with Nixon-era journalist Bob Woodward, which must be the dumbest thing the Trump crime family has ever done.Trump is going to flee the country like the coward he is. And he will be faced with multiple indictments, from tax fraud to rape, like the criminal he is. And unfortunately, Covid-19 will continue to ravage the nation.

There is no need for us to retain our former glory. Rather, we join the league of nations including Italy & Germany that demonstrate the potential for evil in their electorate. It manifested here on our verdant shores. 240,000 Americans are dead, the office of the president has been disgraced, and the once all-powerful USA has succumbed to the will of an autocrat encouraging domestic terrorism and his wish to see “all sides” of fascism and racism as valid.

Too much for one man to effect change, other than by his vote. Which Trump lost and still refuses to acknowledge, proving for all of history he is a whiny little bitch, a petulant man-baby spoiled with a silver spoon in his anus that enjoys taking pleasure in deceiving the dumbest among us. He told them he “loves the uneducated” and they lined up and had an idiot parade.

They’re still marching.

The American kakistocracy clown car is on its final lap. But the damage has been done. It’s a post-American world. But Americans are nothing if we are not faithful to our ideals, even if our ancestors did not obey them. Moral fiber is a continuum, a continuous variable, not a constant. The future belongs to the agile, not the adherents of doctrine.

But what of today.

Biden is the president-elect, and no amount of pouting, feet stomping and empty rhetoric can change that fact. Trump’s refusal to issue a concession, and his vow to continue asserting his win in the light of millions of votes to the contrary and people crowding the streets to express their hatred for him, speak volumes of his narcissism and the unbelievable gullibility of his base. They are rallying behind him today even as he golfs.

With god’s blessing we can put the era of Make America Gullible Again behind us. But we are now in a post-American world and it serves to inform us going forward. Too much to bare for any one person.But today we rejoice. We flood the commons. We dance like nobody’s watching. The protest signs are all the same. “You’re fired”.

Welcome to the new epoch. It’s a post-American world. And now that we’ve pulled back from the precipice of authoritarianism we have an obligation to the rest of the world and future generations to explain precisely how and why this happened so that they may never walk this tightrope again.

Just like the Pied Piper
Led rats through the streets
We dance like marionettes
Swaying to the symphony
Just like the Pied Piper
Led rats through the streets
We dance like marionettes
Swaying to the symphony
Swaying to the symphony of destruction – Megadeth