All posts by Andrew Arensburger

Guilt

Somewhere, I ran across the following story:

Fred was the most hated person in the Foreign Legion. Everyone wanted him dead. One day, Fred was assigned to go on a mission alone in the middle of the desert. At midnight the night before, Alex put poison in Fred’s canteen. An hour later, unaware of this, Bert poured out the contents of Fred’s canteen and filled it with sand. An hour later, also unaware of what the others were doing, Charlie poked a hole in the bottom of the canteen, so that the contents would pour out. Thus, poor despised Fred died in the desert the next day.

So the question is: who, if anyone, is guilty of killing Fred? It’s tempting to say Charlie, simply because he came last, but really, all three of Alex, Bert, and Charlie tried to kill Fred, and took steps to kill him. The only reason to let Alex off the hook is that Bert’s approach undid what Alex did, and Charlie’s preferred method undid Bert’s. But remove any one, or any two of them, and Fred still winds up dead. At best, Alex and Bert would be guilty only of attempted murder.

What if they had all poisoned the canteen? It would be a lot easier to argue that all of them are to blame. If only Alex were put on trial, it would be fairly easy to secure a conviction. And even if Bert’s and Charlie’s actions came to light later, few people would feel that Alex was wrongly convicted. Same for the other two.

The reason I bring this up is that the defense in Derek Chauvin’s trial for the murder of George Floyd has claimed that drugs in Floyd’s system are to blame for his death, not the fact that Chauvin knelt on Floyd’s neck for over eight minutes.

I trust you see the point: even if Floyd was incapacitated or in diminished health because of drugs, or had a heart attack, or something like that, what Chauvin did could have killed pretty much anyone. If his knee wasn’t the cause of death, that’s only on a technicality. If the situation were repeated, there is no reason to think that a similar technicality would let him off the hook, and every reason to believe that his actions would be similar.

On the Filibuster

The usual argument for the filibuster is that it prevents the majority from simply steamrolling its agenda: if every piece of legislation only needed a simple majority to pass, then in the current Senate, 51 Democrats (including VP Harris) can, if they’re united, do anything they want, and ignore the 50 Republicans. Clearly, that’s not ideal. There should to be a mechanism to prevent that, at least in important cases.

At the same time, Americans elect Senators to actually get stuff done. If Americans elect 59 Senators from party A, and 41 from party B, it’s because they want to advance party A’s agenda, and have it completely thwarted by party B is also not ideal.

But that’s what we have now: Senators don’t need to do a talking filibuster like Jimmy Stewart in Mr. Smith Goes to Washington. All they need to do is send email announcing their intention to filibuster a bill, and that bill effectively requires a 60-vote supermajority to pass. The Constitution reserves supermajority requirements for extreme situation, because the founders realized the need to balance fairness with getting stuff done; there’s a reason they switched from the Articles of Confederation to the federal constitution.

If, as is often claimed, the purpose of the filibuster is to promote compromise, then a better way to reform the Senate rules might be to guarantee the minority party(ies) certain rights, like being able to propose amendments, or introduce some legislation that the majority party doesn’t even want to consider. I’m open to the idea that it might be a good idea to preserve the talking filibuster, for those cases where one or a handful of Senators feel so strongly about an issue that they’re willing to pay a personal cost to block it. But blocking legislation shouldn’t be routine.

Ending the Tyranny of Biannual Time Changes

Like most people, I hate changing the clocks twice a year, to say nothing of having to get up an hour early for Daylight Saving Time. So naturally my ears perked up when I heard about Senate bill 623, which would make Daylight Saving Time permanent. We’re still switching to DST tomorrow, but if this passes, we won’t switch again this fall. Or next spring.

The bill was introduced by Marco Rubio (R-FL), and I can’ tell you how weird it feels to be on his side, but so far, I can’t see anything wrong with the bill. Well, there’s the fact that the text of the bill is not yet available. And the title is “A bill to make daylight saving time permanent, and for other purposes.” Without the text, we won’t know what those “other purposes” might be.

On the other hand, the bill has several Democratic cosponsors, so maybe I’m worried over nothing.

Meanwhile, IndyStar reminds us that Rubio and others have introduced this or similar bills in the past, and they have yet to pass. But still, call your senators and tell them you support this bill and doing away with changing clocks all the time.

Staying on Top of the Wave

I used to work for a computer researcher who didn’t actually use computers. Academics can sometimes be quirky, you know? He just had ~/.forward set up to print every message (on paper) as it came in. One problem with this setup was that people would send him résumés as PostScript (and later PDF) attachments. The printing system would print these out as plain text and use up all of the paper in the printer if someone didn’t catch it.

This raised a question for someone:


and I realized that the nightmare that printing under Unix is rather less nightmarish these days. The ubiquity of PDF means that I don’t really have to worry about converting files to the proper device-dependent format. Line printers are gone, so I don’t have to worry about the difference between printing text and printing graphics. Unicode means I don’t have to worry about whether a document is in English, French, or Russian.

Of course, all of this convenience comes at a cost. For instance, Unicode is a complex soup of characters, codepoints, encodings, and normal forms. When I was learning C, way back when, in between mammoth hunts and rubbing sticks together to make fire, everything was US English, in ASCII, and a letter was a character was a byte was an octet.

This may have been limited, but at least it made things easy to learn. Which made me wonder about people wading into the field these days: how do they learn, when even a simple “Hello world” program has all this complexity behind it?

There are two answers to that: in some cases, say Unity or Electron, tutorials will typically give you a bunch of standard scaffolding — headers, includes, starter classes — and say “Don’t worry about all that for now; we’ll cover it later.” In other cases, say, Python, a lot of the complexity is optional enough that it doesn’t need to be shown to the beginner.

XKCD cartoon of a jumble of blocks, representing software packages, piled precariously upon each other, as in a dependency diagram. A caption at the top describes the delicate edifice as "All modern digital infrastructure". An arrow points to a lone package that nearly everything depends on, off in a corner; the label says, "A project some random person in Nebraska has been thanklessly maintaining since 2003".

New people are coming in at the top of this graph. I came in a bit further down, but my entry point was already on top of a bunch of existing work by other people. After all, I got to use (complicated) operating systems instead of running code on bare metal, text editors rather than toggling my code in on the front panel, and much besides. People starting out today are wading in in the middle, just like I did, just at a different point.

And this is what we humans do. When Isaac Newton talked about standing on the shoulders of giants, this is what he was talking about. We build tools using existing tools, and then use those new tools to build newer tools, changing the world as we go.

Of course, new technology can also disrupt and undermine the old way of doing things, and there’s a persistent fear of AI taking away jobs that used to be done by humans, just as automation has. Just as dockworkers now use forklifts to load cargo rather than carry it themselves, companies now use chatbots to handle the front line of customer support. Machines have largely supplanted travel agents, and have even started writing press releases. What’s a poor meat puppet to do?

I keep thinking of how longshoremen became forklift operators: when new technology comes along, we still need to control it, steer it, decide what it ought to do. I used to install Unix on individual computers from CD, one at a time. These days, I use tools like Terraform and Puppet to orchestrate dozens or hundreds of machines. And I think that’s where the challenge is going to be in the future: staying on top of new technology and deciding what to do with it.

“The Filibuster Should Be Painful”

Joe Manchin appeared on Fox News Sunday and said he supports the filibuster, but it should come at a cost:

“The filibuster should be painful, it really should be painful and we’ve made it more comfortable over the years,” he said on “Fox News Sunday.” “Maybe it has to be more painful.”

“If you want to make it a little bit more painful, make him stand there and talk,” Manchin said. “I’m willing to look at any way we can, but I’m not willing to take away the involvement of the minority.”

Which echoes something I’ve been thinking for some time.

Yes, the filibuster is a hack. But what it does is give the minority — sometimes a minority of one — the power to block legislation. And yes, some legislation, even legislation with majority support, is bad and needs to be blocked. I’m aware that this paragraph would sound a lot better if it weren’t for the fact that the second most famous filibuster (after James Stewart’s) is Strom Thurmond’s filibuster of the Civil Rights Act. But let’s posit for the sake of argument that some legislation is bad and ought to be stopped.

The talking filibuster does that. But at some point in the 1960s, the Senate started switching to the “procedural filibuster”. In contrast to the stay-up-all-night-talking-without-a-bathroom-break, or “talking” filibuster, the procedural one basically means role-playing one: one Senator announces their intention to filibuster, the others roll for WIS take a vote on whether to make the first Senator shut up, and then either stop debate as if the clock had been run out, or tell the Senator‘s character to put a sock in it and take a vote on the original bill.

The problem with this is that it’s too easy: any contrarian dickbag can derail the Senate with no cost to themselves. That’s like having the emergency brake on a train accessible to toddlers, with no fines or repercussions for misusing it: unless you live in a community of saints, that train would never go anywhere. And so it is with the Senate these days. So returning to the talking filibuster would help ensure that legislation is blocked only when the minority feels very strongly about it; strongly enough to stay up all night talking without a break.

At the same time, as I said, it’s a hack. In particular, the talking filibuster would tend to favor younger, healthier senators. Perhaps a different solution could be worked out, like maybe Senators are given one filibuster coupon at the beginning of each session, and once it’s used up, it’s gone. Or maybe they can get one super-vote that’s worth ten regular votes, but then they forfeit the next ten votes. These are just off the top of my head, and I’m sure they can be abused as well. But I would like to stop letting every dumbass reactionary block legislation, so things can actually move forward.

Graph listing the US presidential elections from 1904 to 2020
When Your Debate Opponents Argue Your Point

While researching arguments for and against the National Popular Vote, I ran across the site Keep Our 50 States, which tries to argue for keeping the Electoral College, and, um, it doesn’t do a very good job of it.

For instance, the “The Issue” page shows this Mike Lester cartoon:

I’m not sure what this is supposed to convey. That California’s 55 Electoral Votes are neatly balanced by… New York’s 29? Is it because they’re both reliably-Democratic states? So shouldn’t Texas be in there as well? Or are it and Florida lumped in with the “flyover states”? This is very confusing.

Speaking of confusing graphics, the same page has this chart:

Graph listing the US presidential elections from 1904 to 2020

At first blush, this appears to be the worst argument ever devised for the Electoral College. Saying “the Electoral College is fair because it elects equal numbers of Republicans and Democrats” is like saying “this judge is fair because he convicts half of the defendants who come before him, and acquits half”. You can’t know whether the judge is fair until you know how many of his defendants are actually guilty (maybe 90% are, and he lets a lot of guilty people go free; or maybe only 10% are, and he wrongly convicts a lot of people who come before him. Likewise, we can’t judge whether the Electoral College is fair until we know what the outcome of an election is “supposed” to be.

And, of course, that goes to the heart of the matter. In a democracy, we’re used to the winner of the popular vote winning the election. That’s how it works for governors, senators, mayors, and pretty much every post except president. So the argument above is remarkably wrong.

But beyond that, what amazes me is this: the person who designed the graphic had one job: fit thirty data points into three columns. But apparently this Einstein divided 30 by 10, somehow got 9, and then tried to shoehorn the remaining three entries on the sides.

I’m open to debate, and I don’t mind having my mind changed. But please, try to do better than this.

Republicans Voting Against Their Interests Again

Law & Crime is reporting that the North Dakota Senate has passed SB 2271, which would block the release of presidential vote totals in the state until after the Electoral College votes.

It’s ironic that Republicans, who were crying for election transparency in the 2020 election, are pushing this kind of anti-transparency bill. But it makes sense:

Law & Crime says that “The bill is designed to prevent implementation of the national popular vote compact – a multi-state agreement aimed at circumventing the Electoral College.” and other sites, including right-leaning ones, agree.

It’s also ironic because North Dakota is a “safe” state: Democrats know they can’t win it in a presidential election, and Republicans know they can’t lose it, so neither party bothers campaigning there. The Electoral College actually harms Republicans in North Dakota by encouraging campaigns to ignore their state-specific issues. If North Dakotans want the same thing as Floridians or Pennsylvanians, great. If not, they’re out of luck.

But this seems to be another case of Republicans acting against their interests purely to Own the Libs.

What the Hell Is Up With MacOS Periodic Jobs?

Yesterday, Feb. 25 at 13:19, my Mac ran periodic monthly. I thought it odd that this would run on the 25th rather than the 1st of the month, and in the afternoon rather than late at night, so I dug a little deeper.

It looks as though Apple now deprecates cron in favor of launchd agents. Okay, fine. Yeah, I see that there are three periodic jobs:

> launchctl list | grep periodic-
-	-9	com.apple.periodic-monthly
13804	0	com.apple.periodic-weekly
-	-9	com.apple.periodic-daily

launchctl print system/com.apple.periodic-monthly shows details about the monthly job:

event triggers = {
        com.apple.periodic-monthly => {
                keepalive = 0
                service = com.apple.periodic-monthly
                ...
                descriptor = {
                        "Repeating" => true
                        "GracePeriod" => 14400
                        "Interval" => 2629746
                        ...

Nowhere does it say to run this job at a particular time on a particular day. Rather, as far as I can tell, it wants to run every 2629746 seconds. What’s that?

launchctl print system/com.apple.periodic-daily shows

"Interval" => 86400

which makes perfect sense, since 86400 is 60 × 60 × 24, the number of seconds in a day. And com.apple.periodic-weekly runs every 60 × 60 × 24 × 7 = 604800 seconds.

But 2629746, the monthly interval, is 43829.1 minutes = 730.485 hours = 30.4368 days. What the hell is that?

I note that the average month length in a year is 365/12 = 30.4166 days, which is close. And what with leap years, the average year is really 365.25 days long; 365.25/12 = 30.4375, which is close to the periodic-monthly interval. So maybe Apple took the length of the average century, when all leap days, century non-leap days, and millennial non-non-leap days are taken into account, and divided by the number of months in a century? Or something else? Who knows?

Maybe Apple has decided that it doesn’t matter when accounting and log-rotation jobs run, and that it’s okay for them to drift. Fine. Except that the simplest and easiest documented way of adding your own periodic jobs is to add a file to /etc/periodic/daily, /etc/periodic/weekly, or /etc/periodic/monthly. And people might want resource-intensive cleanup jobs to run in the middle of the night, and for reports to run on the first of the month. So what the hell, Apple?

Grand Reopening

A while back, I figured my site needed a bit of a facelift. So here it is. I’ve moved my posts from Epsilon Clue to here, and I plan on posting at ooblick.com rather than there.

Obviously, any time you move from one site to another like this, there’s the risk that people won’t follow you to the new site. To prevent this, I waited until no one was reading me there, so no one was affected by the move.

If you’ve somehow stumbled on this post in the future, be sure to update your RSS feeds, or whatever our robot overlords have replaced them with.

National Public Vote: Close Elections

One of the nightmare scenarios sometimes brought up when arguing for the Electoral College and against the popular vote is, what happens in case of a really close election? There would have to be a nationwide recount. Think Florida 2000, times 50.

For instance, take the 1960 election, where Kennedy beat Nixon by 0.17% of the popular vote. He won by 84 Electoral Votes, a comfortable margin, but this seems to be the sort of thing that the close-race argument seeks to address.

For one thing, it seems to me that if the race is that close, that’s exactly when you want to count votes carefully, to make sure that the right person is put in the White House (assuming that the National Popular Vote Interstate Compact passes).

But another argument is more pragmatic: elections are run at the state level, not the federal level, which means that the election would have to be contested in fifty separate jurisdictions. Fifty judges would have to be convinced that the case even has merit.

Furthermore, the vote might be close on the national level, but probably won’t be on the state or county level. See the county map of results for the oh-so-close election of 1960:

Map of results of the 1960 US presidential election, by county. Map by www.nhgis.org and Wikimedia Commons user Tilden76.

Let’s say a suit is brought in a state that isn’t a member of the Compact, where the vote isn’t close. Say, Utah. It’s easy to imagine a judge saying that the vote in Utah is clear enough; there’s no need to conduct a recount, because it’s clear which way Utah’s Electors will vote.

Given that each campaign has only a limited amount of money to pay for lawsuits, they’ll have to prioritize those suits that’ll give them the most bang for the buck. That suggests that the suits will have to be concentrated in states where the count is close (think Florida in 2000), or which are members of the Compact, or where for one reason or other, the suing campaign thinks it can win a significant number of votes. I think that means that small states are relatively immune from this, simply because barring significant shenanigans, there just aren’t a lot of votes to be gained in a state with a low population. That means that recounts are more likely in more populous states like California, Texas, New York, and, yes, Florida.

Remember that what matters is the total national vote: if, say, the Republican candidate’s campaign sues in California, its goal is not to flip the state blue; just to pick up votes. If it argues that 300,000 ballots were discarded improperly, and once they’re reinstated, it turns out that 100,000 of them were for the Democratic candidate and 200,000 for the Republican one, that doesn’t change the fact that a large majority of Californians voted Democratic. But it does mean that the Democrats pick up 100,000 votes while Republicans pickup 200,000, so Republicans win. You can do the same thing in North Dakota or Delaware, but the numbers will be smaller, so the same amount of effort yields smaller rewards.

So yeah, in the case of a close election, there would be a bigger recount than just one state as in 2000, but it probably wouldn’t involve all fifty states. But that’s probably what ought to happen anyway, in a close election.