I’m not going to be a perfectionist about anti-Trump posts — it’s more important just to get them out there. What we need right now is a lot of people being very visible about the fact that they’re not on board with this kind of politics, and being visible about it frequently throughout his presidency.

It all comes back to this question:

What happens when a leader has the ability to make each person in a room think that every other person in the room will obey that leader?

Anyone who has lived in certain kinds of countries understands why that question is so important. It’s how indecent people take and keep power. It happens suddenly. Even if every single person in the room is opposed, they’ll all still obey, because each person is afraid that they’re alone. No one can afford to be the only resister. In fact, no one can afford even to look like a slacker in reacting quickly to persecute a minority resistance — slavish obedience to the new leader is always the safest course. Once the system gets going, it’s very hard to stop. North Korea’s been stuck there for generations now.

The speed with which it happens is usually a surprise to more scrupulous competitors for leadership. That’s part of the method. It’s how Joseph Stalin did it, and, with some finesse, how Vladimir Putin did it too. It’s how Mao Zedong did it. Heck, Saddam Hussein did it in one day. By the time you realize what’s going on, you must already make a decision about whether to join or resist — the realization itself is the sign that the flip is under way, and by that point your resistance has become a risky proposition, not just for you but for everyone who knows you.

The reliably perceptive Josh Marshall of Talking Points Memo already spotted it in Donald Trump. Read his “This Is How Dictators Talk”.

Then read Trump’s own words on why he backed off his promise to prosecute Hillary Clinton:

“I don’t want to hurt the Clintons, I really don’t. She went through a lot and suffered greatly in many different ways, and I am not looking to hurt them at all. The campaign was vicious.”

Translation: I am dominant now, whereas you suffered greatly and are weak. Look how generous I am in victory. If you don’t make me angry, you have nothing to worry about. But remember, the tools of the state are in my hands. If you give me reason to change my mind, I can hurt you.

It’s worth quoting Josh Marshall’s explanation of what exactly is so wrong about this:

The personal desires of the President, his mercy, is irrelevant to this kind of decision. Either there is something to investigate or there’s not — and a lengthy investigation that came up with nothing to prosecute suggests there isn’t anything. This isn’t the Colosseum where everyone waits on the Emperor’s thumbs up or down. America is not a place where those who lose elections live freely at the sufferance of the victors. This is certainly better than Trump trying to jail Clinton as he promised, but only so much. What if Hillary Clinton becomes an outspoken critic of President Trump? Does he reconsider? None of this is normal. This is how strongmen talk.

None of this is normal. This is how strongmen talk.

This is un-American, and I don’t just mean that as some kind of jingoistic synonym for “bad”. I mean it in literally. Our country’s system of government was specifically organized to avoid this, and now that system is in danger, because someone who doesn’t value it at all — who just feels hampered by it — has been elected President, and is surrounding himself with people who will put loyalty to him above everything else.

So what do we do now?

Mostly I don’t know yet, except in very general terms: think, organize, act, cooperate. Lot of friends and allies are talking and we’re all figuring out what to do. I hope you’re in that group. But a few principles seem obvious:

  1. Don’t hide the fact that you’re opposed, and never, ever stop calling out the violations. Don’t let normal get redefined. Especially, don’t hide because of fear (n.b.: illegal immigrants get an exception to this one). Don’t ever let the other people in the room think they’re alone. They need to know that not only are they not alone, but they’re actually the majority.

  2. Trump lies habitually, and in a way that’s unusual for politicians. He will say the mirror opposite of the truth, if doing so serves his purposes, and in a peculiar kind of twisted projection, he likes to accuse others of doing what he’s actually doing. (Once you start watching for this, you will notice it all the time — try it!)

    Don’t stop being shocked. Do get used to pointing out the lies, and try to do so in ways that a Trump supporter might be open to listening to. Here’s one amazing example, complete with primary source video (there’s a nice side-by-side comparison here of what actually happened versus what Donald Trump said happened). There were so many equally bad instances during the campaign that I couldn’t catalog them all, but fortunately others did. Take ownership of, say, one lie a month — I promise, you won’t lack for supply. Consider it an exercise in outrage preservation.

  3. Trump supporters are not Trump, so don’t treat them like they’ve done something wrong — they haven’t. They’re decent people who don’t recognize Trump’s character for what it is, and don’t see the danger. Maybe they haven’t had enough personal experience with narcissistic sociopaths in their lives, and so don’t realize that there really is such a thing as a person with no fundamental goodness at bottom (that kind of direct knowledge is not something I would wish on anyone, but it looks like we’re all going to get it now whether we like it or not).

    I’ve said before, and continue to believe, that we need not just a wealth redistribution but a dignity redistribution in this country. People voted for Trump because they thought he might bring that. He won’t, but it’s understandable that people are looking for it. Clinton never seemed to really understood the roots of that need, and it’s not surprising that so many voters turned away from her and toward a charlatan who was willing to surround himself with a reality distortion field and say anything at all to get elected.

Those principles apply to one’s public actions and statements, of course. Private communications are a different matter. We have every reason to be more worried now than we were before (and before wasn’t all that great either). If you do any political organizing, or even if you don’t, you should install Signal on your phone, and encourage those you communicate with to do the same. If Donald Trump gets eight years in office, he’ll have the chance to shape not just the executive branch but a lot of the judicial branch as well, just through natural turnover. By making private communications the norm, you not only protect your own privacy, you help normalize the practice of privacy so that others who do the same don’t stand out so much.

I had this conversation (via Signal) with a friend recently, whom I thought was so clear and eloquent that I asked for permission to just quote it. Here it is, lightly edited:


I’m thinking hard about what to do, talking with friends in Chicago about next steps… Even the re-election of George W. Bush didn’t feel like an existential shift the way this does. NORMAL PEOPLE NEED MORE EXPERIENCE WITH SOCIOPATHS SO THEY CAN RECOGNIZE THEM. It’s so depressing. His supporters have no clue; even most of his opponents don’t really get it. They keep thinking they’ll appeal to his “decency”. F*ck. How can we communicate to people what’s really going on here?


Yes, it seems like we had some tipping point and everything feels at stake to me.

I’m really hoping that when he runs this country into the ground his followers don’t double down on loyalty, but there’s a model for that very thing happening. The book “When Prophesy Fails” refers to this.

This situation we’re in — a dangerous leader who doesn’t hesitate to appeal to racism and misogyny, single party government, eroding infrastructure, manipulated electorate — it’s a knot with a lot of threads and it’s going to take a lot of us, working on even just one thread each, to untangle it.

There will certainly be people, especially young people, who will need to know how to recognize a wolf, and that kind of education will be necessary. And that can come in a lot of forms, appropriate to the learner, from fairy tales to pop culture blog posts to academic classes.

As for the manipulated electorate who are adults, I actually don’t think the best goal is to try to get them from where they are now to “oh he’s a sociopath.” Most adults are not able to make this leap.

So I think for the manipulated electorate, the answer is to approach them via a single issue that you can earnestly and humbly talk with them about. When Trump doesn’t deliver on jobs, talk to them about unions, et cetera.


“all of the above”. I think some people will be open to understanding what Trump really is, others won’t. The methods are not mutually exclusive, anyway.


Give them one line of change, one way that they can begin to take ownership of differing from Trump, in a way that feels to them like it came from them.

That one line of difference can maybe ignite parallel currents with acknowledging other ways Trump did a bait and switch, and all together, eventually, it may form into the gestalt of “wolf.”

“Stronger Together”. I never expected Hillary Clinton’s campaign slogan to take on such a deeper meaning, but, unfortunately, it has.

Quick reaction post — I haven’t edited this much, just jotted it down and put it out there:

It looks like a lot of voters apparently didn’t see Trump the same way I do. This post is not for them. It’s for the folks who voted against Trump and are disappointed now. It’s also partly a followup to this post by my friend Laura.

First: we’re in new territory. Has there ever been a time when a functioning democracy, with reasonably healthy institutions, voluntarily elected a completely non-establishment populist strongman/demagogue in a normal election, with the usual ballot privacy protections and everything? Without those institutions having been hollowed out first? This situation might be genuinely unprecedented. Which is good news: the worst historical comparisons really don’t apply here. I’ve heard some people making comparisons to Germany in the early 1930s. That’s misplaced, and unfair to Trump supporters. Trump is not that kind of ideologue; he’s just a talented narcissist who correctly read a mood that more experienced politicians missed. The situation has some resemblance to Berlusconi in Italy in the 1990s, but even that is not a perfect fit.

So we’ll learn this road as we travel it, but there is no reason to be fatalistic. Nothing is pre-determined here. We’re still going to have elections in two years, and again in four years. Trump is not operating outside politics. He’s skilled at politics, and he’s operating in a purely political framework as a political actor; he hasn’t actually pushed those boundaries. (Some people seem to think he has, that somehow his election is akin to a coup, but it’s not. He won the election by campaigning and winning votes. He’s despicable, but he showed that pretty clearly and people still voted for him.)

Second, just because he’s President, or President-elect, doesn’t change who he is, or who this country is. He’s just some guy who got elected President. The qualities a President should have have not changed nor been cheapened, even if he doesn’t have them. His behaviors have not been rendered Presidential except in the tautological sense that he’s been elected President. He’s just who he is. The office does not change that. Furthermore, even if he hadn’t won, about the same number of people would have voted for him. In other words, the percentage of dissatisfied people in the country would be about the same, it’s just that it would be other people. What makes us Trump opponents so sure that the dissatisfied half should be them and not us, this time around? Which brings me to:

Third, the cycle will come around again. Remember the re-election of George W. Bush? The world was stunned; they couldn’t believe we’d re-elected the same President who’d started the unnecessary and already disastrous invasion of Iraq. Someone even set up SorryEverybody.com. And yet four years later we elected Barack Obama, and then elected him again. Trump is the 45th President of the United States, but he is not the last.

Fourth, it’s the Democrats who have to change. My friend Karen Underhill nailed it: “We didn’t redistribute wealth. That’s why this happened.” I would say, actually: “We didn’t redistribute dignity.” Raw redistribution of wealth can happen with mere handouts, in theory, but that’s not the point. People need to feel both economically secure and dignified. Trump understood this. He’s not going to deliver it, or worse, maybe he’ll deliver it for some (lighter colored) people at the expense of other (darker colored) people. But he understood a raw need that the DNC has shown little understanding of in recent years. (Update: looks like Naomi Klein agrees.)

Bernie Sanders would have won this race, I think (not everyone agrees). This was an election where the majority of voters wanted a roll-the-dice candidate. Clinton was the exact opposite of that; she even thought she was criticizing Trump when she repeatedly said he was a risky gamble, not understanding that that was exactly the quality voters liked about him. When things aren’t going well, why not roll the dice?

Bernie Sanders and Donald Trump both were very much roll-the-dice candidates, but the Democratic establishment wasn’t ready to give Sanders and his ideas their support. Either the Democrats will change, or Donald Trump will be re-elected. I honestly don’t know if they can change, but between Sanders in the primaries and Trump in the general, the message could not be clearer. Blaming this on the Republican Party’s own problems (which are real enough) is convenient, but it absolves the Democratic Party of too much. If this election doesn’t cause healthy change — by which I mean, of course, change I agree with 🙂 — in the Democratic Party, then our problems are much worse than just this election result.

Finally, I don’t mean to sound naive, but this is a democracy. There were protests yesterday, the day after the election, in a lot of major cities. These protests are a mistake and make the anti-Trump half of the country look bad. The organizers described them as protests against hate, against racism, etc, but that’s just wishful thinking. If you hold a protest that is clearly aimed at the winning candidate the day after an election, then the only possible interpretation people will have of that is that it’s a protest against the election outcome. Democracy means accepting the outcome of the election. It’s fine to protest the resultant policies and actions that are then enacted, but since Trump doesn’t even take office for another couple of months, now is clearly not the time to protest.

I get it: people don’t want to feel like suckers, and they know that if Donald Trump lost, he’d be doing everything he could to work the refs, stoke his supporters’ outrage, and fuel speculation that the election had been stolen. That’s probably true, but it’s not what happened. The damage done (and still to be done) by his obvious disrespect for norms will only be made worse if the rest of us toss them aside too. The way to counter Trump is to demonstrate that we stand for certain things. Respect for norms is only one of those things, but it’s the most accessible one at this moment, so let’s try to keep it strong. It’s going to need all the help it can get.

Meanwhile, there are mid-term elections coming up! Let’s get to work supporting candidates who understand that the way the Democratic Party has been operating since Reagan/Bush won’t cut it anymore.

This screenshot is from just after agreeing to the Terms of Service for the Google/Starbucks free wifi at the Starbucks at Bryn Mawr and Winthrop in Chicago. My best guess at an explanation is that Starbucks buys their TLS certificates on fiscal year boundaries, but then they’re very busy around the end of the fiscal year and forget to renew? 🙂

close-up view of 1 July TLS cert expiration, shown on 5 July

Either that or the wifi here is being hijacked by devious delinquents determined to defenestrate my data. But I’m not worried — between certificate pinning and SSH host-key checking, surely nothing could possibly go wrong.

Here’s the full screenshot:

close-up view of 1 July TLS cert expiration, shown on 5 July

U.S. House of Representatives, Democratic Party sit-in, 22 June 2016

I wish I had time to write a better post about this, but it’s more important to write about it soon than well:

Something very bad is happening in this country, and legislators — of all kinds, but especially in the Democratic Party — are not only not stopping it, they’re actively encouraging it.

We’re gradually dividing ourselves, step by incremental step, into two classes: trusties and suspies.

Trusties, you know who you are. Probably most readers of my blog are trusties. You’re trusted by default. You’re not on the no-fly list. You don’t ever wonder whether you’re on the “terrorist watch list”, because you know you’re not. You hear about people — people who have not been convicted of any crime — having to pass drug tests to get a job or to receive government benefits, but it doesn’t affect you: you don’t have those kinds of jobs, and you aren’t in a position where you need those benefits.

Suspies, you know who you are too: you think you might be on a terrorist watch list, though of course you can’t be sure. You might know that you’re on no-fly list, because you had a bad experience at the airport. Or maybe you didn’t even bother to try flying, because you knew there was no point. Even though you haven’t been convicted of any crime, some legislators would like to make sure you can’t buy a gun (trusties are allowed to buy guns, of course). Every time you post things on Facebook or other social media sites, you wonder whether what you say might be misinterpreted and used against you, without due process of law.

By the way, I’m not opposed to gun-control legislation at all. I’m just in favor of the law applying equally to everyone. If you haven’t been convicted of a crime, then you shouldn’t lose some right that others retain. To their credit, many of the House Republicans are objecting on exactly this principle to the Democrats’ proposals that people on one or another of the terrorist watch lists — when did we get so many lists, anyway? — be blocked from buying guns.

This division into two classes has been happening for many years. I can’t pinpoint when it started, but I remember when I first noticed it: when the federal government amazingly decided that it was okay for your commercial relationship with a particular private-sector company (an airline) to affect how quickly you can get through the security screening at airports. That’s right: do more business with a certain company, and you can skip ahead of other people in a public queue — one organized and managed by federal government employees, not by the airline — whose purpose is our collective safety. Imagine if you could pay more money to go to the front of the line at the Post Office, or to skip ahead of everyone else at the Drivers License renewal bureau. Or, say, pay money to avoid being drafted, when a draft is in effect.

Instead of prohibiting this, the government decided to get into the business itself, and now offers federally-approved channels for buying your way out of the security responsibility — but only if you’re a trustie, of course. Suspies still have to take the slow line. No, it doesn’t matter that you haven’t committed any crime and have no intention of committing a crime. If you’re not positively identifiable as a trustie, then by definition you’re a suspie. Get used to it.

When did this become okay? Why don’t more people see how deeply not okay it is?

(Those are not rhetorical questions. I’m truly baffled that we aren’t hearing more objections to this trend, and particularly baffled by how willing the House Democrats have been to abandon the principle of equal protection under the law.)

Security is a shared burden, or should be. When we allow some people to conspicuously buy their way out of that burden, right in front of the noses of those who can’t, it damages our entire sense of collective responsibility; it atomizes our society.

The problem is not that government security agencies watch some people more than others — that’s their job, and it would be ludicrous if they treated everyone as equally dangerous. Some people are indeed more dangerous than others. The problem is when the unequal treatment is done publicly and without due process of law. There’s a big difference between the government keeping an eye on someone (not that the monitoring seems to do a whole lot of good, but that’s another matter) and treating them differently in a way that they experience directly and that other people can see. The latter is the problem, and it’s a pretty basic abrogation of the principles we claim to have organized our country on.

(If you’d like to share this, you can retweet or redent here.)

Never Trump

After reading Scott Aaronson’s “Daddy, why didn’t you blog about Trump?” post and Terence Tao’s “It ought to be common knowledge that Donald Trump is not fit for the presidency of the United States of America” — relax, Tao is not indulging in liberal tribalism but rather is using a technical definition of “common knowledge” in a very interesting way — I realized that anyone who agrees should make a similar post.

So here’s mine:

The United States should not elect a narcissistic con-man to the Presidency.

Donald Trump has already done a measure of harm to our country; if elected President he would do much, much greater harm. This country is important to me. If you’ve ever lived in a place that doesn’t have freedom of speech, freedom of association, and a widely-shared commitment to the rule of law, you’ll understand that that patriotic sentiment is wholly unironic. We’re not perfect, but we’ve got a lot that’s worth preserving, and we should try to keep it (and if possible improve it). Donald Trump understands nothing of this; he understands nothing to be more important than his own overweening self. His Presidency would be a disaster for the United States and for the world.

Thanks to a very poorly thought-out voting system, the best way to prevent Donald Trump from becoming President is to vote for Hillary Clinton in November. That’s what I plan to do, and I hope you will do so too, if you’re a citizen of the United States, even if you aren’t a Hillary fan. Remember, you’re not voting for a candidate, you’re voting for an outcome. If the outcome you want is for Donald Trump not to be President, then vote accordingly.

Here’s something you can retweet or redent, if you want a convenient way to signal that you’re on board.

Update 2016-09-25: Sadly, my original last paragraph (below) was overly optimistic. I’ll leave it here, because a blog post with a date stamp ought to be honest, but obviously he not only became the nominee but now has a reasonable chance of winning the general election. That is the most depressing thing I’ve written all day :-(.

I think there’s actually a chance Donald Trump won’t be the Republican nominee, because his candidacy is cratering rapidly in the polls, and he’s psychologically incapable of persisting in a situation where he can’t think of himself as a winner. If he withdraws before the convention, then great. But if he’s on the ballot in November, please do whatever you have to do to prevent him from becoming President.

Apparently, Starbucks in China doesn’t want you to save a copy of the wi-fi Terms of Service you agree to — it’s available only as a PNG image file, embedded in a vertically scrollable cell in an HTML table layout:

You can’t copy the text to your clipboard, or save it somewhere (say, for comparing with later versions to see if their Terms of Service changed). And what do you do if you have poor or no vision and rely on a screenreader?

Is it even legally binding (in China) to agree to an online contract that isn’t represented as text? Or is that a distinction programmers would make but lawyers never would?

See the top-level portal HTML page for the full glory. This is from the Starbucks on the outdoor second level of the Hai An Cheng Mall in Shenzhen, on 1 June 2016.

Unrelatedly, in the page source, note the “var temp = url.length;” and the subsequent failure to actually use the temp variable in the loop control or anywhere else.

I’m not sure which bothers me more, the unparseable ToS text or the sloppy coding. Okay, that’s not true — I am sure: the unparseable ToS text. This is supposed to be a contract, but only one side actually has the text. Come on, Starbucks. If the issue is worries about the Chinese characters displaying correctly in all browsers, then present the PNG image for display but still provide the text as an underlay, so that it can be saved as text.

Here’s the full ToS image:

Starbucks Shenzhen (Hai An Cheng) Wi-Fi Terms of Service, as of 2016-06-01

My article Dissecting The Myth That Open Source Software Is Not Commercial is now up at the IEEE Software Blog. (Comments over there, please, not here.)

It’s gotten a surprising amount of Twitter activity, which is pleasing. The article’s message is one I’d like to see spread widely!

Many thanks to editor Stefano Zacchiroli for editing, and for suggesting an article in the first place.

If you encountered this error when trying to clone the Redis repository from GitHub recently, there is a solution. The error looks like this:

  $ git clone https://github.com/antirez/redis
  Cloning into 'redis'...
  remote: Counting objects: 42713, done.        
  remote: Compressing objects: 100% (33/33), done.        
  remote: Total 42713 (delta 15), reused 0 (delta 0), pack-reused 42680        
  Receiving objects: 100% (42713/42713), 19.29 MiB | 6.81 MiB/s, done.
  error: object 1f9ef1b6556b375d56767fd78bf06c7d90e9abea: \
  zeroPaddedFilemode: contains zero-padded file modes
  fatal: Error in object
  fatal: index-pack failed

The problem is that your ~/.gitconfig file probably has this setting:

          fsckObjects = true

…and/or perhaps these settings:

          fsckobjects = true
          fsckObjects = true 

Solution: set the value(s) to false while you clone Redis, then set them back to true afterwards.

See also this discussion for more; that’s where I originally stumbled across the solution. I’ve now cross-linked between this post and a ticket in the Redis issue tracker.

Pro non-tip: you might think that running

  $ git config --global fsck.zeroPaddedFilemode ignore

so as to get

  	zeroPaddedFilemode = ignore

in your .gitconfig would solve this problem in a nice targeted way, but it won’t, so don’t bother. See here for some discussion about that.

(This post is part of my SOLVED as a Service series, in which I post solutions to technical problems with open source software that I use. The point is the next time I encounter the same problem and do an Internet search, my own post will come up; this has now actually happened several times. If these posts help others, that’s a bonus.)