The Daily Parker

Politics, Weather, Photography, and the Dog

Why am I indoors?

It's 22°C and sunny right now, making me wonder what's wrong with me that I'm putting together a software release. I probably should fire off the release, but I'm doing so under protest. I also probably won't get to read all of these things I've queued up:

Finally, Stan's Donuts will open a new store just three blocks from the apartment I moved out of one year ago today. I might have to stop in soon. I will not, however, wash them down with CH Distillery's latest abomination, Pumpkin-Spice Malört.

Telerik responds

Yesterday I complained that some combination of factors had made it impossible for me to evaluate an expensive tool for my day job. The manufacturer responded overnight:

First, we want to express our apologies for experiencing login problem. This is really uncommon and is usually related to OS restrictions. We also want to thank you very much for your interest in Telerik products. We are sure you will be able to build beautiful applications with lots of rich functionality really easy with guaranteed support, demos and documentation, etc.

Back to the login problem. The trial installer is an application that provides web login flow. This means that when you click on Login, your default web browser will be launched landing on the login page. If your system is configured to block applications to launch the default browser, the flow will be interrupted. From the provided error, we can see that System.Diagnostics.Process.Start fails to launch the browser. This information, however, is insufficient to know what the exact reason for this failure is.

We did a quick research and found a solution for a similar problem - OpenWith.exe error. Could you please let us know if that resolves the problem on your side?

Well, then. That's helpful and articulate. They suggested a few options, one of which is simply to use their private NuGet feed, so I will try that first.

Do not prevent me from giving you money

For my real job, I'm evaluating graphics packages to report (informally) at tomorrow's sprint review which ones I think we should investigate further, so that at the next sprint review in two weeks, I can recommend which one we should buy. These packages cost between $1000 and $6000 per year to license. You would think that helping me choose would top the priority list of everyone involved in the demo and trial process.

With that preface, here is the bug report I filed with Telerik earlier today:

When attempting to install a trial version of the Blazor UI controls, I am unable to progress beyond the Login step. This is unfortunate as without the trial I can't make the case that my company should spend thousands of dollars on Telerik instead of, say, Syncfusion. I have to say this experience is not encouraging.

I examined the conversation between the installer and the mothership using Fiddler. The endpoint dle.telerik.com:443 responded with HTTP202 (Accepted) to this POST:

POST https://dle.telerik.com/metrics/v1/events/errors HTTP/1.1
Accept: application/json
Authorization: Bearer {snip}
Accept-Encoding: gzip,deflate
Content-Type: application/json
Host: dle.telerik.com
Content-Length: 1211

{"Type":"HandledError","SessionId":"f2ee3acd-37dc-487a-b5ea-1b2647a2eeb3","Source":"Installer","SourceVersion":"2023.3.1012.0","Timestamp":"2023-10-23T21:10:19.7047547Z","OS":"Windows 10 Enterprise 64-bit v.10.0 ","CLR":"4.8","MachineId":"6uI7wmYbX4Q9h0+vgpSj5xbBF4o=","Exception":{"OS":"Windows 10 Enterprise 64-bit v.10.0 ","CLR":"4.8","MachineId":"6uI7wmYbX4Q9h0+vgpSj5xbBF4o=","Message":"The system cannot find the file specified","Type":"Win32Exception"},"ErrorDetails":"   at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)\r\n   at System.Diagnostics.Process.Start()\r\n   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)\r\n   at Telerik.Sso.SsoClient.MakeAuthorizationRequestInBrowser(Int32 port, String appProtocol, String appName, String productCode)\r\n   at Telerik.Sso.SsoClient.GetAccessToken(String appProtocol, String appName, String productCode)\r\n   at Telerik.CommonInstaller.DataAccess.RuntimeServiceClient.GetAccessToken(String appProtocol, String appName, String productCode)\r\n   at Telerik.CommonInstaller.Application.Services.AuthenticationService.Login(String user, String password, Boolean rememberCredentials, Boolean useRemembered)"}

HTTP/1.1 202
Cache-Control: private
Content-Type: application/json
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Date: Mon, 23 Oct 2023 21:11:55 GMT
Content-Length: 0

So, something is throwing an exception and keeping me from evaluating whether to give Telerik money.

One thing which may be important: the installer requested local disk access that required me to run it as a local Admin account. That account is not the domain account I used to register for Telerik. Not that it should matter; since the admin account has never seen the Telerik account, I would expect that the installer would ask for credentials instead of trying to use non-existent cached credentials.

It occurs to me that a better response to a login failure with cached credentials might be to ask for new credentials. Otherwise the end user might get frustrated and file a very snarky bug report.

Please advise. I'm expecting to give my informal evaluation to my team tomorrow at 3pm CDT/20:00 UTC. I'd hate to exclude Telerik from consideration merely because we couldn't load the free trial.

In other news, Syncfusion (which is more expensive but just requires a set of NuGet packages) and Infragistics (which is about the same cost as Telerik but lacks one feature we really need) have moved up in the rankings.

I'm naming the vendor because my tolerance for bugs in software may be higher than the average user's, but not when I'm trying to install the trial version. Then you get no mercy.

Sure Happy It's Thursday

I'm iterating on a UI feature that wasn't 100% defined, so I'm also iterating on the API that the feature needs. Sometimes software is like that: you discover that your first design didn't quite solve the problem, so you iterate. it's just that the iteration is a bit of a context shift, so I'm going to read for about 15 minutes to clear my head:

  • Kevin Philips, whose 1969 book The Emerging Republican Majority laid out Richard Nixon's "southern strategy" and led to the GOP's subsequent slide into authoritarianism and ethnic entrepreneurialism has died, but unfortunately his ideas haven't.
  • The US and Qatar have agreed not to release any of the $6 billion of Iran's money that Qatar currently has in escrow for them, which will no doubt make Iran yet another country demanding to know why Hamas attacked Israel just now.
  • The Chicago Tribune digs into Chicago Mayor Brandon Johnson's $16.6 billion budget.
  • In the wake of huge class-action settlements, two major Chicago real-estate brokers have changed their commission policies, but we still have to see if they'll change their actions.
  • The History Channel blurbs the origins of Oktoberfest, which started in 1810 and ends for this year today. Und nächstes Jahr, ich möchte nach München zum Oktoberfest gehen!
  • Jacob Bacharach says the core problem with Michael Lewis's recent biography of Sam Bankman-Fried is that SBF is just too boring to be the subject of a biography.

Finally, Chicago's heavy-rail operator Metra formally proposed simplifying its fare structure. This will cut my commuting costs by about 11%, assuming I use the day passes and individual tickets correctly. It will have the biggest impacts on suburban riders who commute into the city, and riders whose travel doesn't include the downtown terminals.

Tuesday Night Links Club

Just a few:

  • US Representative George Santos (R-NY) faces another 21 felony charges in New York, with prosecutors alleging he stole donors' identities and misappropriated their donations.
  • Isabel Fattal attempts to explain Hamas, the terrorist organization that attacked Israel on Saturday.
  • Alex Shephard is glad the news media have gotten better at reporting on the XPOTUS, but they've still missed the biggest part: he's a "singular threat to American democracy."
  • Jason Pargin pays homage to celebrity worship, and goggles at how weird it's gotten.
  • Molly White explains the evidence presented at Sam Bankman-Fried's trial yesterday that (allegedly) shows how they perpetrated the fraud in code.
  • McSweeney's has a helpful template for right-wingers who are upset with Taylor Swift.

Finally, National Geographic gets cozy with the history of bedbugs and their relationship to humans. Fun evening read, y'all!

Friday after the cold front

A rainy cold front passed over Inner Drive Technology WHQ just after noon, taking us from 15°C down to just above 10°C in two hours. The sun has come back out but we won't get a lot warmer until next week.

I've had a lot of coding today, and I have a rehearsal in about two hours, so this list of things to read will have to do:

Finally, for the first time in 346 days, the Chicago Bears won a football game. Amazing.

Modern-day Howard Carter, corporate edition

One of my colleagues at another office sent an email this morning to basically everyone in the company with a screen shot and a brief cry for help. One of her customers had an app with our company's name on it that had stopped working, and could anyone identify the app or where it came from? Also, it seems to run on something called "ANSIC" which no one in the customer's office knows.

I should at this point mention that the dialog box was from a Windows NT 4 or 2000 computer, and was version 2.0.415—so it probably started life on an even older version of Windows. And "ANSIC" means ANSI C, a language almost as old as COBOL. So even before we get to asking whether my company can still support it, I have to ask: how is the computer it's running on still working?

To me as a software developer this is like meeting a 30-year-old dog on the street.

Update: the author of the email got back to me, after hearing from someone who recognized the app. Its author died years ago, and the only other person who might have worked on it retired in the 2010s. The only thing to do, then, is to reverse-engineer the business process and start fresh.

You know, I still have code I wrote in Applesoft in 1981, but it's on printouts. The oldest runnable code I have is from 1986, and I need to spin up a DOS 3.3 virtual machine to get it to run. I hope that my craft has matured enough since then that the code I write today will still work in 15 years, but 30? No way. I've recently had to give an old client some bad news about their 16-year-old app: we either need to re-write most of it, or I can only keep it alive for 4 or 5 more years, because Microsoft will stop supporting the language (.NET 4.7) someday soon.

In other news of the day...

It's only Wednesday? Sheesh...

  • The Writers Guild of America got nearly everything they wanted from the Alliance of Motion Picture and Television Producers (i.e., the Astroturf organization set up by the big studios and streamers to negotiate with the Guilds), especially for young writers and for hit shows, but consumers should expect more bundling and higher monthly fees for shows in the future.
  • Josh Marshall suspects that the two competing storylines about the XPOTUS (that he's about to return to power, but he's also losing every legal battle he fights) are actually just one: his "current posture of bravado and menace – while real enough as a threat – is simply his latest con, concealing a weaker and more terrified reality."
  • Jamie Bouie marvels that Justice Clarence Thomas (R$) wins the trifecta: "We have had partisan justices; we have had ideological justices; we have had justices who favored, for venal reasons, one interest over another. But it is difficult to think of another justice, in the history of the Supreme Court, who has been as partisan and as ideological and as venal as Thomas...."
  • Melissa Gira Grant profiles US District Court Judge Matthew Kacsmaryk (R-NDTX), a Christian nationalist who rose through the Federalist Society pipeline to a lifetime appointment where he will push his Victorian-era views on the people of Texas for the next 30 years or so.
  • North Korea vomited up US Army Private 2nd Class Travis King, having used him for the little he was worth after the soon-to-be-dishonorably-discharged soldier illegally entered the kingdom in July.
  • Kelli María Korducki worries that "in the age of AI, computer science is no longer the safe major," not realizing, perhaps, that the most effective programmers are and have always been liberal arts majors.

Finally, yet another fact that will make everyone I know feel old: today is Google's 25th birthday. And yes, the Daily Parker has been around longer trillion-dollar search company. We just haven't had our IPO yet.

New Weather Now feature

I was a little busy over the summer, so it took me a couple of months to finish adding Inner Drive Technology World HQ's Netatmo weather station to Weather Now. (Implicitly, the app can now read any Netatmo data to which the owner of the station has granted us access.) Netatmo weather stations upload data every 10 minutes, so that's how often Weather Now downloads it.

I had to change a number of assumptions throughout the application, as it has only used NOAA aviation weather since its origins in 1997.

The next updates to Weather Now will most likely include a fix to the way it displays on mobile devices, personal profiles, the annual core language update (to .NET 8) in November, and a massive expansion of the Gazetteer.

The v2–v4 Gazetteer had about 7.3 million geographical records in a huge relational SQL Server database. Since I uploaded most of that data in 2003, I'm going back to the agencies that provided the original data and grabbing all of the current information. And because of the way Azure Cosmos DB works, updating individual records will be far, far easier, even in batches, than it would have been with SQL Server.

My next big hobby project will be to replace this blog engine. But I've been saying that for 15 years now...

More productive than expected

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...