RSSAmplifier

Blog

Prskavec.Net

Personal site of Ladislav Prskavec — Software Engineer & Site Reliability Engineer in Prague. Writing, conference talks, an OnCall design guide, and the You Build It You Run It podcast.

prskavec.netRSS feed ↗45 posts

Latest posts

Finding and fixing memory leaks in Go

Go has a garbage collector, but you can still leak memory. Here is how we hunted down a slow leak in production with pprof, and the real fixes that stopped it.

My Dotfiles and the Tools I Use (2026 Edition)

A tour of my dotfiles: how I bootstrap a new Mac, the terminal and shell setup, the CLI tools I have swapped in, and how AI agents fit into the workflow. A living post I update every year with what changed.

A Knowledge Format Is Not a Knowledge Base

Google's Open Knowledge Format standardizes the container, not the relationships and curation that make a knowledge base useful. Existing document formats already cover the authoring layer; a portable knowledge base needs a stronger, syntax-independent model.

How I Use Logseq as a Personal Knowledge Base

How I use Logseq journals, local sources, durable pages, and agent-assisted curation to keep a personal knowledge base useful without turning every note into permanent documentation.

How to Make an MCP Server in Go

Most developers use AI models, but few extend them. In this talk we go a level deeper and build our own Model Context Protocol (MCP) server in Go. MCP is an emerging standard that lets AI systems securely reach tools, APIs, and real-world data. I show how to build a small, working MCP service, connect it to an AI client, and expose your own capabilities, from querying observability data to…

Agent Harnesses: Why You Shouldn't Bet Your Company on Claude Code or Codex

Coding agents are great, but locking your company into Claude Code or Codex is a strategic mistake. Here is why agent harnesses matter and what to do instead.

Under the Hood of AI: Building Your Own MCP Server in Go

Most developers use AI models, but few extend them. In this talk we go a level deeper and build our own Model Context Protocol (MCP) server in Go. MCP is an emerging standard that lets AI systems securely reach tools, APIs, and real-world data. I show how to build a small, working MCP service, connect it to an AI client, and expose your own capabilities, from querying observability data to…

Under the Hood of AI

A reader-friendly write-up of my WebExpo Prague 2026 talk on building your own Model Context Protocol (MCP) server in Go: what MCP is, why it matters, how to design it well, and the security boundaries you need before letting an AI touch your production systems.

From Small Terraform Projects to Terralith

In this talk, I'll walk you through the common evolution of Terraform projects - from simple beginnings to complex, sprawling infrastructure definitions that become increasingly difficult to manage. We'll explore the familiar challenges many teams face: starting with a handful of resources that gradually expand into an unwieldy codebase as business requirements grow. I'll share our team's journey…

Schema-First Telemetry in Go: A New Approach to Observability

Modern Go services generate telemetry (metrics, logs, traces) with instrumentation embedded directly in code. Usually this is code-first: developers call APIs (counters, loggers, tracers) and attach key-value attributes on the fly. It works, but at scale it leads to fragmented data and missing context. Schema-first telemetry turns that around: you define a schema (like an IDL file) for your…

Tools table overview

Last updated: March 2026 — Pricing and status verified against vendor websites. Prices are approximate and may change; always check the vendor’s current pricing page before making decisions. Category Other Functions Name URL Notes Company Info Base Price (annual) Pagers Incident Workflows PagerDuty https://www.pagerduty.com/ Long on market, strong reliability; now includes AIOps and AI…

Build nice terminal UI with Bubble Tea

Building a nice terminal UI in Go with Bubble Tea

Bubble Tea - how to make better terminal UI

Bubble Tea - how to make better terminal UI

On-Call Documentation

Writing documentation effectively can be achieved by following a framework such as Diátaxis . Diátaxis is a way of thinking about and doing documentation. We will apply a similar approach and split documentation into four parts. Tutorials How-to Guides Runbooks / Playbooks (Google SRE naming) How to create an effective runbook Glossaries Explanation Tutorials What You Need for On-Call - A tutorial…

Exploring Terramate - A Solution to Terraform Orchestration Challenges

Terramate complements Terraform with structure and tooling for managing multiple Terraform stacks, environments, and configurations. It targets the pain points of large-scale Terraform: dependency management, stack management, and environment differentiation.

OpenTelemetry and Go Gin Framework

How to make W3C TraceContext work for your application in the Go Gin Framework

OpenTelemetry as best way how to instrument your CICD pipeline

OpenTelemetry as best way how to instrument your CICD pipeline. Talk cover observability CICD tools and show demo how instrument Github Action using Honeycomb buildevents and manual instrumentation in project using Dagger.io for pipelines.

How we run stateful services for customers in Kubernetes

Disclaimer: I work for Pure Storage, which provides and sells flash storage for enterprise customers. We have a PDS (Portworx Data Services) service that offers stateful services (PostgreSQL, Kafka, Cassandra, MongoDB, Consul, Mysql, Redis, Elasticsearch, Couchbase, RabbitMQ, ZooKeeper) with a single operator for the deployment of all these services. We have a few other operators for backup and…

Watch out for basic HTTP client settings in Go

Most programming languages don't have basic settings for HTTP made to run in production.

CI pipelines should be code! Dagger Go SDK

Talk is about new Dagger Go SDK

Pipelines as Code

Using Dagger.io Go SDK for Pipelines implementation.

Getting started with fuzzing

Talk is about new Fuzzing function in Go 1.18

How to make the perfect Grafana dashboard?

You may think that your dashboard is perfect but the next incident can completely break this perception.

The Future of Continuous Integration Engines

Continuous Integration Engines (CIEs) have a long history. The term Continuous Integration (CI) has been used for the first time by Grady Booch in 1991.

Grafana dashboards and Jsonnet

I'm using grafana for more than year and Jsonnet helps me make dashboards easy to maintain and this is my experience with it.

Updating README in Github personal repository

How to automate changes in README.md in personal repository in Github.

Compliance as Code

Talk is about Compliance as Code in general.

JAMStack in 2019

Talk is JAMStack and tools about them in 2019.

TinyGo

Talk is about TinyGo project and demo with Micro:Bit controller.

Testing Cloud Infrastructure

Talk is focused on Compliance as Code and Infrastructure as Code.

Summary

Designing on-call is a tough process with constantly changing conditions. Team size shifts frequently — you add people during hiring and lose them when they leave — and planning around that is never easy. We don’t cover handover times for sites and what is recommended in detail here. The SRE book recommends Wednesday for weekly shift changes, but I suggest Sunday or Monday instead. We use…

Postmortems

Postmortems are how you make sure the same incident does not happen again. The meeting is not the goal. The document is not the goal. The goal is prevention: clear action items, owners, due dates, and a process that checks whether the work actually happened. I recommend a full postmortem for every customer-impacting incident. Cross-team problems are also good candidates, even when the customer…

Daily Oncall Routine

For daily on-call support, I recommend a few things. Make everything related to your on-call visible in one place. I recommend a dedicated Slack channel for on-call. If you funnel all notifications and alerts into that channel, it becomes easy to see when something is happening. It’s best to also have a dedicated channel for major incidents so that communication isn’t overwhelmed by…

Incident process tooling

You do not need an expensive incident platform to start. The minimum useful stack is: a pager tool, so alerts reach the person currently on-call a team chat tool such as Slack, Teams, or Mattermost, so the work has a shared timeline a ticketing system with a queue, such as Jira, Jira Service Management, GitHub Issues, Linear, or any tool your team already uses The ticketing system matters more…

Reporting

Over the years, I have found the following reports most valuable for On-Call owners to prepare: Number of incidents per week per team — useful for a regular weekly review. Number of people who had incidents in the last month, quarter, or six months. Number of people who had incidents at night in the last month, quarter, or six months. Total hours people spent on-call in the last six months.…

OnCall Market

An on-call market is a structured, team-managed process for swapping shifts. Without one, swaps happen ad hoc — through direct messages, verbal agreements, or changes made directly in the pager tool by someone other than the engineer on duty. These informal swaps are fragile: they get forgotten, they create coverage gaps, and they make it hard to audit who was actually responsible for an incident.…

Weekly oncall

For an overview of on-call, I recommend reading Chapter 14 on On-call 1 . But now to my example: We have team with primary and secondary roster We can find what is best for us using 1 - 3 sites We are looking how many people we need and how we calculate costs We don’t try to focus on daily shifts that will make example more complicated We don’t use combinations as primary in daily and secondary…

Escalations & Metrics

The primary and secondary layers are for resolving and managing incidents. You need an escalation process for a few reasons. interchangeability for any reason (the primary having problem accessing the internet, traveling, oversleeping, etc.) nobody responds on primary/secondary, and you need to address this (manager on-call) problems that can’t be resolved by primary/secondary (security, the…

Working vs non-working hours

In my example, I calculate how many non-working hours people spend on-call. At least in the EU, you are required to pay extra for this 1 , and it’s the right thing to do. That said, many people value not working on weekends more than the extra pay. Sleep deprivation is a serious problem, and as a manager, you need to think carefully about this. 2 I have a colleague whose company gives one…

Daily vs Weekly

My example uses weekly shifts, though that doesn’t mean I prefer them over daily shifts. Weekly shifts are not inherently better or worse. I think that if you are a single-site team, daily shifts are better. You can spread weekend coverage across six people and handle the whole week that way. For 2-3 sites, weekly shifts are more common. A strategy named “follow the sun” (FTS 1 )…

Primary vs secondary

When you have a primary and secondary on-call, several design decisions shape how effective the arrangement is. Here are the key questions to answer for your team. Should the same people rotate through both rosters? The most common approach is to rotate the same pool of engineers through both primary and secondary slots, just offset by one week. This keeps the secondary familiar with the current…

High Alert ratio

One of the most challenging problems of on-call design is controlling the number of times engineers are paged during the night. This is especially critical for single-site teams. A high number of pages can cause alarm fatigue. Having people answer pages at 2 AM only to realize they are responding to something that isn’t urgent or actionable can quickly damage team morale. You need to…

Roster

The roster is a term used for on-call planning, which describes a group of people who are part of a single on-call rotation. The number of roster layers you have for escalations depends on your company’s standards, industry requirements, and the particular composition of your team. The most commonly used setup includes a primary and secondary on-call in which the role of the secondary is to step…

Running Terratest in CircleCI

How using Terratest in CircleCI with docker in docker.

New start in 2020

New start in 2020.