The Daily Parker

Politics, Weather, Photography, and the Dog

Connecting through Heathrow

I had the opportunity, but not the energy, to bugger off from Heathrow for an hour and a half or so connecting from Marseille. Instead I found a vacant privacy pod in the Galleries South lounge, and had a decent lunch. Plus I'm about to have a G&T.

I've loaded up my Surface with a few articles, but I really only want to call attention to one of them. Bruce Schneier has an op-ed in the New York Times with his perspective on the Hezbollah pager attack and supply-chain vulnerabilities in general. I may even read that before turning my Surface off.

Next stop: Chicago, home, and dog.

The externalities of cryptocurrency

Other than having absolutely no real value except to scammers and thieves, cryptocurrency has no real value. But a lot of money gets laundered through crypto these days, so people will spend gobs of real currency building data centers to generate more cryptocurrency. These data centers efficiently dump nearly all the externalities of crypto mining onto their neighbors, except for the externalities crypto already dumps on just about everybody else. Oh, don't let me forget that simulated artificial intelligence also needs big data centers:

Across the country, from Indiana to Oregon, companies such as Amazon, Meta and Microsoft are building data centers on sites that can stretch over 1,000 acres, ringed with guard towers and razor wire fences.

People who live near one Northern Virginia center have complained that the mechanical whir of the fleet of industrial fans needed to cool the sensitive computer equipment inside can sound like a leaf blower that never turns off. Cooling the heavy equipment also diverts great volumes of water even in places where it’s scarce. And some of the costs of powering the centers are shouldered by utility customers, in the form of hundreds of dollars a year added to household energy bills.

Local leaders who run interference on behalf of tech giants often play up the benefits, particularly the jobs and advanced technical training opportunities they tout. Recently, a small but growing number of officials have begun to question these deals. In Georgia, where electricity demand and energy grid strain from more than 50 data centers pushed residential utility bills up almost $200 a year on average per household, state senators passed a bill earlier this year that would pause tax incentives for data center development for the next two years.

One thing Cooper doesn't suggest: increasing penalties on public officials who benefit personally from their offices. But that would undermine American-style democracy, wouldn't it?

Cool new Weather Now feature

I've just released a new version of Weather Now, which brings back a feature the app hasn't had since about 2002. Building on the release two weeks ago that added user profiles (as long as you have a Microsoft account), today's release allows users to set their home location and home weather station.

Pages like the Nearby Weather page will show distances from your home location in the list of stations. And other pages will use your home weather station (Current Weather) or home location  (Sunrise Times) as the default starting point. You can still specify different locations for everything. And, of course, you don't have to have a user profile set up to use those features.

To choose your home location, search for a place and then go to the Place Info page. (The link to Place Info is usually on the bottom of a page.) On Place Info, click on "Make this your home place." Similarly, to set your home weather station, go to any weather page and click "Make this your home weather station."

Next up: users will be able to select the stations that appear on the home page when they log in.

Super cool!

Molly White on Hachette v Internet Archive

The US Court of Appeals for the Second Circuit recently ruled in Hachette v Internet Archive that the Internet Archive's Open Library violated copyright law. Molly White today published the best response I have seen so far:

My beliefs are simple, and hardly radical: Libraries are critical infrastructure. Access to information is a human right. When you buy a book you should truly own it. When a library buys a book, they should be able to lend it. Readers should be able to read without any third parties spying over their shoulders, or preventing them from accessing the materials they have legally obtained.

Hachette and the other plaintiff publishers have argued that, by lending out one-to-one digital copies of books they have legally purchased, the Internet Archive’s Open Library is infringing upon the publishers’ copyright and damaging their sales. And, without any evidence of actual harm to the publishers, the Second Circuit went right along with it. They also went a step further, again without evidence, to suggest that libraries are inherently detrimental to society.

[B]y fighting [Controlled Digital Lending], publishers are seeking to overstep the established boundaries of intellectual property law to exert continued control over an item that has already been purchased from them. And they are seeking to diminish the critical rights of readers to read the books they want without being subjected to censorship and surveillance. This is part and parcel with other attempts by digital publishers — of books, but also of films, video games, and other media — to turn media purchases into rentals, so as to extract endless money and private data from their customers.

In other words: even though libraries have been around far longer than the Copyright Act itself, libraries are now a threat to authors. The true meaning is clear: publishers’ abilities to extract exorbitant rents and exert control over readers outweigh the incredible benefits of increased public access to books.

US law protects rentiers better than most of our peer countries' laws do. Yet another reason to get the plutocratic Republicans out of Congress.

Last office day for 2 weeks

The intersection of my vacation next week and my group's usual work-from-home schedule means I won't come back to my office for two weeks. Other than saving a few bucks on Metra this month, I'm also getting just a bit more time with Cassie before I leave her for a week.

I've also just finished an invasive refactoring of our product's unit tests, so while those are running I either stare out my window or read all these things:

Finally, the New York Times ran a story in its Travel section Tuesday claiming Marseille has some of the best pizza in Europe. I will research this assertion and report back on the 24th.

Early autumn summer weather

Just a quick note while I've got my head down with an ugly commit and probably a few follow-up fixes.

After a lovely autumn-cool weekend, today we have some summer-like weather, just warm enough to make me wonder whether I should turn on the air conditioning. I'll decide around 6, I think.

On the other hand, I wonder why I'm sitting inside on one of the last days like this we'll have for six months?

Size matters sometimes

So, I finally figured out why Weather Now kept struggling: I deployed it to a too-small App Service Plan for the load it was getting. And since most of the load is coming from bots, I hope that the robots.txt file I finally deployed properly will get them to stop.

I fixed the mysterious exceptions being thrown, too. But it turned out, the problem was simply load. A bigger App Service Plan brought the effective CPU from 100% to 28% immediately. And it'll only cost another $66 per month...

I'll experiment with other ASP sizes later this week. At least the app works again!

Major, but invisible, debugging effort

I spent hours this weekend and a couple of nights this past week fixing Weather Now. The app has gotten a lot more traffic than usual lately, mostly because I didn't put the robots.txt file in the right location. Unfortunately, all the extra traffic made it really obvious that the app had some serious performance issues, which I traced to some bad asynchronous code design.

The miracle cure for these issues came from Microsoft, and the Microsoft.VisualStudio.Threading.Analyzers package. This easily found the places in the Inner Drive Extensible Architecture as well as Weather Now where I'd botched the async coding.

Along the way I also made a couple of small tweaks that should cut down on the number of error messages the thing sends me. After last weekend's deployment I started getting so many that I had to shut the app down for a while. (Good thing I don't have any paying users.)

Annnndddd...it's not better. I still haven't figured out why the production API keeps dying, even though it seems to work fine in the Dev/Test environment.

Crap.

C'était pas absolutement horrible...

I just finished a 75-minute open-level French test as part of a QA study that Duolingo invited me to participate in. What an eye-opener. And quelle épuisement!

The test started well enough but got a lot harder as it went on, for two principal reasons. First, the order of sections went precisely in the order of my abilities: reading, writing, listening, speaking. Turns out I read French a lot better than I write it, write it better than I understand it, and speak it like a reject from a Pink Panther film. Some poor evaluator will have to listen to me going on for nearly three minutes about how hard the job of cat-herder is. What's worse, I only just now learned the word berger. "Herder des chats" is, apparently, not a thing, but berger de chats potentially is. I hope whoever scores that response at least has a sense of humor.

The second reason it got harder is that "open level" bit I mentioned. Each section got progressively more difficult, such that by the end of the listening part I could barely pick out the topic let alone individual words. Senegalese fishermen, you may be surprised to learn, are harder to understand than recorded announcements at train stations.

Still, I'm glad I did it. I don't know if they'll share the results with me, because they only want the data to calibrate their language-learning product. I hope they do, particularly before I pop out of the Chunnel just over two weeks from now.

I'm dog-sitting again, so a nervous beagle wandered up to my office during the test to see why I hadn't fed her yet. I suppose they both could use an around-the-block and some kibble. I will try to speak French to them, if only for my own practice.

Oh, and if you haven't been able to get to Weather Now this afternoon, that's because I shut it down for a bit while I root out a connection-exhaustion problem. I believe there are too many bots hitting it the last few days, but it still shouldn't crash when they do. Until I can fix the problem, or get rid of the bots, I'm only going to have it up a little bit at a time. (Its data collection continues unaffected, however.)

Not the most boring deployment ever

I've added a new feature to Weather Now: user profiles. It's only the most basic implementation and, at the moment, doesn't actually do anything. But it will lead to a whole range of features that the application hasn't had since it was an old Active Server Pages app in 1999.

Unfortunately, the deployment required setting up additional features on the weather API, so that user IDs travel from the UI to the API securely. The deployment took two hours, and threw up several pipeline failures for a reason having nothing to do with the API changes.

Anyway, now that the base user profile feature works, I can now add:

  • User preferences for measurement systems (metric or Imperial);
  • User-selected home locations;
  • User-selected home page weather lists;
  • Multiple custom weather lists; and
  • Lots of other personalization features.

At some point I'll also finish importing the whole (9-million-plus record) gazetteer, so users can search for more places.

Now, however, I'm going to make some lunch now and take Cassie on a very long walk in the amazing autumn weather we have today.