Vaccinated!

I had sort of been keeping an eye on possibilities for registering to get on wait lists as soon as I become eligible for the vaccine on the 15th, so any vaccine-related threads on the local Reddit group immediately get my attention. Yesterday morning, rumors were circulating that three tribal clinics in the area had excess supply and were letting any adult, regardless of age or tribal status, receive the vaccine.

Two of the three rumors got promptly shot down in flames. But people kept insisting that the third one was actually a possibility. I went to the web site for that clinic, and sure enough, hundreds of vaccine doses for that afternoon were yet to be claimed.

Could it be? It sounded too good to be true. The clinic in question was in the next county and almost an hour’s drive away, and I didn’t want to make the drive only to be turned away, so I called them to verify. It was indeed true: they had a surplus of Johnson & Johnson vaccine, and any adult, regardless of tribal status, who made an appointment and showed up could claim a dose.

Everything was handled outdoors in the parking lot of the Swinomish Casino. I did not even have to leave the cab of my truck. I waited less than five minutes to get my shot. It all seemed surreal, what with how so many people are scrambling merely to get on waiting lists. It still seems surreal.

But I have a piece of card stock to prove it was all very real.

Thinking about Privacy Policies

I am in the process of developing and publishing an Android app to the Google Play store. Part of the process of doing so is developing and publishing a privacy policy.

Initially, I thought this would be super-simple: Don’t collect information, then there is nothing to share or to establish policies about sharing. Simple. However, in the real world, things are seldom so simple as they might at first appear.

The first complication came when I realized that although my app does not (and probably never will) gather and pass on usage statistics, the places from which users might download my app, which will include a web site run by yours truly in addition to the Google Play store, certainly will gather such statistics.

Virtually every web server on the Internet logs each and every request it receives, and these log messages typically contain, at a bare minimum:

  • The time a request arrived.
  • The IP address the request arrived from,
  • The URL of the resource being requested, and
  • Basic information on the user agent (i.e. web browser) used to make the request. Such information typically includes the operating system that the user agent was running under.

So, say you are an AT&T customer in Brooklyn who uses your Samsung Galaxy S21 to download a copy of my app. I (or Google) will be able to tell from your IP address that you are an AT&T customer in the New York City metro area. We may even be able to tell that you were in the borough of Brooklyn, and that you were using a Galaxy S21. If we share your IP address with AT&T Wireless, they will be definitely able to determine exactly who you are, what hardware you used, where you used it, and (if you were doing something unlawful and/or abusive) take action against you for what you did.

Some Internet users are shocked to discover this. If you are one of those, consider yourself educated.

Why is this done? Not always for nefarious purposes! In fact, not usually for such. Gathering such data can be extremely useful for dealing with things like abusive users (they exist), troubleshooting software and network problems (they are inevitable), or managing the growth of traffic to a web site or to a cellular network.

But it’s still pretty simple, right? So I am collecting basic usage statistics (and Google Play will doubtless collect some on my behalf that it can share with me in reports). Just do not share the information!

Well, there is the matter that I could end up in jail on a contempt of court charge for adhering to such a policy: what if a law enforcement officer or a process server arrives at my door armed with a warrant or a subpoena?

Okay, then, exclude that and nothing else. Solved!

Not so fast, yet again! What if my app becomes popular with violent white nationalists and neofascists? I am, after all, promising to gather a fairly minimum amount of information and to be as reluctant as possible in sharing it; that makes my app attractive to such individuals.

It also makes it attractive to those breaking laws to undermine oppression and to advocate for more freedom, which is my main intent. If that sounds reckless to you, just ponder that any oppressive order has always considered it a crime to undermine said order; revolutionary politics is intrinsically criminal politics. Lech Wałęsa was a criminal; Martin Luther King was a criminal; Mahatma Gandhi was a criminal. If the Founding Fathers of the United States had failed in their endeavor, they would have been prosecuted and for the most part executed for the crime of treason against the British Empire.

The only exceptions to the above rule are certain situations when the revolutionaries are judged to be sufficiently tiny in number and powerless so as to pose little or no threat to the established order. And as soon as they gain enough power to cease being so, watch out! The velvet gloves will be replaced by an iron fist.

But I digress. So now I must craft an exception for things like neofascist and white nationalist politics. While I do not want to, and do not have any intent to, regularly monitor the download logs, I want to be free to cooperate with antifascist organizations should my cooperation prove helpful to the cause of fighting fascism.

That, of course, begs the question of just what, precisely “neofascist and white nationalist politics” is. However I define it, it opens up the prospects of all sorts of word games: “No, I am not a ‘fascist,’ you stupid leftist. I am a ‘nationalist’ and an ‘identitarian.’”

Now I am stuck trying to anticipate those word games, all the while also having a privacy promise that still is meaningful to the vast majority of people, even people whom I might politically disagree with, who are nonetheless not fascists and whose beliefs must be accepted as part of the diverse spectrum of beliefs in any free and open society.

In the real world, things are seldom so simple as they might at first appear.

Testing Android Apps

It leaves a lot to be desired.

The normal unit testing is advertised as supporting most of the Android class library (which is not the same as the standard Java class library), but what they don’t tell you is that it’s chock full of stub-out dummy logic. The routine to load an image from a file, for example, always returns a 100 by 100 black image. That’s sort of a deal-killer if one is trying to test image-processing code.

The instrumented testing runs on Android devices so avoids those headaches, but it too is extremely limited in scope and needlessly developer-hostile. For example, the test code is by default strictly disallowed from making any modifications to the filesystem. If one is testing an app that processes files, that again ends up being a deal-killer (how, exactly, am I to create the test files to feed to the app being tested)?

There are ways to disable this misfeature, but they are very poorly documented. It’s a setting buried deeply in an obscure settings menu somewhere. Where, exactly, is not standardized: it varies from device to device so much that one set of instructions is not even valid for a single Android OS release. I gave up in disgust after pissing away at least an hour searching in vain for it on my phone.

If Google wants developers to write good, comprehensive tests for apps, they need to stop making it as difficult as possible for us to do so. Until then, Google can take its pleading about writing tests and go fuck themselves. I will still write tests, but not very comprehensive ones.

Crimping versus Soldering

The world is full of analyses like this one that confidently perform crimping to be better than soldering. The real world is not nearly so simple.

Yes, a properly executed crimp connection with a quality crimp connector is by all measures superior. The devil is in those weasel words.

Given that it is possible for a crimped connection to be superior to a soldered one, and given that crimping is faster than soldering, why would anyone solder? Soldering when connections can be crimped seems obsolete.

That is how many retail hardware stores promote crimping, often in a big blister pack with cheap crimp connectors and a cheap crimping tool like this one. Well, good luck with that. It takes a skilled craftsman to execute a quality crimp with a cheapo tool and cheapo connectors. It is, in fact, easier to learn to solder.

An anecdote to close: When I worked in IT support, the department purchased a cheap crimping tool, that could crimp both 6 and 8-position modular connectors, and some bulk cable. No longer would custom lengths of cable need to be special ordered.

Those crimps were responsible for trouble ticket after trouble ticket. When I broke the crimpers in the attempt to exert enough force for a quality crimp, I put my foot down and insisted they spend over $100 on a name-brand, quality crimping tool and set of crimping dies. It was money well spent, because the number of trouble tickets dropped to zero on connectors crimped with it.

It’s not that bad with standard wire crimp connectors; $25 or so can get you a good, compound-action, ratchet-based crimping tool. Even then, it’s good to budget in some practicing, and learning how to recognize a bad crimp. But again, that’s not how crimping is sold. Most of those crimp kits don’t even cost $25 total, and no mention is made of skill development.

Personally, I solder. Already have a soldering iron and know how to use it as a result of messing with electronics for many years, and I don’t splice wires often enough to justify the expense of a crimping tools, the clutter managment headaches of maintaining a stock of crimp connectors, and so on.

Danger, Joe Biden, Danger!

Make no mistake, the refugee crisis along the southern border represents a real danger for Biden and a real opportunity for the fascists.

The Democrats are already swimming against the tide: their majority in Congress is razor-thin, and midterm elections tend to go badly for the party that occupies the White House. A refugee crisis would be just the thing the fascists need to whip up their base and get people to forget what a disaster Trump was.

Remember how the Trump regime was rightly excoriated for the deliberate cruelty of its policy of separating children from their families? Well, now unaccompanied minors are showing up en masse at the border, asking for refugee status. They have, in other words, been pre-separated from their families, largely by the actions of those families themselves.

What does that say, that large numbers of families are now willing to impose the same cruelty on their children that hateful fascists once wished on them? The most logical explanation, I think, is that families are doing so because the conditions the children are experiencing when with their families, both in the refugee camps, and before the families fled their home countries, is so bad that, as bad as child separation is, it is being judged as better for the affected children.

Conditions, in other words, must be really bad for those refugee families.

Any solution to the crisis must therefore be focused on resolving that problem, and not just making things more difficult at the border itself. Such latter measures are unlikely to work very well. Most likely a massive military deployment (with shoot-to-kill orders), and the impressment of the survivors into Nazi-esque forced labor and death camps would do the trick, but obviously that’s beyond the pale for any civilized country to so much as contemplate.

Measures that fall much short of that are unlikely to be sufficiently discouraging. Remember, families are already volunteering to send their children into concentration camps that fall short of death camps. The border wall is both incomplete and porous (it is easy to defeat with standard tools, and smaller individuals, such as children, can squeeze through the slats).

The conditions that are pushing refugees across the border must be addressed. The quickest short-term fix would probably be to fund improvements at the holding camps in Mexico. Once COVID-19 is under better control, we can (and should) resume admitting refugees, and on a widespread scale.

The fascists will howl that the latter is being done to destroy their vision of America, and they would be right. This is very much a reason why we need more immigration to the USA.

Letting more immigrants in is good for many reasons, and one of those reasons is that it dilutes the power of the fascists, because recent immigrants tend not to become fascists. Immigrants, as a rule, simply make for better citizens of an open and free society than does Trump’s base of Christian fascists. It is probably politically toxic to admit this, however, so don’t expect any establishment figures to do so. (Such frankness is something I can get away with, because I am just a semi-anonymous nobody with a blog.)

That said, however, it is far better to not be compelled to flee one’s country of birth in the first place than to be admitted as a refugee in a foreign country. That is going to be a harder nut for establishment politics to crack, because it means questioning U.S. neo-imperialism, which is directly responsible for regimes like the one in Honduras (installed with the approval of the Obama administration) that are prompting so many to become refugees in the first place.

The bottom line is that Biden must move swiftly and decisively on addressing the issues that are forcing Central Americans to move north. Failure to do so would not only be a moral weakness, but a weakness from the standpoint of realpolitik as well.

Dumb Dems, Part Two?

In one of my more obvious (to me) insights, I correctly predicted that the Democrats would end up sorely regretting their decision to go nuclear in 2013.

Well, here we go again.

Or do we? The most likely measures fall short of an outright kill of the filibuster and are more a scaling-back of it. Of course, as the article linked above argues, that is likely to beget further scalings-back.

One thing that bears pointing out is that weakening the filibuster is less Constitutionally harmful than the continued evolution of an imperial presidency, and the latter becomes more likely if Congress is paralyzed by an unweakend filibuster. The filibuster is mentioned nowhere in the U.S. Constitution; it is merely one of the many “Rules of its Proceedings” the Senate chose to establish for itself per Article I Section 5, and it can just as easily weaken or abolish that provision as it first created and then strengthened it.

Yes, strengthened it. It is far easier to filibuster something today than it has historically been. A filibuster is nowadays mostly a simple matter of paperwork. It used to be the case that Senators opposing the measure had to actually be physically present and take turns speaking in order to talk a bill to death. In fact, returning to this past state of affairs is probably the most likely measure to be enacted.

In a real sense, this time, there is less room to maneuver. Fail to pass a new civil rights bill, and we head into a new Jim Crow era of near-permanent minority rule. So the Democrats’ hand is being forced in a way that it was not in 2013.

But this does not in any way change what Ruth Marcus wrote in the article linked above; a backlash is still likely to come. It is one reason for my general pessimism about the political future of the United States.

Relations with China Will Not Get Better

Really, this should come as about zero surprise; in fact, I predicted it back in 2019. (That was pre-pandemic, and I got many of the specifics wrong, but the general gist of relations swirling down the toilet with China not just being all Trump’s fault has aged well.)

Many Marxists foolishly supported (or refused to oppose) tyranny in the USSR, falsely believing that the principles of socialism would inevitably produce freedom despite the immediate result of the revolution in Russia producing a new and more oppressive tyranny. Many on the Right criticize such naïveté, and rightly so.

Well, it was equally stupid to think that a totalitarian dictatorship could inevitably be steered towards becoming an open society by the magic of capitalism and markets. Capitalism has proven itself compatible with states of profound unfreedom more than once, so it should come as no surprise to see it exhibit compatibility with so-called “socialism with Chinese characteristics.”

A falling-out was going to happen regardless of Trump, so it should be no surprise that the end of the Trump era has not changed the general downward spiral of US/China relations.

A Nearer Miss than Many May Realize

On Thursday I said there was a chance of snow tonight into tomorrow morning (note the emphasis). At that time, it really looked as if the models might be converging on that forecast. But, it was still a ways out and they had not settled on lowland snow for very long, so I had my doubts.

Well, it’s not happening. My skepticism was borne out: the storm tracked further north, keeping the coldest air further north. The front also made landfall a bit earlier.

But we actually came fairly close to getting some lowland snow. Here is a capture from a highway cam near Port McNeill, BC (near sea level at the northern end of Vancouver Island) this morning. Pretty snowy.

Why They Don’t Release Raw Model Guidance to the Public

This is called a meteogram:

It is a graphical representation of a model run for a single point on the Earth’s surface, in this case the weather station at Bellingham airport. Note that I should have said “suite of model runs” instead of “model run:” each so-called forecasting model is in fact multiple runs, each initialized with a slightly different set of parameters, all based on current observations. This is done to provide a measure of how reliable the model is: if each run in the suite is all over the map (like they are for the weekend after next), it means the model’s predictions cannot be trusted very much.

By contrast, every run in the suite above is in agreement that we are about to have a lowland snow event, totaling an inch or two. Very high confidence, but wait. This is for the GFS model, the one developed by the National Oceanic and Atmospheric Administration. This model has a tendency in our climate to underestimate the moderating effects of the Pacific Ocean and the Cascade Mountains, plus it is generally not as reliable as the ECMWF model developed by the EU nations. What does that model have to say?

Both significantly less snowy and significantly less confident in any sort of snow outcome. Let me let you in on another secret: any time those models forecast a snowfall range in the lighter gray colors, one almost never sees any accumulation unless the temperature is solidly below freezing at the onset of the event. The temperature is not forecast to be solidly below freezing. In other words, this model is saying there is an off chance of seeing some wet flakes in the air tonight, with no accumulation.

Now, if the ECMWF model had shown basically the same story as the GFS one, we would be in a situation much like we were going into the solstice, and I would be making a confident snow prediction regardless of what the official forecasts said. If both models consistently tell the same story, they are almost always correct.

But both models are not consistently telling the same story, so what to do about it? First, what we can do is limited: it’s going to be a lower-confidence forecast, no matter what. The signs are mixed as to what is going to happen. However, the more accurate of the two models is saying little if any snow tonight. Moreover, the less accurate model is known to have defects which can explain precisely this discrepancy.

Therefore, it is wise to go with the ECMWF guidance: an off chance of some wet flakes in the air.

But note what would have happened if a) I liked snow, b) I didn’t know about the defects in the GFS model, and c) I let my emotions cloud my judgement. I would have helped start a false rumor about there being a viable chance for an inch or two of snow overnight.

This is why the models are often called model guidance: they are not there to forecast the weather, they are merely there to help people forecast the weather.

Damp on Saturday, Wet on Sunday

That is both my forecast and the official forecast. On the subject of the official forecasts, they are usually pretty good, and usually the same forecast I would give, were I a professional weather forecaster. The times I make a big stink are the times the official forecasts don’t make much sense to me.

Anyhow, if you’re planning outdoor activities, Saturday definitely sounds like the better day. The source of the moisture that will make Sunday (and the beginning of the work week) so wet is coming out of the tropical Pacific, so it will drag some relatively warmer air up our way with it. Expect some high temperatures in the fifties, maybe well into the fifties (Bellingham is often one of the warmest spots in Western Washington when a strong south wind is blowing, more on why that is the case sometime later).

That means snow levels will be rising, though at this time it seems likely they will stay (just) below the elevation of the Heather Meadows area. Still, if I were skiing, I would opt for Saturday. Some light snow which is drier because temperatures are still reliably below freezing sounds a lot nicer than copious amounts of heavy, wet “Cascade concrete” snow.

This will likely prove to be just a temporary mild interlude to a generally cool pattern that we are for the next several weeks. The long-range models have all been consistent with things staying on the cool side at least through the first half or March.

This also means that we’re not out of the woods quite yet when it comes to lowland snow; yes we can get lowland snow in March, sometimes significant amounts of it. I must emphasize, however, that at this time there is no specific indication of any such thing. The dice are merely loaded so that outcome has a higher chance than normal, that is all.