The Daily Parker

Politics, Weather, Photography, and the Dog

Fall down go boom

I managed to acquire a few bruises last night walking Cassie. I'm fine; she's fine; but my left hand and elbow are a bit sore.

Yesterday continued our really strange week as the repeating 96-hour cycle of cold and thaw continued:

Starting around 4pm, the warm front pushed just enough moisture ahead of itself to give Chicago a fine mist that instantly coated everything. Even though the air got above freezing later on, the sidewalks did not. Result: most of them got a perfectly smooth, nearly invisible coating of ice about 2mm thick.

Cassie, of course, failed to understand why I insisted on walking at a small fraction of our usual speed. She has four feet, you see, and while one or two of them might slip a bit, the dog remained standing.

I, however, did not. Several times.

And here we go again:

So, Cassie won't get all the walkies she deserves today, but she did get a ride in the car. And my bruises will heal.

Quick links

The temperature at Inner Drive Technology World Headquarters bottomed out at -16.5°C around 8am today, colder than any time since February 15th. It's up to -8.6°C now, with a forecast for continued wild gyrations over the next week (2°C tomorrow, -17°C on Monday, 3°C on Wednesday). Pity Cassie, who hasn't gotten nearly enough walks because of the cold, and won't next week as her day care shut down for the weekend due to sick staff.

Speaking of sick staff, New Republic asks a pointed question about the Chicago Public Schools: why should their teachers be responsible for making life normal again?

The Washinigton Post asks, what will people do with the millions of dogs they adopted when they (the people, not the dogs) go back to work?

The lawyers for Cyber Ninjas ask, who's going to pay their fees after the grift-based organization shut down abruptly?

And North Michigan Avenue asks, will any more pieces of the Hancock Center fall off the building?

And I ask, will Cassie ever let me sleep past 7am?

Winter, CPS, CTU, and THC

Every so often in the winter, a cold front pushes in overnight, giving us the warmest temperature of the day at midnight. Welcome to my morning:

The sun actually came out a few minutes ago—right around the time the temperature started dropping faster.

The forecast says temperatures will continue falling to about -12°C by 3pm, rise ever so slightly overnight and tomorrow, then slide on down to -17° from 3pm tomorrow to 6am Friday. And, because it's Chicago, and because the circumpolar jet stream looks like Charlie Brown's shirt right now, between 6am Friday and 9pm Saturday the temperature will steadily rise more than 20°C (that's 36°F to the luddites out there), peaking at 3°C around 9pm Saturday.

Before the cold front hit last night, the Chicago Teachers Union voted to halt in-person teaching, citing alarming Covid numbers. The Chicago Public Schools promptly locked them out of virtual teaching, giving about 100,000 nothing to do and nowhere to go. (Some CPS staff have at least opened the school buildings so kids can get lunches and stay warm, but the SEIU won't cross what it sees as a picket line, so...)

Since most of the area's colleges and universities have moved back to virtual instruction for the next two weeks, I have trouble understanding the CPS position here, or why CPS locked the teachers out. Sure, the teachers may lose a day's pay, but the kids will suffer more harm than either organization.

Chicago's public health officials say the schools are safe, with Chicago Mayor Lori Lightfoot complaining that "There’s no reason to shut down the entire system, particularly given the catastrophic consequences that will flow." But the CTU didn't call a work stoppage; they called for virtual classes, something CPS has done for almost two years. That leaves me with the impression that Lightfoot and CPS want to stand up to the CTU more than they want to find a solution.

Frankly, both sides look bad here. And again: the kids get the worst of it.

Hard to imagine why Illinois recreational marijuana sales doubled to $1.38 billion in 2021.

Weather Now 5 soft launch

After 15 months of on-and-off work, I'm finally ready to show off Weather Now v5.0, currently in development.

I started building the API and UI projects on top of the core and automation features around Thanksgiving, spending about 45 hours over the past 5 weeks on it. Overall, I've worked about 200 hours to get it to this point, starting with an empty Visual Studio solution file and an empty Microsoft Azure subscription.

Since about 99% of what you can't see already exists, I don't expect it will take me another 15 months to build the stuff you can see. In fact, I only have 21 more JIRA cases (out of 187 so far) to bring it to production. Adding an existing v4 feature to v5 just requires creating the Blazor page, API method, and glue code, which shouldn't take more than 2-3 hours per item, including testing.

Check in frequently. I push updates a few times a week at this point, so you should see pretty rapid changes until I launch the production release (I hope) before the end of March.

A little discomfort now, a lot more comfort later

Despite the forecast of 200+ mm of snow overnight, we got about 50 over here. O'Hare reported 100 mm of snow on the ground at 6am, which again didn't even come close to the dire warnings we got Friday night.

Still, the sidewalks by my house have snow, slush, and salt all over them, which Cassie discovered (mostly to her delight) first thing this morning. Within 10 minutes, she'd gotten ice and salt lodged into one of her pads and had to hop the last 20 meters to the door.

I have a solution for that: dog boots. Parker's old boots just fit Cassie, though she expressed a bit of skepticism mixed with heartbreaking trust as I got them over her paws:

And just like Parker the first time he wore those same boots, Cassie figured out pretty quickly that they had benefits. We just did a 2-kilometer rectangle around the neighborhood with her bouncing through the snow and not getting salt in her pads.

Bonus photo from yesterday morning:

Snow record for us

We almost made it to December 31st without measurable snowfall, which would have broken the record of 290 days. Alas, at day #288...

I snapped that photo with the wind at my back and quarter-sized flakes melting on my coat. It was 1.7°C then, but by the time I sloshed home with the wind in my face and rain soaking through my coat, it was getting just enough warmer to really make the weather really suck dingo balls.

At least I now have my Covid booster. Hurrah. And I now want to take a nap...

The kind of weather record we can all enjoy

If, as expected, Chicago gets no measurable snow by 6pm tonight, we will set a new record for the latest measurable snowfall of the cold season (July 1st to June 30th, believe it or not), and the second-longest stretch without snow in recorded history:

On Monday...Chicago tied the record, which dates back to Dec. 20, 2012.

There is no snow in the forecast until possibly well beyond Christmas.

There has been some snow so far this season. But instead of having the first typical snowfall earlier in the fall, there have only been traces.

To be measurable, there must be at least [2.5 mm]. Since November, there have been such amounts in the area, but not at O’Hare International Airport, which is the official weather recording station for Chicago.

We last had measurable snowfall on March 15th, 280 days ago. The longest period—which the 10-day forecast suggests we might tie or break—ran from 4 March to 19 December 2012, comprising 290 days.

That said, through December 21st last year we only had 18 mm of snowfall at O'Hare, before getting over a meter of snow through the end of February.

Personally, though, I'm happy with our mild and snow-free December.

Glorious Solstice to All, too.

Your year in weather disasters

The Washington Post breezes in with a month-by-month interactive feature:

[E]vidence increasingly shows that historic heat waves, monster rain events and ultra-intense storms are exacerbated by the warmer air and water of our overheating planet.

“The only two truisms when it comes to extremes in climate change are that almost everywhere: The hot hots are getting hotter and more frequent, and the wet wets are getting wetter and more frequent,” said Daniel Swain, a climate scientist at UCLA who specializes in the relationship between climate change and weather.

The year began with what Swain might call a “wetter wet” against the backdrop of a year-long drought, and it just got weirder from there.

Enjoy, and here's to more climate-change craziness in 2022!

And now for something completely indifferent

I will now take a break from my ongoing struggles to make Blazorise play nicely with Open ID authentication so I can read these:

And finally, WGN confirms we hit back-to-back record temperatures Wednesday and Thursday, both tied for 11th warmest December day in Chicago history.

New technology, new weirdness

I've mentioned that Inner Drive Technology will release a new version of Weather Now pretty soon. I've finished everything except the UI and migrating the data, in fact, so I may even finish in January.

I have an odd bug, though, so I'm posting here in addition to the posts I made on Stack Overflow and on the Blazorise GitHub project.

In short, Blazorise speeds up UI development by abstracting away a lot of the formatting and layout for a .NET Blazor app. Blazor, in turn, abstracts away most of the lower-level UI code that makes websites interactive and fast. It's a long way from the XML-XSLT page construction I used in the last Weather Now UI update back in 2007. (Yes, the UI turns 15 soon—but the app itself turned 22 on November 11th.)

Without going too deeply into the issue, let me sum up. The new version will allow users to log in and customize their experience. But it still needs to work for anonymous users, who will make up probably 95% of the users.

The new site will continue the left-side navigation pane for desktop views. To do that, I built a MasterLayout.razor page that looks like the demo code in the Blazorise documentation:

<Layout Sider="true">
	<LayoutSider>
		<LayoutSiderContent>
			<Bar Breakpoint="Breakpoint.Desktop" NavigationBreakpoint="Breakpoint.Tablet" ThemeContrast="ThemeContrast.Dark"
			     Mode="BarMode.VerticalPopout" CollapseMode="BarCollapseMode.Small">
				<BarToggler />
				<BarBrand>
					<BarItem>
						<BarLink To="">
							<BarIcon IconName="_customIcon" />
							Weather Now
						</BarLink>
					</BarItem>
				</BarBrand>
				<NavMenu />
			</Bar>
		</LayoutSiderContent>
	</LayoutSider>

	<Layout>
		<LayoutHeader Fixed="true">
			<Bar @bind-Visible="@_topbarVisible" Breakpoint="Breakpoint.Desktop" Background="Background.Primary" ThemeContrast="ThemeContrast.Light">
				<BarBrand>
					<BarItem>
						<BarLink To="">
							<BarIcon IconName="FontAwesomeIcons.CloudSun" />
							Weather Now
						</BarLink>
					</BarItem>
				</BarBrand>
				<BarMenu Class="justify-content-end">
					<BarEnd>
						<AuthorizeView>
							<Authorized>
								<BarItem>
									<Blazorise.Icon Name="FontAwesomeIcons.User" Visibility="Visibility.Visible" />
									Hi, @context?.User?.Identity?.Name
								</BarItem>
							</Authorized>
						</AuthorizeView>
						<BarItem>
							<LoginDisplay />
						</BarItem>
					</BarEnd>
				</BarMenu>
			</Bar>
		</LayoutHeader>

		<LayoutContent Padding="Padding.Is4.OnX">
			@Body
		</LayoutContent>

		<LayoutFooter Fixed="true" Padding="Padding.Is4.OnX">
			Copyright ©@DateTimeOffset.UtcNow.Year Inner Drive Technology.
		</LayoutFooter>
	</Layout>
</Layout>

The issue is that when a logged-in user views a page, they see the part within the <LayoutSider> tag, which includes the navigation menu. When an anonymous user hits the page, they don't see anything in that area.

The culprit turns out to be the <Bar Mode=""> attribute. If that attribute is present with any value at all, the behavior occurs. Without that value, the behavior does not occur.

One more data point: the Program.cs startup code contains this bit:

builder.Services.AddRazorPages(options =>
{
	options.Conventions.AllowAnonymousToFolder("/");
	options.Conventions.AllowAnonymousToPage("/Index");
	options.Conventions.AllowAnonymousToFolder("/_content");
	options.Conventions.AllowAnonymousToFolder("/Pages");
	options.Conventions.AllowAnonymousToFolder("/Shared");
});

That code lets anonymous users see any content in the app that doesn't specifically require being logged in or authorized.

Anyway, I hope someone in the 'verse sees one of these posts and knows what has gone wrong. (If you do, please comment on the Stack Overflow post so we both get reputation points.)