The Double Standards of Moderates

Of late, I’ve been pointing out some of Sanders’ shortcomings as a candidate, and urging my fellow leftists to open their eyes to some inconvenient truths. Time now to even out the score.

Now that Biden has done poorly in Iowa, and is doing poorly in the money department, the Biden Bros are stealing pretty much every line in the book the Bernie Bros have been reciting.

“But it’s not fair that Biden will get shit for what his son did.” Oh? And it’s fair that Sanders will get shit (rooted in memes about Cuba and the ex-USSR) for being a democratic socialist?

“Stop being so negative about our candidate, who is obviously the most electable.” Oh? And it’s just plain old “hard-edged realism” when Sanders’ flaws are talked about? But of course.

Always one set of standards for me, and another for thee.

The Pandemic is Here

It was inevitable. Humanity has long been doing just about everything possible to pave the way for such a thing: gathering into ever-larger cities, doing virtually nothing to address the inequality that condemns multitudes to lives of filth and squalor, and aggressively globalizing the economy and thus enabling disease to spread faster.

Any reassurances from the dictatorship in China should be taken with not just a grain, but a block of salt. Dictatorships lie and conceal. China’s first response to the outbreak was to hush it up, engaging in reprisals against the doctor who first reported it, who has now perished from the disease.

The disease is known to have an incubation period of up to 14 days, during which people are both infected and highly contagious and furthermore entirely symptom-free. Cases have already popped up worldwide. How many more people are running around right now infecting others and not even knowing about it? Who knows, but the number has to be significant.

If you think I’m exaggerating above, well, many M.D.’s are saying the basically the same thing.

The toothpaste is out of the tube and it’s not going to be put back in.

What is Going on with the Attacks on Biden and Warren?

The Biden attacks began circulating first.

It was understandable. Despite how the Establishment pundits have universally proclaimed him as likable and easily-electable, he’s neither. He’s a gaffe machine. He’s one of the rubes who voted for the Iraq War. He’s a clueless old fool who still entertains decades-dead notions of bipartisanship, so he’d be an ineffectual president. He’s basically the Hillary v.2.0 candidate, and we all know how well Hillary v.1.0 failed against Trump. As such, he’s a far riskier candidate than the conventional wisdom proclaims.

These are all valid reasons to be concerned about the possibility of a Biden nomination. They are all valid points to be brought up by the other primary candidates.

Then I noticed something curious: with only a few rare exceptions, the attacks were not coming from the Sanders campaign, the Warren campaign, or the campaign of any other Democratic candidate. Most of them were coming from no easily-identifiable source whatsoever. The ones that had a source attribution tended to come either from obscure sources, or from right-wing sources allied with Trump. And the attacks were often really vicious, the sort of things that would be difficult to recover from later should the attacked candidate be the eventual nominee.

Then the attacks on Warren began. Those were even stranger. Why was the No. 3 candidate, one who also had strong progressive credentials, suddenly getting so much hate in progressive circles? Wouldn’t Harris or Klobuchar have been more logical targets, given their past as tough-on-crime attorneys general? It just didn’t make sense. Why be so divisive against someone ideologically close to you, someone whose people you will probably have to kiss and make up with later on? And again, the attacks weren’t coming from any of the other campaigns. They were coming from the same sketchy sources as the anti-Biden attacks.

Well, consider Exhibits A and B.

Exhibit A. Polls over time.

Exhibit B. Party loyalty.

Put those together and what does it mean? First, like it or not, Biden is probably going to be the Democratic nominee, for the simple reason that he’s consistently been the leading candidate. Second, every nominee needs a running mate. Third, nominees frequently choose their running mates to broaden their appeal. Fourth, of the votes he has a chance of attracting, Biden’s biggest appeal problems are on the left (he already appeals to moderates and to disaffected Republicans, and he doesn’t have a ghost of a chance of appealing to hardcore Trumpers).

So, if he is smart, Biden is likely to choose a running mate that will help him appeal to left-leaning voters. Who is he most likely to choose?

First of all, not Sanders. Sorry, Bernie Bros. Sanders isn’t even really a Democrat. That is, of course, one of the things that makes him appealing to those of us on the left, but get real: party loyalty is a thing, and Biden will use it as a reason to punish Sanders. It’s harsh, but it’s the truth.

That leaves Warren as the most obvious choice. Unlike Sanders, Warren did run as a Democrat for her political career, so she has the party loyalty checkbox ticked. Plus, she will be a help from the identity politics standpoint, carrying appeal as only the third female vice-presidential candidate in US history. Another box ticked.

Well, look at that. Those mysterious attacks, mostly coming from identifiably pro-Trump sources, or coming from no identifiable source at all, are being targeted precisely at both the most likely candidates and the Democratic voters most likely to sit the election out as a result of those most likely candidates getting the nomination. How convenient. Convenient for Trump, that is.

And remember, the Trump campaign is well-known for its social media savvy.

It’s all enough to make one go “Hmmmm.”

Remember, whatever their warts, having Biden and Warren in the White House is vastly preferable to having Trump and Pence there for four more years. If you can’t realize that, you’re not my ally. You’re a fool and a rube, and approximately as much a danger to the continued existence of an open and free society as the gang in the red hats.

Bloomberg, Not Bernie, Is Trump’s Dream Opponent

Or rather, he should be, because Bloomberg is a far weaker candidate than either Sanders or Biden.

Whether or not Bloomberg actually is Trump’s dream opponent depends on how well the Trump campaign understands that the centrists in the DNC have their thumb on the scale in favor of a pro-Establishment candidate. My guess is that they understand that pretty well, given that they are working for someone who was himself a party outsider and therefore had to contend with the Republican version of the very same thing.

That means I was wrong when I answered my question about Sanders being Trump’s dream opponent in an earlier post.

Trump’s main goal when attacking Biden is to elevate not Sanders but Bloomberg, because Trump is fully aware that this will prompt the Democratic Party elite to do everything within their power to elevate Bloomberg.

If Sanders Concerns You, Oppose Bloomberg

(Even if Sanders doesn’t concern you, and you consider Sanders to be the most viable candidate, you should oppose Bloomberg. But that really doesn’t need to be said; most of us on the left already oppose Bloomberg, for ideological reasons. This post is directed to centrists who claim to be opposing Sanders for what they perceive, and with some justification, as the practical reason of his electability.)

Centrists should oppose Bloomberg because Bloomburg is basically a centrist version of what centrists claim to be the most concerning about Sanders.

You dislike Sanders because he’s never run for office as a Democrat. Quite the contrary: he’s run as an independent or a socialist, and never been shy about why he cannot consider himself a Democrat. You worry about that past history alienating centrists and career Democrats.

Well, Bloomburg never ran for office as a Democrat: he ran twice as a Republican and once as an independent. Start worrying about that past history alienating leftists, liberals, and even quite a few plain old career Democrats.

If you worry about Sanders’ lack of appeal because he is too far left, you should worry about Bloomberg’s lack of appeal because he’s too far right.

If you worry about Sanders’ past history of branding himself as “socialist,” you should worry about Bloomberg’s past history of branding himself as “Republican.”

In one candidate — Bloomberg — we have additively combined the significant risk levels of both Sanders and Biden, two candidates that are already troublingly risky.

Bloomberg is thus an exceptionally risky candidate choice. It takes the standard (and very plausible) risk of running a centrist (remember, Democrats, you ran a centrist against Trump in 2016 and she lost), and raises that to the Nth power.

Of all the candidates that have even a ghost of a chance, nominating Bloomberg is probably the surest-fire way to get four more years of Trump.

Is Bernie Trump’s Dream Opponent?

Never Trump conservatives are fond of repeating it as if it were a mantra, but it is unwise to take such assertions at face value. It can be very difficult to distinguish what one firmly wants (a moderate and not a leftist in the White House, in the case of Never Trumpers) from what one actually believes.

This does appear to be a testable claim, however. There is some evidence that Trump is in fact salivating at the opportunity of running against Sanders. One merely has to consider who he has evidently trained most of his efforts at tearing down: Sanders’ chief rival in the polls, Biden. The whole Ukraine scandal was, after all, prompted by a desire on Trump’s part to smear Biden.

This theory that Trump actually wants to run against Sanders is bolstered by the fact (recently discussed here) of Bernie’s branding issues.

It is important to point out that Biden is hardly the slam-dunk candidate many centrist pundits seem to think he is, however. Rachael Bitecofer (one of the few analysts to correctly predict both the Trump win in 2016 and the size of the 2018 Democratic wave) has pointed out that Biden has some real risks, risks completely related to his political centrism, that are being overlooked by centrists. (I’ve pointed those risks out, too, but most people are likely to take a professional like Bitecofer more seriously.)

What to do about it all? It depends on who leads in the primary. If Biden is the clear leader, it’s worth supporting Bernie as a foil to Biden’s risky pro-Establishment proclivities. That probably won’t make Biden want to nominate Sanders as his VP,* but it will motivate Biden to tack left and embrace a few populist points, and hopefully nominate Warren to be his running mate.

Thankfully, given his front-runner status, Biden seems as if he might finally be getting it. That ad I just linked only mentions Trump in passing, talking mostly about what Biden says he will do if elected. That’s the sort of campaigning it took for the oppositions in Venezuela and Italy to finally have some measure of success against Chávez and Berlusconi, respectively.

* He’s never in a million years going to nominate Sanders to be his running mate. No Democrat would. After all, Sanders isn’t even a real Democrat. He’s always run as an independent or a socialist, and never been short on words with which to disrespect the Democratic Party. Yes, this is all for good reason (the Democrats have earned every bit of disrespect they receive from the left), but it’s also not precisely going to endear him to those whom he disrespected. Trust me, he won’t be nominated to be veep.

Why Swing? Why not JavaFX?

I recently decided to finally take a serious crack at developing a GUI application.

My first choice was to make it a native Mac application, and write it in Swift. I soon was reminded, by fresh personal experience, of what I had discovered the last time I tried to code a native Mac application: that Macs are approximately as programmer hostile as they are user friendly. Documentation was patchy and incomplete. Interfaces were bizarre and counter-intuitive. Worse of all, things change radically from release to release of the OS, to the point that most of the documentation out there is basically useless, because it is for MacOS releases prior to Catalina.

I could have persevered, but it was clear that MacOS app development is a dark art that takes a lengthy and painful initiation process to cultivate. No thanks; I just want to get my app coded and finished. Would have been nice to have a native app that dovetailed as nicely as possible with the rest of the system, but being able to finish it in a timely manner takes priority.

I had in the past year ran across Kotlin, which struck me as a well-designed effort to modernize Java (or, alternately, Scala done right: a more modern language for the JVM that avoids the pitfall of creeping featurism that led Scala to be excessively complex). Java has long supported portable GUI application development, and since Kotlin is a JVM language, you can easily call any of the Java libraries from Kotlin. So Kotlin it was.

It didn’t take that much research to determine that the new and supposedly preferred way to code graphical user interfaces in Java was JavaFX. So I went to the JavaFX web site, downloaded JavaFX, and typed in the “Hello, World” example listed on that site.

It didn’t work. After double- and then triple-checking what I had done, I could see zero discrepancies between what I was doing and what the tutorial was telling me to do.

Noticing that the current release of JavaFX hadn’t been out all that long, I tried regressing to the previous version now on long-term support status. The code still didn’t work.

I tried posting a query on Reddit as to what I was doing wrong. Nobody had any idea.

I reported the bug via the project’s GitHub page. That prompted a curt, incomprehensible, acronym-laded response to file the bug report some other way (and my bug report on GitHub was perfunctorily closed).

Eventually, I got the example code to produce the output it should, by regressing to the version of JavaFX that was distributed with JDK 8. Then I started investigating how I’d code my program in JavaFX.

It quickly became apparent that one of the things I needed to do would probably involve a lot of work in JavaFX, but that there was a Swing UI component that did basically all I wanted, and that it was easy enough to embed Swing components in a JavaFX application. While doing that, I ran across yet another bug in JavaFX.

But why? I had already established that JavaFX is full of bugs, insufficiently documented, and has a development team whose attitude about quality is lacking. Now I learn I can’t even code it all the “new way” even if I desire to, because JavaFX is lacking in basic features as well.

Moreover, it didn’t take much research to uncover that Oracle (the single most important player in the Java development process) makes massive internal use of Swing, and has no plans to remove support for Swing anytime soon. In other words, Swing is definitely here to say; rumors of its deprecation have been greatly exaggerated.

So that’s what I used. Maybe, in a few years, if I have occasion to write another graphical user interface, I will investigate if JavaFX is any closer to being ready for the prime time than it currently it is.

I can tell that some of what JavaFX is trying to accomplish would be a real improvement. It’s a pity that the current state of that project is evidently so lacking in features and quality control, but there you have it.

The Problem with Bernie

Some never Trump conservatives are having a field day playing concern troll, using this to back their assertions up.

I’ve debunked such things before, and I’ll do it again. That poll does not show the public’s ideological proclivities. It shows their ideological labeling proclivities; it is asking people what ideological label they prefer to see attached to themselves.

Most people are not strongly ideological, yet most political pundits are strongly ideological (it tends to be a big part of what motivated them to become political pundits in the first place). Pundits, like everyone else, tend to often make the blunder of projecting their own circumstances onto others. In other words, they tend to conclude that the average American is more of a political animal than he or she actually is.

Interesting things happen if you dig a bit deeper: many of those self-professed “moderates” and “conservatives” are actually sympathetic to many distinctly leftist ideas about inequality and economic justice. There’s plenty of self-professed “conservatives” who seriously distrust the wealthy and powerful.

So there is actually plenty of space for leftist success in electoral politics. But (and this is an important), labeling matters. Many of these same quite-open-to-leftist-ideas people aren’t even aware that they are potential leftists; their idea of what the political left consists of has been shaped by omnipresent anti-left propaganda in the media and education systems to the point that they see the so-called “left” mainly in negative terms.

Who wants to attach a negative label to themselves? Nobody, that’s who. So those people instead label themselves “moderate” or even “conservative.”

And it is here that Sanders has an Achilles heel. He has chosen to embrace a political label (“socialist”) that is toxic to many voters. Yes, it’s rapidly becoming less toxic. But it’s still toxic to many. It’s an exercise in labeling that creates an unfair battleground for Bernie.

Bernie will be able to cope with that self-imposed handicap to a remarkable degree (he’s repeatedly won the votes of many self-professed “conservatives” in rural Vermont for decades). But don’t kid yourself that it’s not a liability at all. It very much is.

Using Your Cell Phone in Canada for Less

If you live in the USA, it’s easily possible to use your cell phone in Canada, but the most straightforward way of doing so (roaming) is unfortunately very expensive. Virtually all U.S. cell carriers consider any sort of international roaming to be a high-end feature. Either you will pay an exorbitant fee per day or per call to use it, or you will pay an exorbitant fee (i.e. at least $50 per month) for a high-end plan that offers roaming without such extra fees.

If, like me, you’re a cheapskate who has traditionally received cell service via a discount plan like TracFone (which doesn’t offer international roaming at all), the prices are likely to make you say “Ouch!” They sure made me say “Ouch!”

For years, I stuck with TracFone despite living in a state that borders Canada, and just put up with being out of cell coverage range whenever I was in Canada. Recently, however, I moved further north, to a county that borders Canada directly. The closest big city to me is now Vancouver, so if I want to do big city things, odds are I will be traveling to Canada to do them. Furthermore, my parents are getting evermore elderly and frail, so it is getting evermore unacceptable to be without cell service.

My solution? Forget about roaming, and just buy a discount cell plan from a Canadian carrier. I did some research, and subscribing to the least expensive plan by Public Mobile increases my monthly costs by less than half the amount that any option for purchasing the right to roam in Canada would. Public Mobile is basically Telus’ discount brand, which is important because cell coverage in rural areas of Canada is often quite spotty, and Telus has the best coverage in rural B.C.

The silly bit is that I’m now paying more for the right to use my cell phone in Canada than I do for the right to use it in the USA, but that’s more a function of what a screaming deal TracFone is than what a raw deal Public Mobile is. Canada’s cell charges tend to be high simply as a result of Canada being large and sparsely-populated, which results in fewer users having to bear the costs of maintaining a large network.

There are some catches, however:

  1. Calls to my U.S. number won’t follow me into Canada; my Canadian service plan comes with its own separate Canadian phone number. For me, that’s a minor drawback: I can simply tell anyone who has business being able to contact me to use my other number when I’m in Canada. For someone whose career depended on always being available at a given number, it’s not so minor a drawback.
  2. I had to install a SIM card from my Canadian carrier into my phone. In my case, that was a minor issue, as my phone has two SIM slots in it. If I had a phone with only a single SIM slot, this probably would have prompted me to buy a new phone (which would easily pay for itself within a year from the savings it would enable). I definitely would not want to fiddle with swapping SIM cards each time I visited Canada.
  3. If you have a phone you purchased from a cell carrier, you are most likely shit outta luck: most phones sold by carriers have been deliberately crippled so as to not work on any other carrier’s network (I purchased my phone from an electronics retailer, and purchased a SIM card from TracFone separately).
  4. If you are a Verizon customer, you are probably shit outta luck. Verizon uses a nonstandard technology that other carriers do not use, so many Verizon phones could not be made to work on any other cell network even if they were somehow unlocked.

One final thing: if you go to the web sites for most Canadian carriers and attempt to order a SIM card from them, you will discover that they absolutely refuse to ship such things outside Canada. My solution was to wait until my next trip to Vancouver and visit a London Drugs outlet (they sell Public Wireless SIM cards). Once you have the SIM card, Public Wireless will happily let you register it to a USA mailing address, and associate it with a USA credit card.

I think there’s a few entrepreneurs importing Canadian SIM cards and offering to ship them to US addresses, for a fee, but the key here is for a fee. Being a cheapskate, it was easy enough just to wait until my next trip to Canada and buy one in person. I then went to a nearby coffeehouse with free WiFi and used my phone to register itself for service. It was activated and on Telus’ network within an hour.

A Quick Update

The Arctic Outflow Event Is Over

Not really a surprise, as such things seldom tend to last much longer than a week, anyhow. It only took a few days of temperatures above freezing both night and day to dispatch the snow that fell.

What was a surprise was how it ended: mild air started invading Wednesday night, but very slowly. Still, by the wee hours of the morning temperatures had climbed well into the forties Fahrenheit. Then, the surprise: the arctic air reasserted itself. The slush refroze. The cold weather then lasted for two more days before the inevitable happened.

A Surprise Job Opportunity

Someone wants to interview me for a local tech job. The interview process is somewhat unusual and plays to one of my strengths (teaching people). But there’s also a host of potential mismatches between myself and the employer. Time will tell on this one.

GUI Programming Is a Real PITA

I always knew it was; that’s why I’ve not done much of it up to this point. But boy, is it slow and tedious. It literally takes days of reading documentation and slow experimentation to accomplish the simplest things.

Part of the issue is that what I’m trying to do is somewhat unusual: I’m displaying multiple text panes within a scrollable area, using an area that is dynamically created and updated. Most programs don’t dynamically generate windows (with varying numbers of components) in their GUI’s, and virtually all programs just put a single text pane inside a scrollable region, and they want that pane to automatically grow to be as large as the whole region.

And this is with the Java Swing library, which is well-known, stable, and well-documented. I couldn’t imagine how painful the process would be in the sketchily-documented, ever-changing native Apple GUI libraries. Thankfully, the unusual part of the application is now basically complete; what remains is much more conventional GUI programming.