GopherCon 2023
2023-09-26..2023-09-29
San Diego, United States
[GopherCon 2014, GopherCon 2019, GopherCon 2020, GopherCon 2021, GopherCon 2022, GopherCon 2023, GopherCon 2024, GopherCon 2025]
who it's for
Go developers, backend engineers, systems programmers, security engineers, site reliability engineers, library authors, engineering managers
topics
encoding/json v2 implementation; static call-graph analysis for supply chain; highly concurrent in-memory cache; idiomatic package and API design; game and embedded projects with TinyGo; type inference changes in Go 1.21; copying garbage collector with gaps; k-way merge using loser trees; structured logging for standard library; vulnerability and dependency management; terminal UIs with Bubble Tea; distributed systems built in Go
| title | author | length |
|---|---|---|
| Coming Soon to GopherCon 2023... Capture the Flag, One Byte at a Time! | Clint Kadera, Renee French | 03m |
A Fallout‑themed Capture the Flag competition runs at GopherCon Sept 25–28 in San Diego and centers on practical Go security puzzles: reverse engineering IoT… | ||
| The Future of JSON in Go | Joe Tsai | 43m |
A working V2 prototype reimplements encoding/json with a streaming json/text encoder and decoder, new variadic options to match V1 or opt into safer defaults… | ||
| Understanding Supply Chain Threats with Static Analysis | Jess McClintock | 17m |
A CLI and library called capslock runs call‑graph static analysis against Go code to map calls into standard‑library sinks and surface network access, file… | ||
| Building a Highly Concurrent Cache in Go: A Hitchhiker's Guide | Konrad Reiche | 40m |
Builds a Redis-fronting in-memory cache that replays 30‑minute production access logs (benchmarks pinned to 5,000 events per run) to compare eviction… | ||
| Idiomatic Go Tells a Story | Kaylyn Gibilterra | 21m |
A concrete practice for turning good Go into idiomatic Go: arrange packages as horizontal packages by placing type definitions next to their methods instead of… | ||
| From Zero to Hero: Launch Your Own Game in 45 Minutes | Ellery Addington-White | 27m |
Builds a working idle game called Feed the Gopher in Go, deployable to AWS App Runner, using Momento cache and Momento Topics for state and pub/sub. Implements… | ||
| Special When Lit: Using Go to Bring a Pinball Machine Back to Life! | Jeremy Fleitz | 31m |
Rebuilds a 1982 Mike Bossy pinball into a working machine by replacing the original MPU with a Raspberry Pi MPU replacement, using Arduino Nanos over USB for… | ||
| Everything You Always Wanted to Know About Type Inference | Robert Griesemer | 39m |
Explains how Go 1.21 improves type inference by reducing generic boilerplate and solving type equations via unification of type equations across multiple… | ||
| Balanced GC: A Copying Garbage Collector for Golang | Yifei Zhang | 30m |
Adds per-goroutine allocation buffers called gaps and uses bump allocation for no-scan objects ≤128 bytes, marking object starts with a bitmap and merging… | ||
| Reliably Absorbing a Go Release | Madhav Jivrajani | 26m |
Kubernetes describes concrete steps for absorbing Go 1.21: start testing at Go HEAD (some tests run on the dev branch), identify and fix failures early, ensure… | ||
| A Witch’s Guide to Go: 3 Charms to Enchant Your Software | Rebecca Bilbro | 17m |
Describes building Enen, a streaming event store with a custom Raft-replicated SQL-like DB that exposes deep behavior through a one-line Connect(DSN, readOnly)… | ||
| Blazing Fast Merge with Loser Trees | Bryan Boreham | 34m |
Implements a k‑way merge using a Loser Tree in Go, using generics to eliminate indirect calls and storing leaf values to avoid repeated sequence lookups… | ||
| Vulnerability Management for Go | Julie Qiu | 21m |
Go builds a vulnerability pipeline: a curated Go Vulnerability Database at vuln.go.dev, static analysis tool govulncheck, CI GitHub Action and VS Code… | ||
| Go Microservices for ML at the Edge | Samantha Coyle | 43m |
A Go microservice pipeline ingests microscope images on Windows OEM devices, sends jobs over MQTT to a Linux control plane for ML inference, and returns… | ||
| Go Changes | Russ Cox | 25m |
Go changes prioritize making Go better for software engineering at scale, not adding language whims. Decisions use surveys (6,000 responses), code sampling… | ||
| The Blueprints to Building Your Own Badass Community | Benjamin Bryant | 24m |
Restarted London Gophers scales from ~300 pre‑pandemic to ~100 attendees by simplifying events, using a one‑page host proposal, an application form plus… | ||
| Structured Logging for the Standard Library | Jonathan Amsterdam | 20m |
Go 1.21 adds slog, a structured-logging API with two built-in handlers (text Handler and json Handler), integer levels with info at zero and a dynamic… | ||
| Automatically Instrument Your Go Source Code with Orchestrion | Jon Bodner | 43m |
Datadog’s Orchestrion automatically inserts and removes OpenTelemetry or console tracing into Go source by parsing with go/ast & dst, matching functions, HTTP… | ||
| Clean Up Your GOOOP: How to Break OOP Muscle Memory | Dylan Bourque | 33m |
Argues that copying OO habits into Go produces “goop” with concrete examples: structs are not classes and embedding is not inheritance, which leads to… | ||
| High-Assurance Go Cryptography | Filippo Valsorda | 47m |
Go cryptography uses concrete artifacts: a Wycheproof JSON test corpus pulled via go mod, a test-only package that fetches and runs vectors in CI, and a… | ||
| Terminal UI Apps From the Ground Up with Bubble Tea | Andy Haskell | 43m |
Builds a terminal plant-watering app using Bubble Tea with an Elm-style model view update architecture and async commands, plus styling via lipgloss and a text… | ||
| Clean Up Your GOOOP: How to Break OOP Muscle Memory | Dylan Bourque | 33m |
Claims that copying class-based OOP into Go creates brittle “goop” backed by concrete examples: embedding vs inheritance breaks polymorphism (embedded field… | ||
| Build Your Own Distributed System Using Go | Philip O'Toole | 43m |
Builds a replicated Go key/value service by inserting a Raft layer between the HTTP handler and storage, using HashiCorp raft v1.5 (MIT) and example backends… | ||
| nothing matches | ||