01

One Job to Rule Them All

Samen met twee collega's heb ik voor één van mijn klanten de orchestratielaag van hun datawarehouse opnieuw opgezet. Het betrof een SSIS-omgeving, SQL Server Integration Services, het Microsoft-platform voor het verplaatsen en verwerken van grote hoeveelheden data.

Together with two colleagues, I rebuilt the orchestration layer of a client's data warehouse. It was an SSIS environment — SQL Server Integration Services, Microsoft's platform for moving and processing large volumes of data.

De bestaande aanpak was functioneel maar inflexibel: processen draaiden na elkaar in vaste blokken, en als er iets misging blokkeerde dat soms de hele reeks, ook al was het een proces dat er weinig toe deed. De volgende ochtend begon dan gewoon opnieuw van voren af aan.

The existing approach was functional but inflexible: processes ran sequentially in fixed blocks, and when something went wrong it could block the entire sequence — even if the failing process was non-critical. The next morning, everything would just restart from scratch.

De nieuwe oplossing draait om een centrale metadata-tabel die automatisch bepaalt wat er wanneer draait, afhankelijk van de dag en het type data. Eén tabel om ze allemaal aan te sturen. Processen draaien waar mogelijk parallel, afgestemd op de beschikbare servercapaciteit, met een afhankelijkheidssysteem dat de volgorde bewaakt waar dat nodig is.

The new solution revolves around a central metadata table that automatically determines what runs when, depending on the day and data type. One table to rule them all. Processes run in parallel where possible, tuned to available server capacity, with a dependency system that enforces ordering where required.

Bij een mislukking slaat het systeem een milestone op: een controlepunt dat bijhoudt hoe ver de uitvoering was. Bij een herstart begint het daar verder, niet bij het begin. Een niet-essentieel proces dat faalt houdt de rest niet meer op.

When something fails, the system stores a milestone: a checkpoint tracking how far execution had progressed. On restart, it continues from there rather than the beginning. A non-essential failing process no longer holds up the rest.

Een nieuw proces toevoegen of tijdelijk uitzetten doe je via de beheertabel, geen code, geen release nodig. Het systeem draait inmiddels twee jaar stabiel in productie.

Adding or temporarily disabling a process is done through the management table — no code, no release required. The system has been running stable in production for two years.

SSIS SQL Server Metadata-driven Parallelle verwerking ETL Orchestratie
02

Snapshot Semantic Model

Ik bouw graag één groot, goed doordacht model in plaats van een apart model per rapport — schaalbaar, consistent en voor iedereen bruikbaar. Voor deze klant werd dat model ook nog eens een uitgebreid time intelligence vraagstuk. De data heeft meerdere datums waarop je waarden kunt uitzetten, maar diezelfde datums kun je ook gebruiken om het verleden te reconstrueren. Waar stonden we op dat exacte moment in tijd? Wat wisten we toen? Dat werd de rode draad door het hele model.

I prefer building one large, well-considered model rather than a separate model per report — scalable, consistent and usable by everyone. For this client, that model also turned into an extensive time intelligence challenge. The data has multiple dates against which you can plot values, but those same dates can also be used to reconstruct the past. Where were we at that exact point in time? What did we know then? That became the thread running through the entire model.

Terugkijken naar wat je wist, niet wat je nu weet

Looking back at what you knew, not what you know now

Vorig jaar vergelijken is makkelijker gezegd dan gedaan. Je kunt niet zomaar dezelfde periode van vorig jaar pakken — op dat moment wist het bedrijf nog niet wat de rest van het jaar zou brengen. Een boeking die later werd geannuleerd telt dan gewoon mee, want op dat moment wisten we nog niet dat die annulering eraan kwam. De oplossing: vergelijk wat het bedrijf op datzelfde punt in de tijd vorig jaar wist. Dat is wat we het snapshot systeem noemen — de kern van alle jaar-op-jaar analyses in het model.

Comparing to last year is easier said than done. You can't simply take the same period from last year — at that moment, the company didn't yet know what the rest of the year would bring. A booking that was later cancelled still counts, because at that point we didn't know the cancellation was coming. The solution: compare what the company knew at that same point in time last year. That's what we call the snapshot system — the core of all year-on-year analyses in the model.

Één model, diverse invalshoeken

One model, multiple perspectives

Verschillende afdelingen kijken elk vanuit hun eigen hoek naar dezelfde data. Finance wil andere cijfers zien dan operations of marketing. Het model levert alle perspectieven correct en consistent, zonder dat een analist zelf hoeft na te denken welk perspectief hij pakt. Elke KPI volgt exact dezelfde structuur: dit jaar, vorig jaar, verschil — per datumperspectief. Altijd op dezelfde plek, altijd op dezelfde manier opgebouwd.

Different departments each view the same data from their own angle. Finance wants different figures than operations or marketing. The model delivers all perspectives correctly and consistently, without an analyst needing to think about which perspective to apply. Every KPI follows the exact same structure: this year, last year, difference — per date perspective. Always in the same place, always built the same way.

AI als vliegwiel, niet als vervanger

AI as flywheel, not replacement

De combinatie van strakke concepten en AI-assistentie maakte het mogelijk om meer dan 1.300 measures te genereren, documenteren en organiseren op een schaal die handmatig niet haalbaar was geweest. De concepten kwamen van ons, de uitvoering werd er een stuk sneller door.

The combination of tight concepts and AI assistance made it possible to generate, document and organise over 1,300 measures at a scale that would not have been feasible manually. The concepts came from us; the execution became a lot faster.

Documentatie als onderdeel van het model

Documentation as part of the model

De mapstructuur, de naamgeving en de eindgebruikersdocumentatie volgen allemaal dezelfde logica. Zo weet een analist altijd waar hij moet zijn — op basis van de KPI die hij zoekt en het tijdsconcept dat hij wil toepassen.

The folder structure, naming conventions and end-user documentation all follow the same logic. So an analyst always knows where to look — based on the KPI they're searching for and the time concept they want to apply.

Power BI DAX Calculation Groups TMDL Time Intelligence
03

VVT Datamotor

Bij mijn vorige werkgever CP-FM liep ik steeds tegen hetzelfde patroon aan: nieuwe klant in de ouderenzorg, zelfde bronsystemen, zelfde rapportagevragen. Elke keer opnieuw beginnen voelde als verspilling. Dus bouwden we een oplossing die dat oploste.

At my previous employer CP-FM, I kept running into the same pattern: a new client in elder care, the same source systems, the same reporting questions. Starting from scratch every time felt like waste. So we built a solution to fix that.

Samen met een collega consultant bouwde ik een generieke datamotor in QlikSense, specifiek voor de VVT-sector. De kern: een scriptlaag die over de bekende bronsystemen in de ouderenzorg kon loopen, met per klant een configuratie voor de uitzonderingen — want elke organisatie heeft ze, alleen zijn ze niet zo uniek als ze zelf denken.

Together with a colleague consultant, I built a generic data engine in QlikSense specifically for the VVT sector. The core: a script layer that could loop over the known source systems in elder care, with a per-client configuration for exceptions — because every organisation has them, they're just not as unique as they think.

In totaal ontsloten we ongeveer tien bronsystemen: vier financiële systemen, vijf personeelssystemen en één productiesysteem.

In total we connected around ten source systems: four financial systems, five HR systems and one production system.

Eén fundament, meerdere diensten

One foundation, multiple services

De standaard rapportagelaag die we er overheen bouwden werd als maandelijks abonnementsmodel aangeboden. Implementaties gingen een stuk sneller doordat het fundament er al lag, en de data diende ook als voeding voor de EPM-systemen die CP-FM bij dezelfde klanten leverde. Eén platform dat meerdere diensten bij elkaar bracht.

The standard reporting layer we built on top was offered as a monthly subscription model. Implementations were significantly faster because the foundation was already in place, and the data also fed the EPM systems that CP-FM delivered to the same clients. One platform bringing multiple services together.

Herbouwd in SSIS en Power BI

Rebuilt in SSIS and Power BI

Later heb ik de motor solo opnieuw opgebouwd in SSIS en Power BI. Dezelfde aanpak, andere technologie.

Later I rebuilt the engine solo in SSIS and Power BI. Same approach, different technology.

QlikSense SSIS Power BI Multi-tenant VVT Metadata-driven
04

Polaris

Naast mijn werk voor klanten bouw ik thuis aan een eigen infrastructuur die ik Polaris noem. Niet als hobbyproject, maar als serieus platform waar ik dingen uitprobeer die ik ook professioneel inzet.

Alongside my client work, I'm building my own infrastructure at home that I call Polaris. Not as a hobby project, but as a serious platform where I test things I also apply professionally.

De basis is een zelfgebouwde homelab server waarop Proxmox draait, software waarmee je één machine opdeelt in meerdere geïsoleerde omgevingen. Daarop draaien tientallen diensten, van mediaserver tot volledige AI-omgevingen.

The foundation is a self-built homelab server running Proxmox — software that splits one machine into multiple isolated environments. Dozens of services run on it, from media server to full AI environments.

Wat het systeem kan

What the system can do

Polaris is gekoppeld aan Claude via het MCP-protocol, een open standaard waarmee AI-assistenten echte systemen kunnen aansturen. Home automation via Home Assistant, containers starten of stoppen, media opzetten, infrastructuurdocumentatie bijhouden. Geen losse scripts, maar één AI die de infrastructuur als geheel begrijpt.

Polaris is connected to Claude via the MCP protocol, an open standard that allows AI assistants to control real systems. Home automation via Home Assistant, starting and stopping containers, setting up media, maintaining infrastructure documentation. No loose scripts, but one AI that understands the infrastructure as a whole.

Waarom dit relevant is

Why this is relevant

Dit zijn precies de integraties die steeds meer bedrijven willen bouwen: AI die niet alleen antwoord geeft, maar ook daadwerkelijk iets doet. Door dit thuis te bouwen blijf ik aan de voorkant van wat mogelijk is.

These are exactly the integrations that more and more companies want to build: AI that doesn't just answer questions, but actually does things. By building this at home, I stay at the front of what's possible.

Proxmox Home Assistant Claude MCP AI Agents Infrastructure automation