The Daily Parker

Politics, Weather, Photography, and the Dog

Brews & Choos walk today

The weather doesn't seem that great for a planned 15-kilometer walk through Logan Square and Avondale to visit a couple of stragglers on the Brews & Choos Project. We've got 4°C under a low overcast, but only light winds and no precipitation forecast until Monday night. My Brews & Choos buddy drew up a route starting from the east end of the 606 Trail and winding up (possibly) at Jimmy's Pizza Cafe.

Also, I've joined BlueSky, because it's like Xitter without the xit. The Times explains how you, too, can join. (Cassie also has an account, of course.)

My 4-minute train to Clybourn leaves in 45 minutes, so I want to save a few things for later reading:

Finally, NASA's Astronomy Picture of the Day this morning has a diptych of the Earth, one side from Saturn and the other side from Mercury. What makes it even more interesting is that both photos were taken 19 July 2013, making it the first time the Earth was photographed simultaneously from two other worlds in the solar system.

Creator of BASIC dies

Thomas E Kurtz, co-creator of the BASIC programming language, died November 12th at 96:

Dr. Kurtz and John G. Kemeny, then the chairman of Dartmouth’s math department, believed that students would come to depend on computers and benefit from understanding how to use them.

“We had the crazy idea that our students, our undergraduate students, who are not going to be technically employed later on — social sciences and humanities students — should learn how to use the computer,” Dr. Kurtz said in an interview for Dartmouth in 2014. “Completely nutty idea.”

At 4 a.m. on May 1, 1964, in the basement of College Hall on the Dartmouth campus, the time-sharing system and BASIC were put to a test. A professor and a student programmer typed a simple command — “RUN” — into neighboring Teletype terminals and watched as both received the same answer simultaneously. It worked.

I don't have the earliest programs I wrote because nothing survives from the TRS-80 era, when we saved everything to cassette tape (!), nor from the Apple ][+ era because I never converted those files to PC format. But here is a little thing I wrote in October 1987 in the BASICA (Advanced BASIC) language that shipped with MS DOS 3:

5 DEFDBL A-Z
6 PRINT
7 PRINT
10 INPUT "Number to test = ",N#
15 U$="##########"
16 IF N#<10000000# THEN U$="#######"
17 IF N#<1000000! THEN U$="######"
18 IF N#<100000! THEN U$="#####"
19 IF N#<10000 THEN U$="####"
20 N#=INT(N#)
30 TEST#=1
33 WHILE TEST#<=SQR(N#)
36 TEST#=TEST#+1
40 IF N#/TEST# = INT (N#/TEST#) THEN GOSUB 100
50 WEND
55 PRINT
60 PRINT "I found";FACTORS;"factor(s)."
70 IF FACTORS=0 THEN PRINT "The number"N"is prime."
80 PRINT
81 INPUT "Test another (y/n)";A$
82 IF INSTR(A$,"Y") OR INSTR(A$,"y") THEN RUN
90 END
100 FACTORS=FACTORS+1
120 PRINT USING U$;TEST#;
130 PRINT " * ";
140 PRINT USING U$;N#/TEST#
150 RETURN

If you can find a DOS emulator with BASICA, knock yourself out.

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.