🎩✨ Breaking news: Windows drive letters aren't just limited to A-Z, because apparently, the alphabet is just a suggestion in Redmond! Just when you thought you had a handle on Microsoft's quirks, here comes the 'drive letter free-for-all' to remind you that logic is optional. 🤦‍♂️🖥️
https://www.ryanliptak.com/blog/windows-drive-letters-are-not-limited-to-a-z/ #WindowsQuirks #DriveLetters #MicrosoftLogic #TechHumor #BreakingNews #HackerNews #ngated
Windows drive letters are not limited to A-Z - ryanliptak.com

If you want €:\, you can have it, sort of

So, why is #dotnet involved in the blame for #MicrosoftAzure CLI upload to blob storage being weird?

Due to how #dotnet computes an MD5, and returns an array of 16 bytes (the output of `xxd -r -p` in the cautionary tale), instead of the more common hexadecimal string.

https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.md5?view=net-10.0#remarks

An MD5 string is 32 bytes, so #Microsoft saved 16 bytes by making it less easy to get an MD5 string... #640kEnoughForAnyone

#MicrosoftLogic #ShamelessTechShaming #LegacyTech #LegacyCode

MD5 Class (System.Security.Cryptography)

Represents the abstract class from which all implementations of the MD5 hash algorithm inherit.

I imagine it went down like this at the #MicrosoftAzure design meeting:

> Microsoft engineer: We should store the MD5 of the content in the blob storage database.

> Senior Microsoft engineer: Let's use #dotnet (!), and interpret the hexadecimal MD5 (with a newline!) as binary, and then base64 encode it!

They might have saved a couple of bytes... #dotnet ...👏 ...😬

#MicrosoftLogic #ShamelessTechShaming #LegacyTech #LegacyCode #LegacyCodeProblems

But try uploading a single file to blob storage with the #MicrosoftAzure CLI! (and consume it with official #dotnet API's - which require an MD5 checksum for blobs)

Surely `az storage blob upload --file foo [account] [container] [dst]` is enough?

Wrong! You need `az storage blob upload --file foo --content-md5 $(md5sum foo | cut -d ' ' -f 1 | xxd -r -p | base64) [account] [container] [dst]` 😬

Likely due to doing stuff with #dotnet

#ShamelessTechShaming #MicrosoftLogic #LegacyTech #LegacyCode

@horenmar Ha ha - that's the #MicrosoftLogic joke of the day! 🤣

It's amazing that this can happen in a world with #semver .

Suppose an upstream package messes up and releases v4.4 with a breaking change. For some reason (msys2), you need a vcpkg baseline where the package is at v4.5. You need v4.3, and even though v4.3 is in the versions database, you can only get v4.5, because the only versioning constraint available is "version>=": "4", which baseline v4.5 satisfies 🎉🤦‍♂️

#ShamelessTechShaming

Surprised with how bad the #MicrosoftAzure CLI tool is for batch uploading files to blob storage.

If a file already exists you get a five-line long warning - per file. Fair enough (ish).

There is no command line switch to ignore the warning - and `--overwrite false` changes nothing: You still get thousands of warnings when uploading a set of files (where some may already exist) - and you are left wondering whether it succeeded. Not so fair.

#ShamelessTechShaming #MicrosoftLogic #LegacyCode

Troubleshoot binary caching issues

Troubleshooting guide for common binary caching issues