notes from the workshop.
Field notes on uptime monitoring, status pages, and the unglamorous work of keeping production boring.
2026-08-18
How to monitor an MCP server
An MCP server can return 200 on every request and still be useless to an agent. Probe the handshake instead, with one HTTP POST and one assertion.
- mcp
- monitoring
- agents
- uptime
2026-08-06
8 best Statuspage alternatives in 2026, free and paid
Eight real Atlassian Statuspage alternatives compared honestly: which include the monitoring it leaves out, and which stop charging you per subscriber.
- status-page
- alternatives
- monitoring
2026-08-06
What is an uptime SLA? Percentages, credits and fine print
An uptime SLA is a contract promise with a penalty, not a measurement. What each percentage allows, what a credit really pays, and the clauses that decide it.
- sla
- uptime
- reliability
- downtime
2026-08-05
Scheduling in Rust: one heap, not a timer per task
Every check my uptime monitor runs is scheduled from one BinaryHeap on one task. No timers, no locks, no drift. Five things that fell out of building it.
- rust
- tokio
- scheduling
- performance
2026-08-02
How much downtime is 99.9% uptime? 43 minutes a month
99.9% uptime allows 43 minutes of downtime a month and 8 hours 46 minutes a year. What uses that time, and why three nines is the normal SaaS promise.
- sla
- uptime
- slo
- downtime
2026-08-02
How much downtime is 99.95% uptime? 21.6 minutes a month
99.95% uptime allows 21 minutes 36 seconds of downtime a month and 4 hours 23 minutes a year. Why it is the target behind a 99.9% promise, not the promise.
- sla
- uptime
- slo
- downtime
2026-08-02
How much downtime is 99.99% uptime? 4.3 minutes a month
99.99% uptime allows 4 minutes 19 seconds of downtime a month and 52 minutes 34 seconds a year. Four nines is a design decision, not a question of effort.
- sla
- uptime
- slo
- downtime
2026-08-01
Your login page returns 200. Nobody can sign in.
A 200 proves the page was sent. It proves nothing about the form. Four ways a login breaks while every check stays green, and how to tell them apart.
- monitoring
- login
- trust
- uptime
2026-08-01
Your E2E login test never runs in production
Your end to end login test runs in CI, against staging, at merge time. The faults that lock real customers out cannot happen there.
- qa
- e2e
- synthetic-monitoring
- testing
- playwright
2026-07-25
How I stop one bad probe from waking you at 3 a.m.
One monitoring location with a bad network day is the classic false alert. Here is how repeat checks plus a region vote keep that alert away from your phone.
- monitoring
- multi-region
- false-alerts
- alerting
2026-07-24
Your domain can expire while your uptime monitor stays green
An expired domain does not go dark. It serves a parking page that returns 200 OK, so uptime monitors report it healthy while the site is gone.
- domain expiry
- monitoring
- uptime
- dns
2026-07-23
How I mapped my codebase for humans and AI agents
I turned 146,000 lines of Rust into three files: for me, for the next AI agent, and an interactive map. The method, the prompts, and the AI's wrong counts.
- ai-agents
- llm
- codebase
- documentation
2026-07-22
Do I need an uptime monitor? Count what downtime costs you
An uptime monitor is cheap. One outage you find out about from a customer is not. How to price your own downtime, and what to watch besides the homepage.
- uptime
- monitoring
- downtime
- reliability
2026-07-20
How to write incident status updates that build trust
A guide to writing status page updates during an outage: the four stages, how often to post, and what to say at each one so customers keep trusting you.
- incidents
- status-page
- on-call
- postmortem
- reliability
2026-07-18
Why I chose Rust over Go for an uptime monitor
Go is the usual pick for a service like this. I chose Rust for one reason: a monitor sells clean timing, and its own runtime must not add random delay.
- rust
- go
- monitoring
- devops
2026-07-17
Is 98% uptime good? It allows 7.3 days of downtime a year
98% uptime sounds high, but it allows 7.3 days of downtime a year. When 98% is enough, what to aim for instead, and a downtime table for every target.
- sla
- uptime
- reliability
- downtime
2026-07-15
The status page you can't fake: measured uptime, not published
Why a status page's uptime bar must come from real checks, not the incidents you chose to publish, and a quick test for any page.
- status-page
- monitoring
- trust
- uptime
- postmortem
- sre
- devops
2026-07-14
8 best Pingdom alternatives in 2026, free and paid
Eight real Pingdom alternatives compared honestly: which replaces uptime checks, which replaces synthetics and RUM, and which ends usage-based pricing.
- monitoring
- status-page
- alternatives
2026-07-13
Error budgets, explained: SLOs, burn rate, when to stop shipping
What an error budget is, the simple formula, how burn rate becomes an alert, and the rule that makes it work. With a free calculator.
- sre
- slo
- reliability
- monitoring
- on-call
2026-07-09
ClickHouse disk full: system tables ate 12 GB (the fix)
Disk at 100%, Postgres down with 'no space left on device'. Real data: 20 MB; ClickHouse had logged 12 GB about itself. The config that fixes it, for good.
- clickhouse
- postgres
- postmortem
- observability
- performance
- ops
2026-07-08
Postgres vs ClickHouse is the wrong question. I use both.
My uptime monitor runs Postgres and ClickHouse side by side. Which data goes where comes down to one question, and four database tricks fall out of it.
- postgres
- clickhouse
- databases
- rust
- monitoring
2026-07-07
Why I dropped reqwest for hyper in my Rust uptime prober
I swapped reqwest for raw hyper to probe uptime in Rust. Four things it taught me, each one a detail a normal HTTP client hides from you.
- rust
- hyper
- monitoring
- devops
2026-07-04
Email bombing through uptime monitoring pages
Attackers flood an inbox to bury one real alert, like bank fraud. How subscription bombing works, and how to build a monitor that can't be abused.
- security
- monitoring
- abuse
2026-06-30
Building an uptime monitor in Rust: one binary, two databases
The Rust build behind Uptimepage: a custom hyper client doing ~130K checks a second on one core, a single-heap scheduler, and ClickHouse rollups.
- rust
- clickhouse
- monitoring
- devops
2026-06-20
Best open-source, self-hosted uptime monitors (2026)
A fair look at the open-source, self-hostable tools for watching sites and APIs in 2026: what each is good at, where it stops, and how to pick one.
- open-source
- self-hosted
- monitoring
- status-page
2026-06-18
The night Emma stopped opening dashboards
A 2 a.m. alert, and an on-call engineer who never opened a tab. A short story about asking your monitoring questions instead of clicking through it.
- mcp
- ai
- monitoring
- on-call
2026-06-18
The mystery of the "down" website
"The site is down!" But what does "down" really mean? A detective story through the seven network layers, and the one quiet failure no alarm caught.
- monitoring
- networking
- osi
- tls
- dns
2026-06-16
Monitoring as code: put your uptime checks in a pull request
Click-created monitors rot: nobody recalls why a threshold is set, and the reasoning leaves with its author. Terraform fixes that, and bites back in places.
- terraform
- infrastructure-as-code
- monitoring
- devops
2026-06-03
Your monitors can talk to an AI, with your permission
Uptimepage now speaks MCP, so an LLM can answer "what's broken and since when?" in plain language, plus what we did to stop it from wrecking things.
- mcp
- ai
- monitoring
- security
- api
2026-05-20
Why your uptime monitor should be boring
A monitor that surprises you is doing the wrong job. What changes when you treat the watchdog like a smoke detector: cheap, dumb, unmissable when it matters.
- monitoring
- incidents
- status-pages
- on-call