Windows Calling
Hello Microsoft, my old friend
With Blue – uncertain stumbling Buzz –
Between the light – and me –
And then the Windows failed – and then
I could not see to see –— Emily Dickinson (1830 - 1886), from I heard a Fly buzz—when I died
I wonder if the creators of the Blue Screen of Death were thinking of Emily when they settled on that definitive color choice. Or perhaps Emily herself experienced visions of OS catastrophes yet to come. But I digress…
Oh Windohs…
The last few months have been strange for me. I stepped away from my position at GitLab to start my own company and a few weeks later, I temporarily shelved that aspiration in order to work on a side quest for a friend of mine - the details of which I won’t delve into here.
This side quest has already been rewarding and challenging, and like any worthwhile endeavor, it has dragged me to uncomfortable places, most notably back to the world of Windows.
Windows brings back memories of:
Reinstalling Windows. I seemed to do this a lot when I was a kid.
My last gaming rig, optimized for Half-Life-2, running dual Nvidia graphics cards through SLI. I spent a lot of money on this in 2004 and never upgraded since.
The .NET shop which graciously gave me my first “Software Engineer” title, where we FTP’d to Windows Servers and used shared CDNs to load jQuery for performance reasons.
That was a long time ago, and apparently times change.
As anyone who builds software for business users will tell you, there’s always an inevitable requirement which needs special integration with Microsoft Office…
The Situation and Plan
So here’s the situation I ran into on my side quest:
From a Python application, I need to convert a PowerPoint file to PDF (don’t ask why).
After researching many alternatives I landed on this plan:
Let’s use OS specific scripting to automate the PowerPoint application. PowerPoint can nicely convert itself into different formats.
If the Python application detects an OSX system, we’ll run an AppleScript to automate PowerPoint to convert to PDF. If Windows is detected, we’ll run a PowerShell script.
We’ll bundle the OS-specific scripts in a `runtime` directory along with the Python application.
I’m on Mac/OSX, so I can nicely develop the `.applescript` locally and get some immediate feedback while I make changes. I don’t have Windows running on any computers at the moment, so reliably developing and testing the PowerShell script was going to be tricky…
I needed a feedback loop for developing the Windows-specific PowerShell script. To setup this feedback loop, I decided to:
String up a dummy PowerShell script alongside the Python application.
Update the Python application to appropriately utilize the PowerShell script.
Create a development release of the Python application.
Download this release on a Windows environment.
Start testing the application using the baked-in dummy PowerShell scripts and replace the dummy script with an actual implementation.
Once the actual implementation is good, send the resulting PowerShell script to the repository.
But for me to do Step 4, I first needed to actually have a Windows environment…
Let’s Buy a Windows
TL;DR It turns out I didn’t need to buy Windows.
When I was a kid, I would have started this journey by searching for “Windows CD Key” online. I’m an adult now. I have some money. I can be a professional and actually buy software. I told my internal Richard Stallman voice to go make some coffee… he doesn’t need to know.
Anyways, I tried to do the right thing. I really did.
I logged into microsoft.com, added “Windows 11 Home” to my cart (where it still sits), and whimsically pressed “Checkout”. In my naïveté, I assumed this would entitle me to exchange legal tender for some 40-odd alphanumeric characters—enough to actually use the freely downloadable Windows 11 iso.
Instead, I was thrust into a samsaric exercise in futility: an infinite OAuth loop.
Okay, let’s try skipping this step… Maybe the Windows 11 iso will Just Work™ without a product key. After all, if their website is borked, maybe the license checking code is similarly borked…
Windows, Windows, In a Box
Since I wasn’t planning to use Windows for long, I figured a Virtual Machine was the right tool for the job. I was nervous about running into Mac + M1 compatibility issues, so I grabbed my older System76 laptop running Pop!_OS (an Ubuntu variant) and got to work. In the distant past, I would have used VMWare’s free offering for this kind of thing, but a quick Google search informed me of Gnome Boxes. It seemed pretty straightforward, so I figured I’d give it a shot.
Install Gnome Boxes
sudo apt install gnome-boxesDownload Windows 11 iso
(Microsoft kindly provides this on the more functional pages of their website).Launch Gnome Boxes and create new VM using downloaded Windows 11 iso. Be sure to allocate at least ~64 GB of storage and at least ~ 8 GB of RAM. (More if you can spare it).
Unfortunately, I kept running into a discouraging “PC doesn’t meet Windows 11 requirements.”
This issue is exactly why I’m writing this post. A single Reddit comment saved my bacon - and I couldn’t find this info anywhere else. So, in the words of the original commenter, mirevsky:
…turn on the VM.
When you start the installation process , go into Toubleshhoting , and open Command Prompt.
then run regedit
Once you’re inside the Registry Editor, navigate to the following location using the left-hand side menu
HKEY_LOCAL_MACHINE\SYSTEM\SetupOnce you arrive at the correct location, right-click on Setup and choose New > Key, and create key LabConfig. Inside LabConfig create 3 new Dword (32-bit) Value registries, BypassSecureBootCheck, BypassRAMCheck, BypassTPMCheck, set value 1 to all 3 registries.
After closing the regedit, simply execute setup.exe and installation will start and complete with no issues :D
side note: I also benefited from dat720’s addendum that “SHIFT+F10” can be used to open the command prompt.
Thanks mirevsky (and dat720)! This was helpful.
When asked for a Product Key, I was able to skip that section and move on. The rest of the installation and Windows environment setup continued swimmingly.
Actually Solving the Problem
Once I had my Windows environment and downloaded my Python application, I finally had a development feedback loop:
Run the application.
Evaluate the result.
If acceptable, break;
Else, tweak the PowerShell script and repeat.
Solve the feedback loop, and you can solve the problem.
Equipped with free ChatGPT and the Microsoft VBA Office Library docs, I was able to pretty quickly implement and verify the PowerShell script to convert a `.pptx` file to `.pdf`.
Further Irony
As usual, solving the problem took less time than setting it up.
If actually solving the problem is the main quest, then is my little adventure with Windows a side quest? It looks like even in my overarching side quest of a project, I have side quests… Maybe, when it’s all been said and done, the main quest were the side quests we made along the way?




This took me down a memory lane and made my day :)