The Daily Parker

Politics, Weather, Photography, and the Dog

Weather Now turns 25

The domain name wx-now.com went live on 11 November 1999, 25 years ago today. The earliest known Wayback Machine capture of the old Active Server Pages site was in September 2000; this screen shot from January 2001 looks a bit closer to what it looked like when it went live:

In 2008, Katie Zoellner gave it a facelift that lasted pretty much until March 2022, when I completely overhauled the app, writing an entirely new UI and refactoring about 50% of the internal code.

I still have all the old source code. It's trippy to look at how I wrote 25 years ago. Even trippier that I've had an application running in the wild continuously for that long.

Ah, dictatorship

When voting, consider that under a dictatorship, courts have no independence and have to issue nonsensical rulings like the one a Russian court just issued in order to remain in favor of the dictator:

U.S. tech giant Google has closed up shop in Russia, but that hasn’t stopped a court there from leveling it with a fine greater than all the wealth in the world — a figure that is growing every day.

The fine, imposed after certain channels were blocked on YouTube, which Google owns, has reached more than 2 undecillion rubles, Russian business newspaper RBC reported this week. That’s about $20 decillion — a two followed by 34 zeros.

Dmitry Peskov, the press secretary for Russian President Vladimir Putin, told reporters Thursday that the figure was symbolic and should be a reason for Google to pay attention to the Moscow Arbitration Court’s order to restore access to the YouTube channels.

The sum grew so large because the fine increases with time in noncompliance, with no upper limit. The order was made after 17 blocked channels joined a lawsuit against Google’s American, Irish and Russia-based companies, according to RBC. The lawsuit predates Russia’s invasion of Ukraine and was initiated in 2020 by a channel that YouTube blocked to comply with U.S. sanctions.

The Post drolly notes in the article that "Google did not respond to a request for comment."

In all seriousness, if the XPOTUS returns to office, it's only a matter of weeks before Judges Aileen Cannon (R-FL) or Matthew Kacsmaryk (Bigly R-TX) come up with something similar.

Cool new feature on Weather Now

Since the beginning of Weather Now back in 1997, I have had total control over what users see on the home page. That changed today.

Now, once you have created a profile by logging into the app with your Microsoft account (O365, Live ID, Xbox, doesn't matter), you can change your home weather list. To add a station, simply go to any Current Weather page and click "Add to home page". This will take you to your Profile page, where you can see the entire list on the "Home page" tab.

Once there, you can remove any places you don't want. (The app populates your custom list with the default list the first time you add anything.)

Have fun with this! I know I will. I still have other features to write while my real job goes through a transition, so keep watching for more Weather Now updates.

Really cool Weather Now release

I've just pushed Weather Now v5.0.9057, which has some of the coolest shit I've built into the app, ever. Introducing: maps and charts!

At my real job, I did an evaluation of charting tools for the app we're developing, and determined that Syncfusion had the best balance between ease and power. Boy, does it ever. I managed to get a community license for Inner Drive Technology and spent the last few days playing with it.

There are also a couple of bug fixes, and one change to cut down on all the screen-scrapers that have been hitting me (you have to register to get archival data).

I invite all Daily Parker readers to check out the new features, and please give me feedback. I think it may need some usability fixes, and I still have a lot of work to do on personalization—particularly around people selecting their preferred measurement systems.

Still, I'm jazzed at how quickly all the features came together, and how easy Syncfusion's tools are. I hope y'all enjoy the new toys.

First Monday in October 2024

The extreme-right-wing US Supreme Court begins a new term today, which we can all expect to continue the trends they have been on for the last 30 years. All we need is a razor-thin margin in one or two swing states on the 5th, and then, as George HW Bush said once, "Zip-a-dee-doo-dah! Now it's off to the races!"

Meanwhile:

Finally, Cloudflare announced late last week that it blocked the largest distributed denial-of-service (DDoS) attack in history. The attack, whose packets came mainly from Russia, peaked at 3.8 Tbps, beating the previous record of 3.47 Tbps against a Microsoft Azure customer.

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!

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.