Hi there!
I'm Markus, nice to meet you.
Welcome to my notebook! Here, I share my experiences on the more or less useful things I'm working on.
Posts

A self-watering garden that thinks for itself
Turning a single 24V valve into a weather-aware, volume-based irrigation system in Home Assistant — with burst, blockage and leak protection, and not a line of YAML written by hand.

How I build software

One Interface to Rule Them All: Open WebUI with Gemini and Home Assistant
Setting up Open WebUI with Gemini 2.5 Flash and the ha-mcp add-on to create a single conversational interface that controls your smart home and answers any question.

Safari incognito and Auth0, or why my login flow kept silently breaking
Notes on the things that broke when logging in via auth0-spa-js on iOS Safari private mode, and what it took to make them stop breaking.

Notes on building a SAML identity provider
Notes from building a SAML IDP for a Vimeo integration, including the parts that make it trickier than OIDC.

Installing Coolify on a Raspberry Pi 5
Setting up Coolify as a small self-hosting platform on a Raspberry Pi 5, with Cloudflare Tunnels for external access.

Drizzle migrations on Cloudflare D1
Setting up Drizzle and generating migrations for a Cloudflare D1 database.

Browser compatibility with core-js and eslint
Using core-js to polyfill older browsers and eslint-plugin-compat to catch unsupported APIs at lint time.

Monorepos with pnpm and changesets
Setting up a pnpm workspace and using changesets to version and publish packages.

A cookbook for a cheap SaaS stack
The minimum set of pieces I reach for when starting a small SaaS side project — picked so the whole thing can run for free until it actually needs to.

Building a FlexSearch index inside the Next.js build
Building a FlexSearch index during the Next.js build by piggybacking on sitemap generation.

Generating a sitemap for Outstatic
Adding a sitemap to an Outstatic site using the Next.js App Router sitemap convention.

Markdown tables and code highlighting in Outstatic
Adding markdown table support and code highlighting to Outstatic using remark and rehype.

A cheat sheet for OAuth 2.0 endpoints and flows
A short cheat sheet of the endpoints, parameters and grant types in OAuth 2.0 based on RFC 6749.

REST API guidelines, compared
A side-by-side look at how different REST API guidelines handle filtering, pagination and response metadata — JSON:API, GitHub, Google, React-Admin and Auth0.

Trying Outstatic as a CMS
Why I picked Outstatic as the CMS for this site after looking at Docusaurus, Vitepress, Nextra and TinaCMS.

