The Daily Parker

Politics, Weather, Photography, and the Dog

Globe Life Park, Texas

Friday night I got to my 29th (out of 32 planned) baseball park: Globe Life Park in Arlington, Texas. I didn't realize until I got there that they're tearing it down at the end of this season. (That might affect the Geas if I don't get to both Toronto and St. Louis this season.)

It was too busy at the start of the game to get the front-gate photo I always try for. But here's the view from my seat:

And the whole park:

Things didn't go well for the (then) last-place Rangers. Their in-state division rivals the Astros beat them 7-2.

But that didn't bother my neighbor, 4-year-old Leilee. She spent a good bit of the game figuring out, through trial and error, how to use binoculars:

It was a decent park, and we had really good seats as you can see. But hey, American League, right? And next year will be truly horrifying: the new Globe Life Field will have artificial grass. Sacrilege.

T is for Tritone

Blogging A to ZToday's Blogging A-to-Z challenge post sits right in the middle of everything.

The tritone is the interval between the perfect 4th and the perfect 5th. Depending on which direction you're going, it's either an augmented 4th or a diminished 5th. And it's always going somewhere.

In the C major scale, the natural tritone is between F and B (where it's an augmented 4th) or B and F (where it's a diminished 5th). B, remember, is the leading tone in the key of C, so it really, really wants to resolve to C. The F (subdominant) wants to resolve to E (the mediant). Therefore, if you have an augmented 4th, it wants to resolve to a minor 6th (which is also the tonic chord in first inverstion):

And if it's a diminished 5th, it resolves to the major 3rd:

Remember ethnic 6th chords? Tritones all the way down. Even in a basic I-V7-I progression, the V7 has the tonic chord's tritone in it:

The tritone is between the first and second lines from the top. Just as in the very first example on this post.

Quick links

The day after a 3-day, 3-flight weekend doesn't usually make it into the top-10 productive days of my life. Like today for instance.

So here are some things I'm too lazy to write more about today:

Now, to write tomorrow's A-to-Z entry...

S is for Syncopation

Blogging A to ZThe Blogging A-to-Z challenge will get a little funky today as we look at syncopation, which is nothing more than an unexpected rhythm.

Here's a simple example. Take this clunky melody:

Now let's syncopate it a little, by shifting some of the notes off the beat:

Instead of hitting 1, 2, 3, 4, 1, 2, 3, 4, now it hits 1, and, and, and, 2, and, and, 4. It's harder to dance to but more interesting.

More examples? How about Mozart's Symphony #40, third movement:

Or the Rolling Stones? Beethoven? Scott Joplin?

Syncopation is every——where!

Agents of what, exactly?

Most members of the Writers Guild of America (WGA) last week fired their agents because of the intrusion of finance into their business. Large agencies, some owned by finance companies and no longer partnerships, no longer appear to represent the writers they claim to represent, as the agents have interests on both sides of many deals.

The Association of Talent Agents (ATA) has responded to all these principals firing their agents with questionable logic:

For those of you who haven’t been following, the WGA (for which, until recently, my husband worked as a magazine editor) wants the talent agencies to sign a new code of conduct to ensure the agents do their jobs — getting their clients the best deals possible — and that’s it. No using clients as part of an overall package deal or working with affiliated production companies; too often, the WGA contends, these practices result in writers getting shafted.

The ATA says the agencies will not be signing any such code because the WGA is not the boss of them and writers actually benefit from packaging, which has been going on for years.

So the WGA instructed its members to fire their agents, which almost all of them have, and announced it is suing the four major talent agencies.

In response, the ATA accused the WGA of trying to throw Hollywood into “predetermined chaos” and instructed its members to keep a list of any writers trying to get work without using an agent because, according to ATA reps, this is illegal.

So just to recap: Writers are unhappy with how major talent agencies have been repping them. When confronted with this, the agents refused to make any changes, so the writers fired them. Now the agencies are saying the writers cannot do this because, according to them, writers are legally bound to be represented by people who they believe are shafting them.

Even by Hollywood standards, this is Absolutely Insane.

It's going to be interesting as lawyers and accountants start representing writers.

Note: I'm still going through photos from this weekend, so I'll have the official Park 29 and Park 30 postings up today or tomorrow.

R is for Rondo

Blogging A to ZToday's Blogging A-to-Z challenge post will take a look at common musical forms.

We've already seen some examples of common musical forms, even though I didn't call them out: the canon and the fugue. Both are imitative forms, though as you've seen the fugue is far more complex than the canon. "Row Row Row Your Boat" is a canon (but, of course, someone made a fugue out of it).

When we talk about other forms, we usually note large sections of music with letters. So a form of, say, A-B-A means that you have a theme first, then another theme, and then the first theme comes back.

The basic musical forms all show up in symphonies written between about 1760 and 1830, in the Classical and Early Romantic periods. Haydn codified the symphonic template, Mozart perfected it, and Beethoven took it up a notch.

The first movement of a Classical symphony usually uses sonata allegro form. It starts with an optional introduction, progresses to exposition, through development, then a recapitulation, and concludes with an optional coda. In short, A-B-A1, because the recapitulation usually doesn't strictly repeat the exposition.

The first movement of Mozart's Symphony #25 demonstrates this beautifully. The exposition starts immediately, stating the bold g-minor theme in several forms for the first 90 seconds or so. Development ensues, taking us around several related keys and themes (including the primary theme). The recap begins at 5:05, once he's brought it back to g minor. Note, also, that Mozart wrote this at 17.

Second and fourth movements often use rondo form, which is A-B-A, A-B-A-C-A, or A-B-A-C-A-B-A. The A just keeps coming around, you see. Here's Haydn's 49th symphony, second movement. It deviates from a typical classical symphony in that the second movement is fast, not slow as was common in the period. But it's a complete A-B-A1-C-A2 rondo, as well as an excellent example of the Sturm und Drang ("storm and stress") period in the late 1770s-early 1780s.

Third movements generally follow the minuet and trio form, which uses 3/4 time and a simple A-B-A or A-B-C-A form. Example: Brahms' Symphony #3, third movement. Even though Brahms wrote this decades after Mozart and Haydn had died, it still maintains the minuet and trio form—though with lusher orchestration and harmonies than either classical composer would have used.

Listen for these forms the next time you hear a symphony. They're in there.

Park #29

My official post, with photos, will appear Sunday. I just want to put a marker in the sand that tonight I went to what passed for a baseball game at Globe Life Park in Arlington, Texas. I didn't realize that they're tearing the park down after this season because it's—wait for it—25 years old.

Really? Twenty-five years? You know Wrigley and Fenway are both over 100, right?

Whatever. This was Park #29, and apparently the Geas won't end this year because I'll have to go to Globe Life Field next year. Or maybe that will just be a coda. (You know, I've been to DFW airport about 40 times and only left it twice? Maybe I should explore.)

Anyway, photos and more commentary Sunday. Tomorrow: 4/20 in Denver.

Barr's press conference, re-imagined

The always-incisive Alexandra Petri provides a more honest view of AG William Barr's press conference yesterday:

Hello, everyone. I am here to repeat the words “no collusion” as many times as I can without sounding suspicious, but first, I would like to thank Rod Rosenstein. He is here standing behind me. He had plans to step back from public service before I came along and asked him to assist me. Then again, some would argue that by assisting me, he did not perform a public service. Anyway, he is here.

I would also like to thank Robert Mueller for making this report for me to redact. I feel like it is a joint creation between the two of us. He is not standing here with me today. Instead, there is a bearded man who, no doubt, is familiar to you all. I will certainly not introduce him at any point. I will leave his identity to your imagination! Worst-case scenario, this will just accustom you to seeing strange facts without context, something that will help you as you consume the report!

The good news is that, although the Russian government did interfere in the 2016 election with hacking and disinformation campaigns, it did not do so literally at the behest of the Trump campaign, in my opinion. Was that the opinion of the Mueller team? Who can say? But if it wasn’t, it should have been, I think. Make no mistake, Russia did interfere to help him, but this effort was just sort of a fun lagniappe. Nobody asked for it.

The Post has the full (redacted) Mueller report online. I'll be reading it on a plane today.

Q is for Quaver

Blogging A to ZToday's Blogging A-to-Z challenge post explains how musicians keep time.

Through all the examples I've posted this month, you may have noticed that a note's stem has a relationship to how long the note sounds. They do. Starting with a whole note (open, with no stem), each change to the stem reduces the length of the note by half. This also works when you start with a whole rest, except a rest means "don't do anything here." Example:

(In the UK, those notes are called whole, half, quarter, quaver, semiquaver, hemisemiquaver, and hemisemidemiquaver. Don't ask me why.)

You can also add a dot after a note, which increases the length by 50%. The dotted quarter notes in this example are the same as three 8th notes:

On the same subject, let me draw your attention to the numbers (and sometimes letters) that follow the key signature in a staff. That guy, called the time signature, tells performers how to count.

The most common time signature is 4/4. That means there are 4 beats in each measure (the top number) and the quarter note gets one beat. It's so common that it can also be represented by the letter C, as in the top example above. Sometimes you'll see a C with a line through it. This is called cut time, or 2/2, in which there are two half-note beats per measure.

The second example above shows 6/8 time, in which there are six eighth notes to each measure. Typically musicians count 6/8 as two beats per measure, with the dotted quarter getting the beat, so it feels like a march.

The time signature 3/4 has the same number of eighth notes per measure, but since the quarter note gets the count, there are three quarter-note beats per measure. This is the time signature for waltzes.

Almost any combination of beats and notes can form a time signature. I've seen 7/4, 3/16, 1/1, 9/32...literally anything as long as the bottom number is divisible by 2 (or is 1). That said, the most common time signatures by far are 4/4, 6/8, 3/4, and 2/2.

And here, for your listening enjoyment, is a piece that flouts all the rules and somehow works—as humor:

I hate Scala

"It is no one's right to despise another. It is a hard-won privilege over long experience."—Isaac Asimov, "C-Chute"

For the past three months, I've worked with a programming language called Scala. When I started with it, I thought it would present a challenge to learn, but ultimately it would be worth it. Scala is derived from Java, which in turn is a C-based language. C#, my primary language of the last 18 years, is also a C-based language. 

So I analogized thus: C# : Java :: Spanish : Italian; therefore C# : Scala :: Spanish : Neapolitan Italian. So as with my decent Spanish skills making it relatively easy to navigate Italy, and my decent C# skills making it relatively easy to navigate Java, I expected Scala to be just a dialect I could pick up.

Wow, was I wrong. After three months, I have a better analogy: C# : Scala :: English : Cockney Rhyming Slang. Or perhaps Jive. Or maybe even, C# : Scala :: German : Yiddish. That's right: I submit that Scala is a creole, probably of Java and Haskell.

Let me explain.

Most C-based languages use similar words to express similar concepts. In Java, C#, and other C-based languages, an instance of a class is an object. Classes can have instance and static members. If you have a list of cases to switch between, you switch...case over them. And on and on.

Scala has a thing called a class, a thing called an object, a thing called a case class, and a thing called a match. I'll leave discovering their meanings as an exercise for the reader. Hint: only one of the four works the same way as in the other related languages. In other words, Scala bases itself on one language, but changes so many things that the language is incomprehensible to most people without a lot of study.

Further, though Scala comes from object-oriented Java, and while it can work in an object-oriented fashion with a lot of coercion, 

As in Yiddish or Gullah, while you can see the relationship from the creole back to the dominant language, no deductive process will get you from the dominant to the creole. "Answer the dog," a perfectly valid way to say "pick up the phone" in Cockney (dog <- dog bone <- rhymes with phone), makes no sense to anyone outside the East End. Nor does the phrase "ich hab' in bodereim," which translates directly from Yiddish as "I have (it) in the bathtub," but really means "fuck it." The fact that Yiddish uses the Hebrew alphabet to express a Germanic creole only adds to its incomprehensibility to outsiders.

These are features, not bugs, of Jive, Gullah, Yiddish, and other creoles and slangs. They take words from the dominant language, mix them with a bunch of other languages, and survive in part as a way to distinguish the in-group from the out-group, where the out-group are the larger culture's dominant class.

I submit that Scala fits this profile.

Scala comes from academic computing, and its creator, German computer scientist Martin Odersky, maintains tight control over the language definition. Fast adoption was never his goal; nor, I think, was producing commercial software. He wanted to solve certain programming problems that current computer science thinking worries about. That it elevates a densely mathematical model of software design into commercial development is incidental, but it does increase the barriers to entry into the profession, so...maybe that's also a feature rather than a bug?

Scala isn't a bad language. It has some benefits over other languages. First, Scala encourages you to create immutable objects, meaning once an object has a value, that value can never change. This prevents threading issues, where one part of the program creates an object and another part changes the object such that the first part gets totally confused. Other languages, like C#, require developers to put guardrails around parts of the code to prevent that from happening. If all of your objects are immutable, however, you don't need those guardrails.

A consequence of this, however, is that some really simple operations in C# become excruciating in Scala. Want to create a list of things that change state when they encounter other things? Oh, no, no, no! Changing state is bad! Your two-line snippet that flips a bit on some objects in a list should instead be 12 lines of code (16 if it's readable) that create two copies of every object in your list through a function that operates on the list. I mean, sure, that's one way to do it, I suppose...but it seems more like an interview question with an arbitrary design constraint than a way to solve a real problem.

Second, this same characteristic makes the language very, very scaleable, right out of the box. That is actually the point: "Scala" is a portmanteau of "Scaleable" and "Language," after all. That said, C# is scaleable enough to run XBox, NBC.com, Office Online, and dozens of other sites with millions of concurrent users, so Scala doesn't exactly have a monopoly on this.

Not to mention, Scala gives frustrated Haskell programmers a way to show off their functional-programming and code-golf skills in a commercial environment. Note that this makes life a lot harder for people who didn't come from an academic background, as the code these people write in Scala is just as incomprehensible to newbies as Haskell is to everyone else.

All of this is fine, but I have developed commercial software for 25 years, and rarely have I encountered a mainstream language as ill-suited to the task of producing a working product in a reasonable time frame than this one. Because the problem that I want to solve, as a grizzled veteran of this industry, is how I can do my job effectively. Scala is making that much more difficult than any language I have ever dealt with. (There are a number of other factors in my current role making it difficult to do my job, but that is not the point of this post.)

Maybe I'm just old. Maybe I have thought about software in terms of objects with behavior and data for so long that thinking about it in terms of functions that operate over data just doesn't penetrate. Maybe I've been doing this job long enough to see functional programming as the pendulum swinging back to the 1980s and early 1990s, when the implementationists ruled the day, and not wanting to go back to those dark ages. (That's another post, soon.)

This cri de coeur aside, I'll continue learning Scala, and continue doing my job. I just really, really wish it had fewer barriers to success.