Let’s see if anyone is still reading this.
Windows Terminal with Fries

If you’re like me (I seriously hope not), and you (A) love Windows Terminal, and (B) forget to right-click to launch it with “Run as administrator” more times than you’d like to admit, here’s one trick:
- Create a new desktop shortcut, and paste in your favorite wt.exe command line stuff. Click Next
- Enter a name for the shortcut. Click Finish
- Right-click on the new shortcut, and click Properties.
- Click Advanced, check the “Run as administrator” box, click OK, click OK again
For a nice added touch, go back into the shortcut properties, and click Change Icon and choose a real icon, rather than using that Walmart dumpster box clearance icon. Shell32 still has some decent icons to choose from. Screen shots taken below while inhaling coffee that was brewed way too strong.







There. Now every time you launch that new shortcut, UAC will pop up and punch you right in the face. It’s going to be a good day!
PowerShell Split-OU
I’ve had to split OU paths for various reasons many times, and decided to make a little wrapper function for it. I’m sure someone else has done this, but my Google kung fu matrix master jedi skills came up short. Anyhow, if you know of a better version of this idea elsewhere, please let me know? Otherwise, I hope this is helpful:
UPDATE: Added -Suffix and condition checks for when $Path starts with “OU=”
function Split-OU {
[CmdletBinding()]
[OutputType([string])]
param (
[parameter(Mandatory=$True)][ValidateNotNullOrEmpty()][string]$Path,
[parameter(Mandatory=$False)][switch]$Leaf,
[parameter(Mandatory=$False)][switch]$Suffix
)
if ($Suffix -ne $True) {
if ($Leaf -ne $True) {
if ($Path.IndexOf('OU=') -eq 0) {
$Path.Substring($Path.Substring(3).IndexOf('OU=')+3)
} elseif ($Path.IndexOf('OU=') -gt 0) {
$Path.Substring($Path.IndexOf('OU='))
} else {
$($Path -split ',')[1..50] -join ','
}
} else {
if ($Path.IndexOf('OU=') -eq 0) {
$($Path -split ',OU=')[0]
} elseif ($Path.IndexOf('OU=') -gt 0) {
$($Path -split 'OU=')[0].Trim(',')
} else {
$($Path -split ',')[0]
}
}
} else {
if ($Leaf -ne $True) {
$Path.Substring($Path.IndexOf(',DC=')+1)
} else {
$Path.Substring(0,$Path.IndexOf(',DC='))
}
}
}
Here are some test examples.

Again, if there’s a better option out there in the world, let me know? I’d rather use that than invent another wheel.
Random Memories – Microsoft Ignite 2017 (Atlanta)

In October 2016, I hadn’t been with my employer a full year yet, when they decided to send about 12 of us to the Microsoft Ignite conference in Atlanta. I remember lots of walking, meeting dozens of new friends, insane beer and food consumption, and trying to comprehend Andreas explaining BranchCache and BITS to us at 8:00 AM in the morning.
I remember thinking “This guy is amazing! Why are we all so hung over?“. It seemed like everyone in attendance was struggling, but we were (are) really fortunate that his session was recorded. I learned a ton of information from that over the following week or two.
On the last night of the conference, six of us tried to form an ad hoc Entourage-ish gang, and go adventure-seeking. Most of this “gang” were either old, or out of shape, okay both, so the mission ran out of steam after an hour. The guys pealed off gradually, and headed back to their hotels to crash. But for some reason, I still had a lot of energy at midnight, so I went on a walkabout through downtown Atlanta.
I didn’t realize until later that I had covered an area roughly from the GWCC to Central Park, and from Five Points to Tech Square. When I traveled more often, my favorite thing was to walk around and explore on foot, if possible.
Anyhow, I noticed how many of the North/South cross streets were poorly lit, like between the Aquarium and Central Park. I would discover later on that these poorly-lit streets had the highest rate of violent crime, particularly against idiots like me. Anyhow, each time I would emerge onto a street with lighting, I noticed more and more strange zombies slowly following me. Eventually, I out-walked most of them. As it turns out, heroin isn’t a performance-enhancing drug.
I was still over-dressed and toting a “Microsoft” backpack with a ton of lanyards and badges and buttons, look like a nerd version of Mardi Gras. The message I probably gave off: “Please beat me and rob me!“.
Sometime around 2 AM, I ended up talking to an elderly homeless guy (probably in his 40’s but looked like in his 70’s or 80’s). I don’t remember the details, but we covered topics from the concept of money to failed family relationships and weather. I offered him a vendor t-shirt from my backpack. Soon, another person approached, and I handed out another t-shirt. Then another, and so on.
I figured, well, I’m about to be murdered on the streets of Atlanta, at least I can distribute some good will and free advertisement.
The next day I headed back home. But, while standing in line waiting to be cavity-searched by TSA, I kept thinking of what it might look like driving around that area in the morning. Unconscious homeless people strewn about on park benches, sidewalks, alleys, wearing brightly colored vendor shirts and ball caps.
From the poorest laborers in the sweatshops of China and Vietnam, through the distribution channels of EU and US, to the booths on the expo floor at the Microsoft Ignite conference, ultimately onto the bodies of the poorest people of Atlanta. Hopefully, I was a value-add step in the process.
Pest Control Knocking

I may have found a bug in Azure AD audit logging. May have. Maybe. Possibly. Here’s the Twitter thread. Hopefully it can be fixed soon and with little effort. Basically, when modifying an Azure AD user to change their “usagelocation” property, the audit log doesn’t show any details. It just shows “Member”, which is kind of odd. What it should show (I think) are the old and new values, and who made the change. Or I’m completely wrong and ignorant. Stay tuned.
Controversial Thoughts: CI/CD

CI/CD, or Continuous Integration / Continuous Delivery (or “Deployment”, but feel free to pick your own “D” meaning), went from being the “buzz” to becoming an accepted daily thing. Many developers I’ve spoken with seem to believe it emerged around 2018, but is that really accurate? By the way, this isn’t really the focus of what I’m diving into here. More of a side note.
The CI/CD concept seems rational: release changes (implied: improvements) as they’re ready, not based on a periodic calendar table, as had been the norm for decades. But the practice of CI/CD dates much farther back, possibly to the beginnings of software development, and especially with regards to in-house development.
If you think back to many “in-house” projects from the 1980’s to even now, there was a lot of releasing going on that didn’t fall into a yearly/quarterly/monthly cadence. This is particularly more common in the early phases of a project, when feature changes and bug fixes more frequent.
Releasing things to the public, especially when a contract of some sort is involved, incurs a more rigorous set of controls. This is even more relevant when it comes to larger vendors. So, as far as I can tell, the idea of CI/CD is really only “new” to commercial and government/defense software; it’s been the “norm” for in-house projects since Grace Hopper gave birth to most of what most of us take for granted now.
I believe that the biggest problem with CI/CD is the implied “improvement” aspect. There seems to be a collective confusion about the definition of words today, and it applies to this word as well. According to Merriam-Webster’s dictionary, it means “an instance of such improvement : something that enhances value or excellence” (2b). I would argue that patching a broken feature, fixing a “bug”, is not an improvement, but this is obviously semantics.
If you pay for a new house, after being sold on the presentation which clearly shows features you wanted, but then find out after moving in that many are not installed or finished, do you label the finishing of those incomplete features an “improvement”? Maybe. But when you’re in debt to the mortgager for $XXX,000 USD, I doubt you’re in a mood to call that as such.
“See? We improved your house by installing the front door you were expecting!”
With CI/CD, the term improvement appears to have a subtle new meaning. For example, which of these is more of an “improvement”?
A. Finishing the stated/promised capabilities of a recently-added feature.
B. Adding another new feature, knowing it will be incomplete for some time.
Many would argue A has a higher value. But vendors are influenced by budgets, which are influenced by revenue, which is influenced by sales, which is heavily influenced by impressing customers. They would argue B has a higher value.
For many technology vendors up until around 2010, the customers were often technical. Convincing them to buy new products meant selling them on capabilities being ready for production. Since then, the customer focus has shifted more to the decision-makers, or purchasers. Selling them on new products leans more on promised features than proving their immediate readiness. It’s more about vision, direction, strategy, and less on the short-term.
The net result is an endless gyration of new features which remain incomplete for longer than expected, while newer features are continuously added, which are also incomplete. Some of these new features remain incomplete for months or years. There are many examples of this, but you probably can think of a few.
But do I think that CI/CD is bad? No. The concept of CI/CD makes sense to me, but the practice of it isn’t what I’d hoped for. Software makes it generally less of a challenge to complete features after release than can be done with physical products. So there’s less concern/care about releasing unfinished software products and services than there was a few decades ago. We’ve traded speed for fit-and-finish.
In short: I think CI/CD, as practiced, means: Continuously Incomplete / Continuously Disrupting. But I also think it’s here to stay for a long time.
What do you think? Leave a comment below.