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.
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.
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.
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.
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 journals, local sources, durable pages, and agent-assisted curation to keep a personal knowledge base useful without turning every note into permanent documentation.
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…
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.
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…
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.
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…
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…
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…
Building a nice terminal UI in Go with Bubble Tea
Bubble Tea - how to make better terminal UI
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…
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.
How to make W3C TraceContext work for your application in the Go Gin Framework
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.
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…
Most programming languages don't have basic settings for HTTP made to run in production.
Talk is about new Dagger Go SDK
Using Dagger.io Go SDK for Pipelines implementation.
Talk is about new Fuzzing function in Go 1.18
You may think that your dashboard is perfect but the next incident can completely break this perception.
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.
I'm using grafana for more than year and Jsonnet helps me make dashboards easy to maintain and this is my experience with it.
How to automate changes in README.md in personal repository in Github.
Talk is about Compliance as Code in general.
Talk is JAMStack and tools about them in 2019.
Talk is about TinyGo project and demo with Micro:Bit controller.
Talk is focused on Compliance as Code and Infrastructure as Code.
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 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…
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…
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…
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.…
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.…
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…
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…
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…
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 )…
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…
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…
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…
How using Terratest in CircleCI with docker in docker.
New start in 2020.