Michael Kroes
Father of four, living in Haaksbergen. I care about people and I love technology. Home automation. With AI I experiment and push, and I validate what people are saying.
Engineer by background, 20+ years in software. Today I am one of two managers leading the platform stream at Thales: 60 people in eight engineering teams, with 25 direct reports. Before that I spent a decade self-employed and fully remote, working with distributed teams.
Currently — Software Engineering Manager, Thales
The day job
- The part I care most about is that people end up somewhere they're good. I run hiring, performance and compensation for my own reports, and I'd rather move someone to a role that fits than lose them.
- People get honest feedback from me. They hear it when things go well, wherever they are in the organization, and as soon as possible when they could do better. I'm okay with saying no, and the bar stays where it is. You can make as many mistakes as you need during the learning process, and I will keep supporting you.
- I own how the teams build software and the quality of delivery for the stream.
- Some of my work sits outside my own line: a cost-improvement programme for the wider business, and an ongoing argument that we escalate people when what we actually need is knowledge.
The detail lives on my CV. Ask me for it.
Running agents against my own infrastructure
Most of what I know about agentic AI I learned by pointing it at my own infrastructure. One git-tracked repository covers a Proxmox host, thirty-odd Docker Compose stacks, Home Assistant and UniFi networking, with a single deploy path and a commit before and after every change. Claude Code works in that repo, and firewall rules and DNS need an explicit human confirmation.
Around forty monitoring checks roll up into a single health signal. When it flips from healthy to broken, an AI session starts on its own and attempts the repair behind quality gates: a written authorization scoped to container-level recovery, a filter that refuses firewall, DNS, disk and data problems, a rate limit of three attempts per twenty-four hours, and a global kill switch. Out of scope, it investigates and reports, and leaves its session open so I can take over from my phone. Alerting is separate from the fixer, so a crashed agent can never suppress a page. I had an agent interview me on what it was and was not allowed to do, rather than writing the gates myself.
The same approach carries into side projects: a daily-refresh content pipeline for a local events aggregator runs as a scraper → verifier → QA-reviewer agent chain rather than a single unsupervised job, and a shipped bilingual mobile app uses a cost-tuned visual-QA subagent for UI regression checks. I've also introduced Claude Code tooling into an existing open-source medical-device codebase (Trio, an automated insulin-delivery system) without disrupting its established contributor workflow.
Shipped on the side
-
Home Assistant integration
50+ Mobiel
A Dutch mobile carrier whose customer portal is a JavaScript application with no documented API and nothing to scrape. Reverse-engineered its authentication and JSON endpoints into a published integration that reports bundle usage, refresh dates and contract end dates for every SIM in a household: multi-account config flow, English and Dutch translations, distributed through HACS. When the carrier silently replaced its login flow, the break was traced and shipped as a fix the same way I'd expect of a supported product.
-
Home Assistant integration
Scaleway
Cloud spend, instances, Kubernetes clusters and object storage surfaced as sensors, plus a backup platform that registers a Scaleway bucket as a Home Assistant backup location, with multipart uploads, streamed restores so a multi-gigabyte backup never has to fit in memory, and checksum verification on every upload. Hand-rolled REST and S3 SigV4 client with no added dependencies, hardened through a deliberate red-team review pass before release.
-
Browser game
Star Struck
A logic puzzle in the Star Battle / Queens family, built end-to-end with Claude Code: puzzle generator, solver-based difficulty rating and hint engine, in a single dependency-free HTML file. Play it here.
Beyond the day job
Since 2021 I've contributed to the Type 1 Diabetes Care community, improving Nightscout, AndroidAPS and Loop, the open-source tools behind DIY closed-loop insulin delivery. I also help new parents make sense of the technology after a diagnosis.
I've also been an open-source contributor and former co-maintainer of Mail-in-a-Box since 2015, reviewing pull requests and building features in Python and Bash.
Technical background
Most of my career was spent writing code, mostly in the .NET ecosystem, with working fluency across a few others as projects have called for it. I don't write code for work any more. Privately I still do.
- Languages
- C#, Kotlin, Python, TypeScript, Swift, Dart
- Platforms
- .NET, ASP.NET Core, Node.js, Flask, Vue.js, Flutter
- Data
- MS SQL Server, PostgreSQL, SQLite, MongoDB
- Tooling
- Azure DevOps, TeamCity, Git, Docker, CI/CD
- Infrastructure
- Proxmox, Docker Compose, Traefik, ZFS, SSO, monitoring & alerting
- AI & agents
- Claude Code, Codex, agentic coding workflows, LLM-assisted code generation