Monday, November 7, 2022

Full circle with a gap at 11 o'clock

Some time ago I've claimed that I've run a full circle on a TLS certificate lifecycle. Well, there was one more kink in that circle that I've failed to acknowledge at the time.

Tuesday, November 1, 2022

No version is technically a version

 Amazing discovery of the day: if your Android application doesn't link against the Google Play billing library, but claims to use the com.android.vending.BILLING permission in the manifest, the Google Play developer console will turn your APK down, saying that it uses an unsupported version of the billing library, and why won't you upgrade to v4.

If your app links against billing v5 (the latest as of the time of this writing) but lists said permission in the manifest, you will receive the same error message.

Saturday, September 17, 2022

The problem of repeated crashes

Postmortem app crash reporting and analysis is a bit of a hobbyhorse for me. I see it as an extension of the bug reporting facility - a crash in production (typically, but not always) indicates a bug. But does every crash indicate a separate, distinct bug?

Wednesday, August 31, 2022

Project vs. collection

Some time ago, I've discussed the identity of the account that TFS agent jobs are using to connect back to TFS via the distributedTask PowerShell context variable, or the equivalent System.AccessToken release variable. Back at the time, I've concluded that the identity behind that token was "Build Service (CollectionName)". Well, just today I've encountered a case where a release was running under a different identity - "ProjectName Build Service (CollectionName)". Both coexist.

Saturday, December 11, 2021

Abusing COM, this time in C#

Some time ago, I've written up a technique for setting up object oriented, call based interprocess communication using an idiosyncratic subset of COM. A case for something similar came up for me again, but the project is in C# with .NET 6. So I've adapted the same technique to work in a managed world.

Tuesday, October 26, 2021

Sequential vs. semantic

This is about the naming of releases in Azure DevOps (formerly known as TFS and VSTS). The default pattern of release names has been, as long as I can remember, sequential within the definition's scope: "Release 1", "Release 2", etc. That's been a minor pet peeve of mine for a while, and now we've come up with a technique to change this format to something more informative. Specifically, one can name releases with respect to the current product version, as every reasonable project team would want to.

Wednesday, December 2, 2020

OAuth scopes in Azure DevOps 2020

Here's another OAuth scope dump from the latest on-prem instance of Azure DevOps.

The same caveat applies: some of those might be cloud only.