Azure, tech and other random stuff
Notes from Vikingur Saemundsson on Azure, PowerShell, AI coding agents and whatever else gets built here.
From proof of concept to production: the part that is not code
My last post compared Director-Driven Development with other AI coding workflows and ended on a narrow claim: AI tools generate and review code, and my frameworks make the architecture and security requirements part of…
Where Director-Driven Development sits among AI coding workflows
What the AI coding tools and workflows of 2026 ship, what Director-Driven Development shares with them, where it stands alone, and which of my own claims survive the vendors’ documentation and the evidence on…
What directing AI agents costs: three projects, measured
Three projects run on Director-Driven Development, every token priced at API rates: $2 to $3 per completed task, $50 for a 6,700-line feature, 96 percent cache reads, and what a Claude Max subscription turns that into.
Anchoring AI-built SaaS in your security framework
When an AI agent writes most of your code, your security framework has to live where the agent works. How SaaSAllTheThings anchors a B2B SaaS in your control framework: enforce what’s critical, audit the rest.
Build a B2B SaaS on Azure with Director-Driven Development
A step-by-step guide to SaaSAllTheThings: build a multi-tenant B2B SaaS on Azure with an AI coding agent, where you own the product, the framework owns the architecture, and the build verifies every change.
Director-Driven Development: A New Way of Working with AI Coding Agents
Director-Driven Development is a new way of working with AI coding agents: small context, surgical tasks and automated checks. You direct, the AI builds.
Sovereign Cloud Part 3: Disconnected operations change the sovereignty conversation for Azure Local
Disconnected operations shift a critical dependency boundary: operational control no longer collapses when the public control plane disappears.
Sovereign Cloud Part 2: The technical controls that make sovereignty real in a public cloud
Sovereign cloud is not defined by a list of security features, but by whether control is enforceable under adverse conditions.
What sovereignty actually means in the public cloud
Sovereignty is not primarily about where data sits. It is about control and accountability.
DevOps & Rocket manufacturing
Elon Musk’s 5 steps to building rockets apply to just about any process in any industry, including IT and DevOps.
Sending css formatted tables in Outlook
If you’ve ever used Powershell to send HTML tables in Outlook containing CSS you’ve probably been disappointed of the outcome. There is some archived documentation for Outlook 2007 that is still viable for Outlook 365…
Just enough Administration & RDS
Reblogged from my company blog: https://tech.xenit.se/just-enough-administration-rds/ — The Problem? Microsoft RDS has limitations when delegating access, in fact there is no built-in access delegation whatsoever! The…
Recursively search Azure Ad group members
Reblogged from my company blog: https://tech.xenit.se/recursively-search-azure-ad-group-members/ — When working with on-premise Active Directory an administrator often has to recursively search AD groups, this is easy…
Azure Automation – Running scripts locally on VM through runbooks
Reblogged from my company blog: https://tech.xenit.se/azure-automation-running-scripts-locally-vm-runbooks/ — I was tasked to create a powershell script to run on a schedule on a Azure VM. Normally this would be…
Powershell & Graphs
TL;DR I wanted to draw graphs in powershell without any external dependancies. So I did, results below. How to graph: Create one or more array of points Join arrays into another array of lines Execute Draw-Graph…
Generate-Key
To compliment my earlier post I have created a short function to generate keys. Function Generate-key{ Param( [validateset(128,192,256)] $bits, [switch]$COUT, $seed ) $bytes = $bits/8 $array = @() If($seed){ 1..$bytes…
Encrypting strings with custom keys in powershell
Since the ConvertTo-SecureString is not really secure, and neither is the EncodedCommand (base64string) I made two short functions to encrypt and decrypt strings in order to send them across the void unharmed. Function…
Retreive passwords through GPO/GPP with powershell.
There is a known vulnerability in windows where all passwords stored in Group policy preferences are encrypted with a public AES key (link to msdn). In this post we will go through how to get all the usernames and…
Counting in roman
1 to 100 looks like this I, II, III, IV, V, VI, VII, VIII, VIV, X, XI, XII, XIII, XIV, XV, XVI, XVII, XVIII, XVIV, XX, XXI, XXII, XXIII, XXIV, XXV, XXVI, XXVII, XXVIII, XXVIV, XXX, XXXI, XXXII, XXXIII, XXXIV, XXXV…
Threaded GUI module
Function Invoke-GUI { [cmdletbinding()] Param ( [Parameter(Mandatory=$True,ParameterSetName=”File”)] [String]$File, [Parameter(Mandatory=$True,ParameterSetName=”XAML”)] [XML]$XAML, [Parameter(Mandatory=$False)]…
Microsoft hotfix indexer and browser
A while back I made a quick hotfix indexer script and database browser. These were not too great but had sufficient functionality for the time. Now that I have expanded on functionality I want to write this as a single…
Project: 3D Printer from scratch. Part 5 – Trial and error. And finally success!
With all the mechanical parts assembled all that is left is firmware calibration – or so we thought. With all basic calibration done we noticed on prints that the X and Y axises were shifting. as shown below. Looking…
Project: 3D Printer from scratch. Part 4 – Assembly
With all the parts delivered it was time to assemble. I’m not going to go through the whole build process. But it consisted of loads of screwing around (pun intended) and It’s not the prettiest build but i honestly…
Hotfix browser
#Requires -version 2 [CmdletBinding()] Param($min,$max) Begin{ $MyPath = Split-Path $MyInvocation.MyCommand.path -Parent Function SaveFileDialog{ Param( [Parameter(Mandatory=$True)] $Filetype )…
Index all microsoft hotfixes
Microsoft has a crappy hotfix index mechanism. I want to change this, and I’ve done this by indexing all support.microsoft articles myself. To do this you need a SQL server with the following table configuration Then…
Project: 3D Printer from scratch. Part 3 – Electronics, issues and blowing fuses
The last parts were delivered from ebay on the 3rd of march. This took a bit longer than usual as I managed to order during the chinese new year. With all the parts at hand i decided to start building, while the paint…
Project: 3D printer from scratch. Part 2 – Printed parts delivery
Update! I got a box yesterday with some mysterious contents. Opening it revealed the table of contents, delivery took exactly one week. I’m very pleased, this is the exact ebay item i bought Since images can tell the…
Project: 3D printer from scratch. Part 1 – The Shoppingcart.
I’ve always wanted a 3D printer, but the pricetag has been so high that I’ve gotten discouraged in the past. However with the increasing community support of open sourced 3D printers the accessibility and price has…
Solve sudoku – WIP!
[CmdletBinding()] Param() Process{ # Initial process. Clear all grids with hints. $Hash1 = 1 # Set Datahash 1 and 2 to different values. $Hash2 = 0 While($Hash1 -notmatch $Hash2){ $Hash1 = (1..9 | ForEach-Object{($Data…
Find primes, the proper way
I noticed that the earlier way to find primes is really fast for small numbers, but it is really really slow for number >5000 To shorten this, and provide a proper track of what primes are found as well as looping…
Quick and dirty way to find primes
2..5000 | ForEach-Object{ $current = $_ $f = @() 1..$Current | ForEach-Object{ $result = $current/$_ If($result.GetType().Name -eq “Int32”){ $f += $result } } if($f.count -le 2){ $current } }
Fibonacci sequence
$1 = 0 $2 = 1 1..100 | ForEach-Object{ if($_%2 -eq 1){ $1 = $1+$2 $1 } Else{ $2 = $1+$2 $2 } }
Alcohol calculator
Calculate the amount of pure alchohol in litre you consume per year. All forms needs to be filled in. [void][reflection.assembly]::LoadWithPartialName(“System.Windows.Forms”) $Form = New-Object…
Get startpage
Invent startpage set in IE for XP and Windows7 clients. Needs a list of computers and collects the startpage in a CSV file. [cmdletbinding()] Param( $Computers, $output, $Progress, [Switch]$Loop )…
Access CSC
this is used to quickly gain access to a users client side cache without ruining sync. Used for backup issues and other stuff. $comp = ‘computer1’ # Replace with computer $FQDN = ‘your.domain.com’ # Replace with FQDN…
Add users as local admin on select computers
This is used to add users as local admin on a select group of clients. Needs a input file specified or default to input.txt in same folder. It converts Administrator SID to friendlyname to account for things such as…
Custom progress bar
Not that anyone wants or needs it, but here is a custom progress bar! It has two modes. Loop and step. And is called like below. PS> 0..99 | ForEach-Object{“Processing, current step $_”;Start-Sleep -Milliseconds…
FileDialogs
Function SaveFileDialog{ Param( [Parameter(Mandatory=$True)] $Filetype ) [Void][Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) $SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog…
The one-liner maker!
I give you all, probably the most unused function on the planet. The “Make one-liner”! It’s probably not even close to “Complete” but it is easy to add exceptions on where to format. Function Main{ $ScriptString =…
SQL queries in powershell
I was trying to query the SCCM database and sort the results with Powershell to get a full report on all the connections to a collection. To do this i needed to inject a SELECT query and retrieve an object from the…
Beta testing and error handling
Here is a simple snippet that you can run to output all exceptions in a script. $ErrorActionPreference = “SilentlyContinue” IWillProduceAnError #—————————————————————- # Debug function, dumps all errors in $Error…
Office 2007 and .ost files.
There is a slight issue with .ost files and roaming profiles in Outlook 2007. The issue appears when the user gets a corrupt profile, gets another generated but still has some registry keys mapped to the old corrupt…
Windows forms, tips and trix – Buttons
Ever written a GUI to your application? Ever think there are alot of unnecessary lines? Here is a smart way to add basic buttons without too many lines. function CreateButton{ param( $name, $text, $size, $location…
wget for windows
ever wanted to use wget in Powershell? This short function allows you to wget to local directory. function wget($urlpath){ $directory = (get-location).path $filename = $urlpath.Split(“/”)[-1] $file =…
Powershell auto updater
I wrote this short script to keep local scripts up to date with server versions. Makes it easier to handle scripts that are added with initial version through task sequence or other onetime distributions. The…