The Daily Parker

Politics, Weather, Photography, and the Dog

Got Brews & Choos down to a science

Yesterday was the 5th anniversary of the Brews & Choos Project's high-water mark before the pandemic. On 7 March 2020, I went farther than I'd ever gone before in search of breweries to add to the list, visiting Penrose and Stockholm's in Geneva, then More and Lunar in Villa Park on the way back. A few days later the world stopped for a while. It would be almost three months before I visited another brewery.

Yesterday, I took a half-day of PTO, braved some crappy early-spring weather, and met up with my Brews & Choos buddy at a relatively new place in the Pilsen neighborhood of Chicago. We managed to visit five South Side breweries, and—here's the science part—consumed no more than 3 pints of beer over 5 hours. It was a marathon, not a sprint, after all.

In any event, I've got a lot of photos to go through and a lot of reviews to write, so look for them to come out over the next few days.

And hey, if you want to see more Brews & Choos reviews, contribute to The Daily Parker! Your $5 contribution keeps the site running for a day—or buys a tasing-size beer.

Another reason to contribute: I've started re-developing The Daily Parker's code from scratch. I changed direction slightly on an existing project to make it a blog on steroids, and I think it'll be super-cool when complete. So how about throwing in another $5 a month to support that, too?

Another day, another OAFPOTUS grift

I want to start with a speech on the floor of the French Senate three days ago, in which Claude Malhuret (LIRT-Allier) had this to say about the OAFPOTUS:

Washington has become the court of Nero, an incendiary emperor, submissive courtiers, and a jester high on ketamine in charge of purging the civil service.

This is a tragedy for the free world, but it is first and foremost a tragedy for the United States. Trump’s message is that there is no point in being his ally since he will not defend you, he will impose higher tariffs on you than on his enemies and will threaten to seize your territories while supporting the dictatorships that invade you.

I have faith in the strength of American democracy, and the country is already protesting. But in one month, Trump has done more harm to America than in four years of his last presidency. We were at war with a dictator, now we are fighting a dictator backed by a traitor.

Malheureusement, il a bien raison. And his speech is worth reading (or hearing, si vous parlez français bien).

But that isn't all that happened in the last day or so. No, every day brings new revelations of stupidity and corruption in the new administration:

And now I will take a half-day of PTO and explore four new breweries in Bridgeport and Pilsen. If only the weather had cooperated.

Support The Daily Parker on Patreon

As threatened promised, I'm starting to beg for money to help support The Daily Parker and Weather Now. You can go to Patreon and sign up to help us, with special member benefits as you contribute more.

The Daily Parker costs about $5 a day to run (though I hope to reduce that significantly this fall), and Weather Now costs another $10. They're not entirely labors of love, as I have used Weather Now as a demo project to land new work. But after more than five years with the same full-time employer, those days might be behind me—even though the weather never stops.

So, hey, buy me a coffee. I'll put your name in lights!

Wow, this totally bites

I got some bad news this morning: my dentist, John C McArthur, announced his retirement as of March 17th.

I started going to Dr McArthur in 1974. In fact, I was one of his first patients after he took over the practice from his father—who was, in turn, the dentist my mother, uncle, and grandparents started going to in 1958. So my family has a long, long history going to his Hubbard Woods office. I mean, 13 presidents long. I'm going to miss going up there.

Moreover, I have never had a cavity. So I would say he had some skills. (Of course, as he would point out, I had good genes, good habits, and fluoridated water, which may have helped.) Going to the dentist has never caused me any anxiety, so I've never really understood why other people dread it.

I mean, I've never gone to a different dentist. I've never even thought about it. What do I ask them? "How many of your patients have you kept free of cavities for 50 years?" I hope his office has a good referral.

Obviously, I knew this day would come. I figured he'd retire during the pandemic, but he kept going, for which I'm grateful. I wish him a long and happy retirement.

Reading while the world compiles

One of my work projects has a monthly release these days, so right now I'm watching a DevOps pipeline run through about 400 time-consuming integration tests before I release this month's update. That gives me some time to catch up on all this:

The New York Times has a long explanation of how the Clown Prince of X took over the federal bureaucracy.

All right, the build has finished, so I can now deploy. And for no reason other than I like it, here is a photo of Cassie watching TV with me last night:

Why The Daily Parker costs so much

A longtime Daily Parker reader asked this about yesterday's post:

"The Daily Parker costs $4.87 per day" -- I'm really hoping that's a misprint, because that's almost $150 a month, which is ten times what I pay for my web hosting package which comes with unlimited domains, a full email service (IMAP+SMTP over TLS), click-to-install WordPress and MySQL database creation, SSH access to the back-end Linux machine, and excellent customer support.

Also -- and I *really* hate to say this to a fellow IT professional -- your web site often seems rather slow. So much so that I'd built a mental image of it running on an old PC in a corner of your apartment, and I'd put the slow response times down to the latency of a hard disk spinning up from idle.

So, he's not wrong: The Daily Parker right now is slow and buggy. And expensive*. (Ironically, when it was literally running on a PC in the corner of my apartment prior to 2013, it ran like Jesse Owens.)

Sherman, set the Wayback Machine to October 2015, when I deployed the current version of this blog. From the blog's separation from braverman.org in 2005 until 2015, it ran on DasBlog, a .NET 1.1 blog engine that worked most of the time and had a few features I liked. I dragged it kicking and screaming up to .NET 2.0 and later .NET 4.0, and there it stayed.

After 10 years and dozens of tweaks, I decided to modernize by moving to BlogEngine.NET, which I also forked and modified. This engine runs on .NET 4.8, which I had to shoehorn into an Azure App Service when Cloud Services went away a couple of years ago. BlogEngine.NET had modest performance problems when it had a nice virtual machine all to itself, as Cloud Services weren't too different from on-premises hardware. But Azure App Services don't quite work the same way, such that many of the performance optimizations in the BlogEngine.NET code actually cause performance headaches in App Services. For example, at app start, the engine loads the entire blog history into memory, because in 2007, when the project began, memory was fast and disks were slow. (NB: The Daily Parker has over 9,700 posts spanning 27 years.) Also, the code runs entirely synchronously, so under load it spins up more and more threads until it just collapses from exhaustion.

So here we are: running a very old blog engine on a nearing-end-of-life version of .NET that everyone is tired of.

But, aha! There is a solution, which I've been kicking around for almost as long as I've had a blog, and which I finally have the skills and time to work on. I'll simply build my own. It'll be idiosyncratic, sure, but it'll be fast and it'll be cool.

Or maybe I'll go back to DasBlog, now that someone has rebuilt it in .NET Core.

Nah. I'm going to write my own. Target date: October 15th, ten years after I released this version.

* It's actually now around $3.34 per day after a Microsoft Azure pricing change on February 12th which just showed up in the cost management tool today. The costs break down as follows: App Service type B2, $2.49; storage (media and event log), 52¢; database (serverless type B), 33¢. So, around $100 per month.

Almost everywhere in the world

Late Tuesday night, Weather Now finished importing and indexing 15,430,045 places from around the world, ending with Mutirikwi Dam, Masvingo, Zimbabwe at 9:29 pm CST. (I need to re-import about 11,000 records for places that don't belong to any particular country, but that's low-priority.)

When I first built the Weather Now Gazetteer in July 2002, I only imported populated places, because database space was a lot more expensive then. So from 2002 until the v5 upgrade launched 3 years ago, the Gazetteer had about 7.5 million records and lived in a relational SQL database that migrated to the Cloud in 2013.

This time, I imported every scrap of geographic data I could find in the US, which added 8 million more. And starting later this year, I'll automate updates, particularly from sources that change frequently like the National Geospatial-Intelligence Agency and the Federal Aviation Administration. I may import other databases later on, but for now, I think we're good.

Pricing for Cosmos DB works differently than it used to for SQL Server. Weather Now v4 (2013-2022) used an Azure SQL DB size that cost $10 per month. That gave me up to 10 GB of relational storage for everything, which is why all the weather data moved to really inexpensive flat storage (Azure Tables) that cost about 4.5c per GB per month. When Weather Now lived on-premises through 2013, the Gazetteer and weather data took up about 50 GB (25 GB for the Gazetteer and 25 GB for the first 11 years of weather data), but it cost nothing except electricity—$100 a month of electricity, in fact.

With Cosmos DB, I pay for database transactions, called Request Units, plus a small fee of 25c per GB per month for storage. It gets a little complicated, but basically, the biggest expense for the database is the import, which cost about $75. Going forward, the biggest database expense will be the search service, which costs $2.42 per day. Storing 20 years of weather data costs $1.65 per day. Of course, the application service hosting Weather Now runs $3.60 a day, so it does all add up.

Because the daily cost summary takes a full UTC day to update, I don't have the new run rate for the application yet. When that comes out tonight, I may have to look into ways to defray the cost of the app, whether by voluntary donations or *gulp* advertising.

Incidentally, The Daily Parker costs $4.87 per day ($3.60 for the app service, 79c for storage, and 48c for the database. Now that Weather Now is pretty much where I want it, my next project will be to write a new blog engine and port this app to something that will cost about half that. So be on the lookout for a tip jar on this app as well.

Garmin badge + slice = one happy dog

Garmin periodically challenges its users to get active. About once a month they put out a distance challenge for walkers. This month, the challenge was to do a 4.8 km walk this weekend. Cassie and I just did that, as it turns out Jimmy's Pizza Cafe is conveniently 2.6 km away. It helps that we haven't had temperatures this warm (4.0°C) since just after 1pm on the 3rd.

Butters, however, did not like getting left behind. According to my security camera, she spent 18 minutes crying by the front door, took a quick stroll around my lower level, then went back to cry by the front door for another 10 minutes before going upstairs to cry in the living room. She gave up for a while, then returned to the front door for another 15 minutes, alternately crying and sitting quietly. I haven't watched the whole 54 minutes but I'd bet she was quiescent for less than 10.

I am sorry for my neighbors. Fortunately, the neighbor to the north is out of town. And frankly, the neighbors to the south have a 3-year-old boy who makes far more noise in the aggregate than any dogs I've ever owned (or looked after).

Tomorrow I'll go back to complaining about world events. Right now, I'm taking both dogs and my friend Kat's new book to Spiteful Brewing.

This little dog has lungs

Yesterday afternoon, houseguest Butters found a sunbeam:

This morning, she found a corner of the couch:

Then this afternoon, after I took both her and Cassie on a let's-sniff-everything 15-minute walk around the block, I decided to take Cassie directly on a let's-get-real-exercise 25-minute walk. I could hear Butters protesting this action halfway down the block on our departure, and also halfway down the block on our return. My poor neighbors.

She hasn't left me alone all afternoon, either. She needs to know where her humans are at all times. Unfortunately for her, her real humans are about 2,800 km away and not coming back until Monday. I hope she copes.

Butters assimilating quickly

My friends have gone to a tropical beach for the week, which means I get a second dog for a few days. She has been here many times before (most recently on Saturday), so she knows the drill. Still, five minutes after her people left, Butters seemed resigned to never seeing them again:

By the time I woke up this morning, however, she seemed to have settled in just fine:

Walking the two of them together in this cold doesn't actually work, however. Butters hates cold weather; Cassie loves it. So Cassie wound up dragging Butters for half of this morning's walk, making all three of us miserable. After lunch I'll walk them again...separately.