Intonation Blues


There are two broad categories of music instruments: fixed intonation and variable intonation. Fixed intonation instruments are keyboards, fretted string instruments-anything where you cannot play out of tune.

Variable intonation instruments require the player to not only master playing the instrument, but also master producing notes, music, that is in tune.

The violoncello, or cello, falls firmly in the variable intonation camp. Playing something, anything, in tune is astonishingly difficult. Over time you develop muscle memory of where a particular note is. Unfortunately, if you don’t pay attention, you may develop muscle memory that is out of tune.

I struggle with maintaining correct intonation. There are two axis for left hand movement on a cello. Across the fingerboard, from one string to another, and up and down the fingerboard to different regions of the strings. The sideways, or horizontal changes are easier for me to maintain good intonation. “Easier” being a relative term. You have to maintain a good hand shape, and move perpendicular to the strings, not slightly diagonal, and you need to be aware that while playing your strings will drift from being in tune. Meaning the note that should be a perfect 5th above or below its neighboring string, may in fact be out of tune, requiring you to adjust ever so slightly to stay in tune.

Vertical movement, or shifting, adds a new layer of complexity to intonation. You can no longer use your left hand thumb as an anchor, you have to move everything, and land on the correct note. In tune. Oh, and the farther from the nut (top of the fingerboard) you get, and the closer to the bridge, the closer the individual notes are to each other. The finger spacing in 1st position is much wider apart than in 4th or 7th position.

Intonation can be altered merely through more or less pressure on your finger. More pressure compresses the flesh on your finger tip, making it wider, altering the pitch.

I’m not trying to make excuses or complain, I’m acknowledging that intonation is a difficult, fundamental skill on the cello. One that requires daily care and feeding.

This summer I’ve been trying to rebuild some of my weaker foundation skills. Playing fast being the principal goal, and intonation being the other goal. A day or two ago I decided to play a one octave scale. Using my tuner, I didn’t allow myself to go past a note, until I could play it in tune. If I missed, I had to start over, or at least start from the previous note again.

A one octave scale employs two strings (setting aside one string scales). Two strings gives you two in tune notes for free, assuming your cello is in tune. Starting a C major scale on the C-string, after ten minutes I still couldn’t play all eight notes in tune, one after the other.

So now I am starting each practice session with 10 minutes of dead slow scale work, aiming to play all eight in a row, in tune. Once I can do the scale ascending, then I’ll add descending to the mix. My goal is twofold. First I want to retrain my fingers where the correct pitch is. Second I want to learn to hear what the correct pitch sounds like. Not “close enough” and not “I’ll fix that later”. Correct or start over.

I resume lessons in about 5-6 weeks. Call it 35 days. I wonder if in 350 minutes of focused practice I can learn to play a scale in 1st position accurately.


§

When you’ve got rid
of all the mosques
But the costs
of life still rise
and you’ve built
your fortressed borders
but the NHS still dies
and the Muslims are all gone
and your town’s a wall of white
but corporate vultures
are still pillaging
every facet of our lives
who will you blame then?
What will you have gained?
A badge for barbarism
against a backdrop of decay

https://mastodon.online/@streetartutopia/116589467147835803


Amaze Amaze Amaze


Andy Weir’s “The Martian” was the first book I ever read twice in a row. Andy Ihnatko recommended it on Twitter (remember when Twitter was good?) and so I checked it out from the library. I could not put it down. And I reread it immediately after finishing it.

“Artemis”, his second book, is good, but it suffers from having to follow “The Martian”.

“Project Hail Mary” is superb. I don’t think it is better or worse than “The Martian”, it is as good in different ways.

The movie version of “The Martian” is one of the better book-to-movie efforts. Like all movies, a certain amount of compression has to happen to fit the book into roughly two hours of movie. It is one of my favorite movies.

I saw “Project Hail Mary” a couple days ago in the theater. It is as good as everyone says. I think the movie is as good a representation of this book as “The Martian” movie was to its book.

In the words of Rocky, amaze amaze amaze.

Tonight while we were having dinner Sibylle showed me on her phone that you can now buy or rent “Project Hail Mary”. Guess what we watched this evening?

For all the space and technology and science in Andy Weir’s books, the humanness of the stories are the real draw. Go see “Project Hail Mary”, or rent it, or buy it, and you too will say amaze, amaze, amaze.


Menu Bar Denizens


From right to left (at the moment, anyway) here are the things in my Menu Bar.

Apple Menu Bar Items

Day Date Time
I have it set to show a three letter abbreviation for the day of the week, and also month. The time is 12h, i.e., AM and PM.

Settings
Standard “control panel” drop down dialog. I don’t think I’ve even modified what appears here.

Wireless
It’s a laptop that is always connected via WiFi. I like that Option-clicking on the icon provides detailed connection information.

Bluetooth
Headphones, AirPods, and keyboards are the devices I connect with over Bluetooth.

Battery
When my battery usage seems to be higher than normal I like that this tool gives you a list of the significant energy users.

Volume Mostly I like that at a glance I know whether or not my speakers are muted.

Time Machine
Once per hour snapshots of my data. Nice.

Focus Mode
I make good use of focus modes. I have a geographic one for my weekly cello lesson. If the day or time of the lesson changes, the focus mode still works. I also have a weekend one that quiets notifications from most apps. I use Apple’s Sleep tracking, which has its mode, and I have one that I turn on when I practice cello to prevent interruptions.

Passwords
I’m all in on the MacOS Passwords app. I used 1Password for years, but the increasing subscription cost and feature creep wore me out.

Application Menu Bar Items

Take Five
Allows me to keep tabs on what is currently playing. Nice that it recognizes YouTube videos, movies, and music.

SpameSieve I started using SpamSieve soon after getting my Titanium PowerBook G4 in 2002. Still use it for my domain email.

Tailscale I have Tailsacle on all my personal computers, and I have those IP addresses in my ssh config with aliases so it is simple to remote into any other computer from the one I’m one. Exit mode is great when traveling to route my traffic through my home connection.

Maestral
A Dropbox GUI replacement. I hard use Dropbox any more. When I do, I use Maestral rather than the device limited official client.

Podman Desktop
An alternative front end to Docker. Typically I only use it for databases when I’m toying around with some project that needs a data store. Often it isn’t even running.

RepoBar
The newest member of my Menu bar is RepoBar. It gives lets me monitor my GitHub repositories quickly and easily.

Even with 15 Menu bar items I still have about an inch of room before things would disappear under the dreaded notch. Should I ever get to that point I’ll look into Bartender or similar to organize the denizens.


Age Gating


I watch a bunch YouTube channels. Everything from sailing to woodworking to flying to programming. Frequently the YouTube algorithm suggests something I find interesting enough to watch, but not interesting enough to add to corpus of data YouTube has about me.

When there is a video or short that I want to look at without being “me”. I copy the link and open a private window and watch it there. This worked famously. Until today. This morning when I tried this trick I was presented with a YouTube sign in screen. Refreshing and trying again didn’t help. Some quick research informed me that YouTube has been rolling out age gating.

(I’m not going to get into the smoke-and-mirrors aspect of “protecting youth by requiring they enter an age”. It is really about tracking.)

Fortunately I collect email addresses. So I dusted off a dormant one and used that to sign into YouTube in another browser. My watching habits are still being tracked, and with some work you could trace your way from the second account back to me.

At least I’m not polluting my primary YouTube feed with one-offs.


Repairing the Ruins: Why AI Cannot Replace Education


For years I have thought that, if I were a teacher, I would allow the use of any source material the student desired, as long as it was attributed fully and correctly. Even before generative AI it was possible to “out source” creative work to some distillation of another’s work. Generative AI merely makes that outsourcing friction-less.

The teacher’s role accordingly becomes more important in the age of AI, not less. A real teacher is not merely a distributor of content. A real teacher is an experienced guide in inquiry: someone who knows what the student has not yet seen, what distinctions must be made, what confusion needs exposing, and what question should come next. The best classroom is not a transfer of information from one container to another. It is a living act of thought. That is why seminar, disputation, laboratory, tutorial and serious conversation retain their force even when information itself becomes cheap.


Jujutsu History Template


Jujutsu Version Control

Recently I’ve been using Jujutsu or jj for version control. It is, in effect, an alternate front-end to Git. There are any number of articles, tutorials and other online resources that can explain the finer details.

One feature I’ve been exploring more lately is Jujutsu’s ability to use templates to control how output is presented.

Compact history

I like a one-line history. jj provides that ability, but I was unhappy with the column order. Templates to the rescue. The following template shows the change id, then the commit id, the date and time, the author, and finally the description.

For the date and time I like to use the .ago() option to get relative time offsets. However the width of that information is variable, which ruins a nice table-like appearance. So I’ve opted for a 12-character format with a 24 hour clock.

The author on all of my own repositories is me, so having my name displayed on each line seems silly. The template compares the author email on the commit to my email address, and only displays the name if the two are different. Nice.

Here’s the template:

 
history = ["log", "-T", '''
  change_id.shortest(12)
  ++ " " ++ commit_id.shortest(12)
  ++ " " ++ committer.timestamp().format("%y-%m-%d %H:%M")
  ++ if(author.email() != "mark@zanshin.net",
      " " ++ author.email().local(),
      "",
    )
  ++ " " ++ if(description,
      description.first_line(),
      label("hint", "(no description set)"),
    )
''']

Put that into the [aliases] section of your configuration TOML. I have a bash alias setup to trigger this template. The results look like this:

Image of formatted jj log output:


Rust Language Immersion Course


Last November someone I follow on Mastodon posted about taking a week-long Rust programming course that used the Crafting Interpreters book as the project. At the I wished I could join in the fun.

A couple weeks ago she posted that the course was being offered again, for the last time. After thinking about it for a couple days I decided to sign up. It’s a five day course, Monday-Friday, from 9:30 am - 5:30 pm. The bulk of the time is spent crafting a rusty interpreter. The day starts with an overview of the next challenge in the book, and some ideas on how to best use Rust to solve them. Periodically through the day, there are more “lectures”.

I have definitely been immersed. I’m typically up by 6 or 6:30 am, so by the time the course day ends at 5:30 pm, I’ve put in a good 10 hours of work. I end up spending a couple more hours in the evening. I haven’t done this much focused programming in a long time.

Yesterday I spent the day creating the Abstract Syntax Tree (AST) portion of the project. Then in the evening I re-did most of it. My programming roots are procedural. The first dozen or so years of my career were spent writing COBOL. I’ve worked in Forte TOOL (a defunct 4Gl), and a smattering of scripting languages.

Where I am lacking is knowing about the helpers and syntactic sugar Rust provides. Wrapping my head around traits, or enums has taken some effort. My brute-force struct-for-every-statement approach worked, but it had far too much boilerplate code. Forcing my self to make use of enums and iterators made the code far more compact, and ultimately better.

That I have been programming for more then 45 years and I am still learning new tricks, new languages, and new ways to do things, is amazing. I was a mediocre student all through school. If you had told me back then that I would delight in learning new things, even esoteric things that I won’t ever use, for the joy of it, I wouldn’t have believed you.

I have book from the 1990s called “Thinking Body, Dancing Mind” (I think that’s the title). Being able to immerse myself in a week-long course, writing a programming language interpreter, in Rust, for fun is most certainly a case of dancing mind.


49 Years and Still Operating


The Voyager spacecraft are incredible. Nearly 49 years after launch and they are still functioning and still transmitting data. Simply astonishing engineering.


Crusty Interpreter


Several years ago I discovered Writing an Interpreter in Go and the sequel Writing a Compiler in Go, by Thorsten Ball. I managed to get most of the way through the first book. Thorsten did a superb job of explaining the concepts behind tokens, lexers, and parsing.

Several weeks ago Lindsey Kuper (@lindsey@resurse.social) talked about a week long class in creating an interpreter in Rust. The road map for this is Crafting Interpreters by Robert Nystrom.

A week or so ago, when she reposted a message from the creator and teacher behind the “Crusty Interpreter” course, I really wanted to take it. I am fascinated by Rust as a programming language, and I’m equally fascinated by interpreters and compilers. After pondering it for a while I decided to sign up.

Crusty Interpreter is a week-long, immersion style course. The short description for the course:

Challenge yourself by implementing an interpreter for a programming language that you don’t know (Lox) in a programming language that you might not know (Rust) from a book that uses a programming language that a lot of people used to know (Java).

Sounds like a blast. I didn’t take the operating systems course in college, so this is a change to catch up.

I likely won’t blog much about it during the week, but I hope to recap it once the course is over. Lindsey wrote about her experience in the course.