Three hours later, I've got Weather Now's Netatmo code integrated with the Function App that controls all of the automated background functions of the application. I now have to move the adobo to phases two and three (browning, starting the slow cook), then take Cassie out.
I might actually deploy this today. Except that I discovered that a decision I made about how the site would store weather at the start of the re-write in 2020 means the simplest thing that works requires me to change Netatmo's data into a METAR. Not difficult, but also not the most elegant solution.
Someday I might even import the entire gazetteer into Weather Now 5, too...
I have three goals today, to take advantage of the gray rainy weather. First, another stab at adobo, this time with a little less vinegar, fewer peppercorns, and a skosh* more sugar. It's marinating right now, so in about three hours, I'll brown the pork belly and then slow-cook it in my Instapot for another three hours or so.
Goal #2: Finish coding and deploy the update to Weather Now to use data from my Netatmo devices. Finally, I'll have actual IDTWHQ weather!
Goal #3: See if it's possible to build an Azure pipeline to deploy a 16-year-old .NET 4.8 application to an App Service. This is the first of several steps to get a very old client application to stay alive for another five or so years after Microsoft kills Cloud Services (classic) next August. Because the UI uses ASP.NET Web Forms, I can't upgrade it to .NET 7, which means I may have to write custom code to do things that .NET 7 provides out of the box. There is a possibility that I may even have to re-write the UI in Blazor, which no one—not me, not the client, not the users—wants at all.
All righty then, time to get coding. And in 6½ hours, adobo!
* TIL how the word is actually spelled, and why.
The temperature has crept up towards 34°C all day after staying at a comfortable 28°C yesterday and 25°C Friday. It's officially 33°C at O'Hare but just a scoshe above 31°C at IDTWHQ. Also, I still feel...uncomfortable in certain places closely associated with walking. All of which explains why I'm jotting down a bunch of news stories to read instead of walking Cassie.
- First, if you have tomorrow off for Labor Day, you can thank Chicago workers. (Of course, if you have May 1st off for Labor Day, you can also thank us on the actual day that they intended.)
- A new study suggests 84% of the general population want to experience an orchestral concert, though it didn't get into how much they want to pay for such a thing. (You can hear Händel's complete Messiah on December 9th at Holy Name Cathedral or December 10th at Millar Chapel for just $50!)
- An FBI whistleblower claims Russian intelligence co-opted Rudy Giuliani in the run-up to the 2020 election—not as a Russian agent, mind you, just as a "useful idiot."
- Rapper Eminem has told Republican presidential (*cough*) candidate Vivek Ramaswamy—who Michelle Goldberg calls "very annoying"—to stop using his music in his political campaign.
- The government of Chile has promised to investigate the 3000 or so disappearances that happened under dictator Agosto Pinochet, though they acknowledge that it might be hard to find the ones thrown out of helicopters into the sea, or dropped down mine shafts. And with most of the murderers already dead of old age, it's about time.
- Julia Ioffe wonders when the next putsch attempt will get close to Moscow, now that Prigozhin seems to be dead.
- About 70,000 people continue to squelch through ankle-deep mud at Black Rock City after torrential rains at Burning Man this weekend. (I can't wait to see the moop map...)
- University of Michigan Law Professor Nicholas Bagley had a cogent explanation of why pharmaceutical companies don't want to negotiate drug prices with Medicare. (Hint: record profits.)
- Switching Chicago's pre-World War II bungalows from gas to electric heating could cut the city's GHG emissions by 14%.
- Molly White's weekly newsletter starts off with some truly clueless and entitled behavior from Sam Bankman-Fried and gets weirder.
- Zoning laws, plus the inability of the Portland, Ore., government to allow variances in any useful fashion, has condemned an entire high school to send its kids an hour away by bus while the building gets repaired, rather than just across the street to the community college many of them attend in the evenings. (Guess what skin color the kids have. Go on, guess.)
- A group of hackers compromised a Portuguese-language "stalkerware" company and deleted all the data the company's spyware had downloaded, as well as the keys to the compromised phones it came from, then posted the company's customer data online. "Because fuck stalkerware," they said.
- Traffic engineers, please don't confuse people by turning their small-town streets into stroads. It causes accidents. Which you, not they, have caused.
- Illinois had a mild and dry summer, ending just before our ferociously hot Labor Day weekend.
- James Fallows talks about college rankings, "which are marginally more encouraging than the current chaos of College Football."
Finally, I'll just leave this Tweet from former labor secretary Robert Reich as its own little monument to the New Gilded Age we now inhabit:
A few of them have come home or are en route:
Finally, climate change has made your favorite hot sauce more expensive, and will continue to do so until pepper farmers adapt their vines to the new reality, or move them.
I just got back from walking Cassie for about half an hour, and I'm a bit sticky. The dog days of summer in Chicago tend to have high dewpoints hanging out for weeks on end, making today pretty typical.
Our sprint ends Tuesday and I still have 3 points left on the board, so I may not have time to give these more than a cursory read:
Finally, Andrew Sullivan adapts a column he wrote in August 2001 asking, "why can't Americans take a vacation?" One reason, I believe: all the time and money we spend in and on our cars.
i just pushed a new build of Weather Now that corrects a problem no one else knew about in the way it managed time zones. The work took about 3 hours over several days this week, sneaking half an hour here and there between rehearsals, performances, and my day job.
I also worked on some code to interface with my home weather station. I've gotten it to download and parse reports from my Netatmo devices, and to refresh (and securely store) the API access token. I figure it'll take about 3-5 more hours to hook that code into the Azure Functions that download and store weather reports from other sources.
Today, however, I have one more performance of Die Zauberflöte. So...maybe next weekend?
I love it when something passes all the integration tests locally, then on the CI build, and then I discover that the code works perfectly well but not as I intended it. So while I'm waiting for yet another CI build to run, I'm making note of these:
Finally, WBEZ made me a shopping list of locally-produced hot sauces. First up: Cajun Queen—apparently available about a kilometer away.
I'm still working on the feature I described in my last post. So some articles have stacked up for me to read:
And while I read these articles and write this code, outside my window the dewpoint has hit 25°C, making the 28°C air feel like it's 41°C. And poor Cassie only has sweat glands between her toes. We're going to delay her dinnertime walk a bit.
I finished the main part of the feature I've been fighting since last week, only to discover that a sub-feature needs refactoring as well. Basically, before implementing this feature, the user would recalculate their model every time they changed its parameters. Calculation usually takes 5-10 seconds for most models, but (a) for some models it takes up to a minutes and (b) the calculation engine uses a first-in-first-out queue when calculating. But the calculation engine caches on a most-recently-used basis (meaning it flushes the least-recently-used calculations when it needs to free up space), so generally, it's just a quick call to retrieve the same results.
In actual user testing, we realized that users often want to go back to a previously-used set of parameters. The calculations for any set of parameters should always return the same results, so in theory this isn't a problem. But we only stored the URL of the most recent calculation for any model. So to get previous results, the users had to recalculate the model with the previous parameters.
I've spent the last 5 days refactoring all of that so that all calculation results are stored, even incomplete ones, and users can simply flip between them with a drop-down. Only, there's a second step, whereby the API takes the results and transforms them into a different view. That calculation is very quick—just a few milliseconds—but also subject to the queuing mechanism, and requiring a second call from our UI to our API, and then from our API to the calculation engine, after our API looks up the results of step 1.
All of this has pushed our sprint out a week, as well as made me very cross with myself for not anticipating this workflow a year ago when we built our current UI.
Anyway, it's past 4pm on a Friday and I will probably spend another 90 minutes on this tonight to get it to a point where I can finish it Monday morning without having to rethink the whole API. Good Omens II will just have to wait.
I'm just over a week from performing with the Chicago Symphony Orchestra at Ravinia in Mozart's Die Zauberflöte, so as I try to finish a feature that turned out to be a lot bigger than I thought, I'm hearing opera choruses in my head. Between rehearsals and actual work, I might never get to read any of these items:
Finally, New York City (and other urban areas) are experiencing a post-pandemic dog-poop renaissance. Watch where you step!
And now, I will put on "Dank sei dir Osiris" one more time.