mz.status
build passing
Azure · TerraformCI/CD automationWritten in public

Infrastructure, monitored.
Knowledge, shipped.

A running log of a career change into tech, now working toward DevOps and platform engineering — Azure, automation, and the AI tools I use to get there — written the way I actually work: in commits, PRs, and status updates.

aiportfolio.dev — automations
Terraform DR rehearsal · ap-southeast-2
4m 12s
LinkedIn draft → publish
queued
SMS gateway healthcheck
running…

Latest log entries

view all →

about

Michał Zawadzki

Career-changed into tech, two years into a System Engineer role on Azure — now leaning into DevOps, automation, and applied AI. Still figuring a lot of it out, and this is where I write it down as I go.

full profile →

Monitoring tiles

3/3 in progress

DevOps

operational

CI/CD, GitHub Actions, infrastructure-as-code — trying to make shipping less scary, one pipeline at a time.

learning by doing

Azure

operational

The stuff I actually touch day to day: IP whitelisting, network design, Terraform, disaster recovery drills — still learning the edges of all of it.

2 years in

AI

operational

Experimenting with Claude and LLM tooling for automation, scripting, and small internal tools.

models: claude

Selected work

view all →
aioperational

LifeOS — a self-hosted AI assistant

A personal AI assistant I'm building for myself: a FastAPI backend behind a Telegram bot and a small React web app, routing between a local Ollama model and OpenRouter depending on the task.

  • Handles goals, calendar, and budget tracking through conversation, with voice input/output and Google Calendar integration.
  • Self-hosted on a k3s cluster on Oracle Cloud, Terraform-provisioned with CI/CD deploying on every push to main — started as a WSL2 box at home, now kept running as a cold-standby rollback instead of being torn down.
  • Custom domain (lifeos.michalzawadzki.dev) backed by a Terraform-managed Cloudflare DNS record — imported from a hand-created one into IaC rather than left undocumented, DNS-only/unproxied so cert-manager's HTTP-01 challenge and the app's SSE/voice streaming don't pick up an extra proxying layer.
#ai#llm#self-hosted#automation
devopsoperational

This site's own publish pipeline

Merge a Markdown post to main and it deploys, then publishes itself to LinkedIn with a link back — no manual copy-paste step.

  • GitHub Actions handles the full flow: build, deploy, wait for the live URL, then publish to LinkedIn via the official REST API.
  • The deploy check used to just poll for a 200 — which would pass even against a stale cached page. It now also confirms the actual post title is present in the response body before publishing goes ahead, with unit tests covering that logic so it can't silently regress.
  • Everything is versioned and reviewed through a normal pull request, same as any other change to the site — CI runs typecheck, the full unit test suite, and a production build on every push.
#devops#automation#ci-cd#linkedin

Let's talk

Working through similar Azure/AI/DevOps problems, or made a similar career change? I'd genuinely like to hear from you.

collaborate →