Working with Terraform to build VM’s in Azure for proof-of-concept work, I often opt to use Ubuntu for my Linux systems. Up until 18.04 everything worked fine but when I tried to go to 20.04 or later my Terraform deployment would error out with:

Failure sending request: StatusCode=404 -- Original Error: Code="PlatformImageNotFound" Message="The platform image 'Canonical:UbuntuServer:20.04-lts:latest' is not available. Verify that all fields in the storage profile are correct.

Did Microsoft suddenly fall behind the curve with available OS images for one of the world’s most popular operating systems?

Thankfully, no. The answer is actually pretty simple… they just started breaking out different versions of the popular operating systems under different ‘offer’ families and your Terraform code needs to reflect as much.

Working with the cidrsubnets function in Terraform is a bit of a pain – but it’s so extremely handy for automated networking that it’s worth spending the time to figure it out. Suffice to say, I am not going to dig deep on how to use cidrsubnets; rather I am going to bring up a really handy and (as far as I can tell) “not documented” method for supplying a list of “newbits” values to this function.

If you thought the title of this article was just a bunch of mental word vomit, well, it kind of is. But the words all have meaning and I wanted to quickly talk about a key issue that I have continued to come across in my journey with Terraform… namely, getting things to apply consistently and successfully – particularly when introducing things to make end-use of your custom modules easier and your code more succinct and versatile – like conditionals and meta arguments such as “count” and “for_each”. (more…)

In something that has seemingly become an annual holiday tradition, I recently moved this WordPress site to a new hosting provider. This time I left was evicted from Oracle. I am always on the hunt for the absolute bargain option when it comes to hosting… but I also want my website to be decently performant. It was exactly that on the Oracle Cloud until they unexpectedly closed my account.

Unfortunately the Oracle Cloud “Free Forever Tier” comes with some caveats (buyer freeloader beware).

I have been working on a project that requires me to interact with upwards of 10 separate repositories at once, typically referencing a handful of them and while actively making changes and commits across three of them. A lot of my time is eaten up with switching between windows in an attempt to find the one open repo I need at any given time. VS Code is amazing, but this is a real productivity sucking pain point.

I initially tried to find out if there was a way to have all my windows present within a single window as searchable tabs (a-la Google Chrome). While there are some third party tools for exactly this, there was nothing native to VS Code. I lean towards “simple is better.”

The more I thought about it, the more I realized that the windows management via the Windows 10 Explorer taskbar (that thing at the bottom of all our screens) almost fit the bill… there were just two problems… (more…)