I'm Thorstein, and I've been programming both as a hobby and professionally for a decade. I primarily work with .NET and enjoy exploring the latest technologies.
In my spare time, I'm a gamer and a golfer. I've won Bedriftsligaen for CS six times with my team, and yes, I have an image of me with all the trophies. When I'm not gaming, I'm trying to improve my golf swing. Spoiler alert: my golf balls spend more time in the hazard than on the green.
I am currently working as a lead software engineer at Intility, where I build the APIs, authorization systems, and platform tooling behind software used across Intility's customer base. In addition to professional projects, I enjoy creating applications for amusement: I have built apps for tracking activity in the company gym, a game for guessing the names of my colleagues, and an advent calendar.
Backend: C#, .NET, REST APIs, EF Core, SQL Server, PostgreSQL, Redis, Azure Service Bus.
Identity: Entra ID, Azure AD B2C, OAuth/OIDC, RBAC, multi-tenant authorization, Kong, OPA, OpenFGA.
Platform: Kubernetes, OpenShift, ArgoCD, Kustomize, Helm, GitHub Actions, OpenTelemetry.
- Intility Templates, the .NET golden path used to create and ship Intility services.
- Azure Authorization GuestPolicies, a .NET library that automatically blocks guest users from Entra ID.
- Serilog Enrichers AzureClaims, a Serilog enricher that adds properties from Entra ID access tokens to logs.
- Intility Logging, a .NET library for easy logging to Sentry and Elastic.
- Crypto Price Notifier, a Discord bot reporting the current price of Bitcoin and Ethereum.
- Faceit UI Declutter, a Chrome extension that removes all bloat from the Faceit UI.
- Garmin Shot Analyzer, a Chrome extension that detects miscalculated golf shots in Garmin Connect.
- How to write API tests in .NET, a blog post on Intility's engineering site.



