Azure, tech and other random stuff

Notes from Vikingur Saemundsson on Azure, PowerShell, AI coding agents and whatever else gets built here.

  1. 12 min readAI coding agents, Azure, Cloud Governance

    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…

  2. 6 min readAI coding agents, Claude Code, developer workflow

    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…

  3. 13 min readAI coding agents, Claude Code, developer productivity

    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.

  4. 9 min readADR, AGENTS.md, AI coding agents

    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.

  5. 11 min readAGENTS.md, AI coding agents, Azure

    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.

  6. 7 min readAGENTS.md, AI coding agents, Azure

    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.

  7. 6 min readAzure Local, Disconnected Operations, DORA

    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.

  8. 8 min readAzure, Azure Policy, Encryption

    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.

  9. 3 min readCloud Governance, Data Sovereignty, EU

    What sovereignty actually means in the public cloud

    Sovereignty is not primarily about where data sits. It is about control and accountability.

  10. 3 min readAutomation, Continuous Improvement, DevOps

    DevOps & Rocket manufacturing

    Elon Musk’s 5 steps to building rockets apply to just about any process in any industry, including IT and DevOps.

  11. 1 min read

    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…

  12. 1 min read

    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…

  13. 1 min read

    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…

  14. 5 min read

    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…

  15. 2 min read

    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…

  16. 1 min read

    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…

  17. 2 min read

    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…

  18. 1 min read

    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…

  19. 1 min read

    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…

  20. 3 min read

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

  21. 1 min read

    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…

  22. 1 min read3dprinter

    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…

  23. 1 min read3dprinter

    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…

  24. 7 min read

    Hotfix browser

    #Requires -version 2 [CmdletBinding()] Param($min,$max) Begin{ $MyPath = Split-Path $MyInvocation.MyCommand.path -Parent Function SaveFileDialog{ Param( [Parameter(Mandatory=$True)] $Filetype )…

  25. 1 min read

    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…

  26. 2 min read3dprinter

    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…

  27. 1 min read3dprinter

    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…

  28. 2 min read3dprinter

    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…

  29. 2 min read

    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…

  30. 1 min read

    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…

  31. 1 min read

    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 } }

  32. 1 min read

    Fibonacci sequence

    $1 = 0 $2 = 1 1..100 | ForEach-Object{ if($_%2 -eq 1){ $1 = $1+$2 $1 } Else{ $2 = $1+$2 $2 } }

  33. 1 min read

    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…

  34. 2 min read

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

  35. 1 min read

    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…

  36. 2 min read

    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…

  37. 3 min read

    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…

  38. 1 min read

    FileDialogs

    Function SaveFileDialog{ Param( [Parameter(Mandatory=$True)] $Filetype ) [Void][Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”) $SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog…

  39. 1 min read

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

  40. 2 min read

    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…

  41. 1 min read

    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…

  42. 2 min read

    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…

  43. 2 min read

    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…

  44. 1 min read

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

  45. 2 min read

    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…