The Daily Parker

Politics, Weather, Photography, and the Dog

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.

Just a few more hours of winter before it gets colder

We've got a classic weather event rolling through Chicago right now:

What makes it atypical is the low pressure over northeast Minnesota (980 mB) and the tight pressure gradient around it. So while the temperature at IDTWHQ has gone up 7.2°C (13°F) in five hours—2°C in the last hour alone—we've also got a bit of wind. O'Hare reports southwest winds at 16 kts with peak one-minute winds of 39 kts, which qualifies as a fresh gale.

But you see that blue line curving through Minnesota, South Dakota, and Wyoming? That cold front will slide through Chicago overnight, bringing us below freezing for a couple of days.

For what it's worth, the normal temperature range for March 1st is -3.1°C to 4.9°C. We should get that entire range between 8pm and 3am tonight.

So this isn't really that unusual for Chicago. March has the most variable weather of any month here. That's why we dress in layers.

Fun Gazetteer facts

I meant to add this earlier today, but I had to do some work for my real job.

Uploading 15.4 million place records into Weather Now revealed some unexpected statistics. As you might expect from a military website, the National Geospatial-Intelligence Agency got a lot of its data from military sources. And the military tends to map things they care about in great detail. So the top 10 countries by place counts turn out to be:

  1. China, 2.1 million
  2. United States, 1.1 million
  3. Russia, 857,000
  4. Iran, 686,000
  5. Indonesia, 543,000
  6. Thailand, 530,000
  7. Finland, 495,000
  8. Mexico, 490,000
  9. Republic of Korea, 346,000
  10. Afghanistan, 343,000

The top 5 states by USGS place count might surprise you, too:

  1. California, 52,700
  2. Texas, 43,300
  3. Oregon, 36,800
  4. Tennessee, 33,400
  5. Arkansas, 29,800

Florida, New York, Pennsylvania, and Illinois, the 3rd through 6th most populous states, come in at 19th, 11th, 8th, and 33rd, respectively. I have no idea why.

And the smallest places? All of these NGIA files had fewer than 8 locations—probably because they contain places that are really part of some other country:

  1. Dramana and Shakhatoe, 1
  2. Kalapani, 1
  3. Minerva Reefs, 1
  4. Conejo Island, 2
  5. Geyser Reef, 2
  6. Hans Island, 2
  7. Siachen, 2

I honestly don't know why NGIA puts those places in their own files. I'll correct them eventually.

If you want to have a bit of fun, try searching for places you know and see what weather is closest.

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.

Still chugging along

The Weather Now gazetteer import has gotten to the Ps (Pakistan) with 11,445,567 places imported and 10,890,186 indexed. (The indexer runs every three hours.) I'll have a bunch of statistics about the database when the import finishes, probably later tonight or tomorrow morning at the latest. I'm especially pleased with the import software I wrote, and with Azure Cosmos DB. They're churning through batches of about 30 files at a time and importing places at around 10,000 per minute.

Meanwhile, in the rest of the world:

Finally, in February 1852, a man calling himself David Kennison died in Chicago. He had clamed to be 115 years old, participated in the Boston Tea Party, and hobnobbed with the great and good in the early days of the Republic. And in the proud tradition of people giving undue acclaim to total charlatans, the entire city turned out for his funeral—173 years ago yesterday.

Some good news

First, the temperature at Inner Drive Technology WHQ has gotten up to 10.5°C for the first time since 3:33 pm on Monday December 9th. If it goes up just 0.1°C more, that will make today the warmest day since Monday November 25th. Fingers crossed.

Second, the National Geospatial-Intelligence Agency returned to DNS this morning. Someone at the Department of Defense must have noticed that the government's maps had vanished and was able to get the DNS entries restored. In consequence, I have downloaded everything through Romania, imported everything through Comoros (except China; that's importing right now), and the automatic indexer has captured 274,194 new places for a total gazetteer size of 2,668,565 places. That will rise dramatically later today; there are 2.05 million records for China, of which the import tool has already saved 1 million.

Updates as conditions warrant.

Update: As of 2:29 pm the temperature hit 10.6°C for the first time since 1:49 pm on Monday November 25th. Today is officially the warmest day of the 2024-25 winter season!

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.

National Geospatial-Intelligence Agency removed from the Internet

By yesterday evening I managed to import all the National Geospatial-Intelligence Agency country place data through the Bs. This morning, I couldn't get to the NGIA website.

All right, sometimes these things happen. No biggie.

Yet, knowing a little about how the OAFPOTUS and Clown Prince Elon have operated the last 30 days, I did some digging. And I discovered yet another example of how imbecilic these infants are.

Simply: someone has removed the agency from the Internet. All DNS records for the agency are gone. Someone just deleted the entire domain.

NGIA has 14,500 employees, mainly in its Virginia headquarters. Its products include the NGIA name files that cartographers all over the world use to maintain their maps. Google, Microsoft, and Apple, for example, are big NGIA consumers, as you might want to know if you've ever used their maps.

I knew that the OAFPOTUS could seriously degrade Weather Now, but I thought I had a bit more time. I guess not. So if you use Weather Now and want to search for anyplace in a country whose name begins with C to Z (except Canada, Jamaica, Macau, and the UK, for reasons), I guess we'll both be disappointed.

This could just be a temporary error, like how the Clown Prince accidentally shut down vital food services here and abroad, or mistakenly halted cancer research. At least I know the data are still there, even if the computers the data live on are no longer accessible from outside Fort Belvoir. And I expect Google, Microsoft, and Apple might have something to say about this when they notice it's happened.

At least the National Weather Service still has its DNS entries. For now.

She won't leave me alone

Butters, possibly traumatized by Cassie and me leaving her alone for almost half an hour yesterday, has decided to stake out my office:

Incidentally, this is what Cassie and I walked past in the local park yesterday:

We've had progressively warmer days since the temperature bottomed out Monday morning. We might even get above freezing today! I hope so, because I need a 5 km walk to meet a Garmin challenge this weekend. (Cassie will help with that; Butters, not so much.)

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.