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.

Arctic Outflow

Today’s high was 19˚F. In Seattle that would break a record. Here in Bellingham, it’s definitely much colder than normal, but the record is still significantly colder. We’re close to the mouth of the Fraser Canyon, and if the interior of British Columbia fills up with frigid air, it can spill through that canyon and hit us without having to pass over any salt water to moderate it.

The arrival of the arctic front was dramatic. My building shuddered as a sudden gust of northeasterly wind hit it. The falling snow changed from sloppy and wet to dry and powdery. Within a half-hour, any wet pavement surfaces that had not been treated had flash-frozen.

Tonight it is snowing and 14˚F. That’s cold enough to experience something rare on the West Coast: snow that squeaks when you walk on it. That’s a fairly common occurrence in a continental climate, but I never once experienced it in Seattle. Here, the cold snaps really are a taste of what winter is like in a continental climate.

But only a taste. Within about 24 hours, the wind will shift. When that happens, the arctic air will depart as quickly as it arrived. The ocean is right here, ready to supply mild air the moment the wind resumes its normal westerly to southwesterly direction. The departure of the cold snap will be as abrupt as its arrival was.

And that’s the way I want things to be. The past few days have been fun because they have been a departure from the norm. Were they the norm, these conditions would become tiresome and unpleasant. Winter would mean not a green thing in sight, and spring would mean waiting seemingly forever for all the snow that accumulated in winter to melt, and all the while it melted it would get increasingly dirty and drab.

Is the Iran Thing a Re-Election Ploy?

The answer is “maybe, but it doesn’t really matter that much.”

As far as the first part of the answer goes, social media is full of people reposting old tweets where Trump accuses Obama of wanting to go to war against Iran for purposes of winning the 2012 elections. Given that Trump is nothing if not an immature, thin-skinned, gaslighter who projects his own faults on others, it is therefore a distinct possibility. Even Max Boot, a conservative who is normally extremely averse to such notions being suggested about U.S. militarism, retweeted a cartoon alleging this very thing.

Or it could just be Trump’s famous impulsiveness leading him to make a rash decision. Trump is as much an exemplar of that sort of behavior as he is of gaslighting, after all. After the U.S. “embassy”* there was attacked, all the mentions of “Benghazi” could well have provoked him into wanting to demonstrate that he’s not as weak as he believes Obama was.

Ultimately, however, it really doesn’t matter very much. Whether Trump blunders into a war he deliberately chose as part of a re-election strategy, or a war he never consciously chose as a result of a knee-jerk reaction, the consequences of a war with Iran would be equally tragic regardless of the cause.

* I put “embassy” in quotes because it’s not an embassy in the commonly-understood meaning of the term (a building in a national capitol that houses another nation’s diplomatic offices). It’s a military base over 100 acres in size and containing multiple buildings and other facilities.

There Is No Winning a War against Iran

Let’s dispense with humanitarian concerns and just talk about cold, hard, military strategy here.

It doesn’t matter that Trump commands what is clearly the world’s most powerful military. Well, that does matter, but it won’t matter from the point of winning any war against Iran: despite its military strength, the USA would clearly lose. This a function of a number of factors:

  1. Iran’s size and capability. Iran has 80 million people and one of the most capable militaries in the region. That’s way more people than Iraq has. Unlike Iraq on the eve of the US invasion, Iran hasn’t been weakened by decades of crippling sanctions. (And the USA came closer than many realize to losing the war in Iraq.)
  2. Distance, motivation, and local knowledge. Any war would be fought primarily in Iran. The USA would have to badly extend itself with long supply lines. Iran’s forces would be right there. In the USA, it would be a war fought half a world away, for questionable purposes, by an unpopular leader, and with significant domestic opposition. In Iran, it would be fought right there, for national survival. The Iranians would know their local terrain far better than the USA does.
  3. Goal asymmetry. In order to win, the USA must defeat and conquer Iran. In order for Iran to win, it must prevent the USA from defeating and conquering it; it is not necessary for Iran to defeat and conquer the USA in order to win.

It would be far harder for the USA to subdue and conquer Iran than it was for the British to subdue and conquer their 13 rebellious colonies in North America, and we all know how that attempt on Britain’s part went.