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…)

Have you ever come across something in your IT career that makes you think to yourself “How did I come this far having missed this for so many years?” I had one of those moments this morning when it dawned on me that I didn’t instinctively know how to create or update environment variables in Windows, specifically the system “path” variable.

Typically, when I run across something like this I write about it because it helps me to understand it and it documents it so I don’t have to go “a-googling” at some point in the future. Onward and upward and all that jazz…

A few months back I started using Azure Tables as a quick, cheap, and simple database for a project at work. I was recently re-factoring my main Powershell script which spits data out into an Azure Table for later PowerBI reporting. Thankfully, even though it was close to midnight, my years of “ops management brain” kicked in before I pushed the “go” button on my refactored script. Thankfully it dawned on me I should be testing my updated script on a copy of my table vs. the only copy of the data I had.

Being late and me being tired, it didn’t occur to me to just try Azure Storage Explorer, which allows you to easily copy a table from one storage account to another. Instead, I turned to Powershell. What I came up with is a simple Powershell Function that creates a new empty table, reads the contents of your source table to an array and then pushes that array back into the new empty table. Using Powershell 7 batch processing, it works pretty quickly… granted my table only has like 2,000 rows. With that said, these Powershell snippets require Powershell 7, click here for install instructions.


Halloween is over but the the world is still a scary place. In a continuation of a thought from an article I wrote a few weeks back for Auditing AzureSQL Firewall Policies, I thought I would also include a short function for auditing azure storage accounts that are currently configured for “public” access.

Why are public access containers such a big deal? Simply put, anyone that knows the URL to the container and file can download that file. This is perfectly fine for public sites and public data (albeit you are paying for all the egress bandwidth associated with those outbound transfers in Azure… which you may not want to do). Any container that is marked as public access should have a documented business reason for why it is configured that way and any container that holds even the most slightly sensitive data shouldn’t be marked as public. I would go so far as to say, if there isn’t a particularly good reason for a blob container to be public, it’s better to just play it safe and mark it private. At the very least, you should be aware of it and keep tabs on this on a regular basis.