GopherCon 2018 - Rethinking Classical Concurrency Patterns

Presenter: Bryan C. MillsLiveblogger: Dmitri ShuralyovIn this talk, Bryan Mills from the Go team at Google invites us to rethink and reinvent some classical concurrency patterns in the context of Go.SummaryThis talk will cover two principles related to the Go concurrency primitives (goroutines and… Read more

GopherCon 2018 - The Importance of Beginners

Presenter: Natalie PistunovichLiveblogger: Ryan BlundenTitle Graphic: Amy ChenimageSummaryNatalie talks about the massive growth in the GopherCon community and the need to prepare for and embrace the huge amount of beginners that will become Gophers in 2018 and beyond.When Natalie first started… Read more

GopherCon 2018 - Demystifying Binary Search Tree Algorithms

Presenter: Kaylyn GibilterraLiveblogger: Geoffrey GilmoreLearning algorithms can be overwhelming and demoralizing, but it doesn't have to be. In this talk, Kaylyn explains binary search tree algorithms in a simple and straightforward manner with code examples in Go.IntroductionKaylyn started writing… Read more

GopherCon 2018 - Writing Accessible Go

Presenter: Julia FerraioliLiveblogger: William KennedyTitle Graphic: Amy ChenimageSummaryJulia spoke to the importance of writing code that was accessible to all developers. She shared the story of her disability and how it affects her ability to read and write code. She provided examples of how her… Read more

GopherCon 2018 - Adventures in Cgo Performance

Presenter: Mr. Sean T. AllenLiveblogger: Keegan Carruthers-SmithCovers hard-won knowledge about using cgo in performance sensitive code including: ways in which cgo makes interoperation with other languages difficult, how you can work around common sources of performance and scaling problems, and an… Read more

GopherCon 2018 - Go in Debian

Presenter: Michael Stapelberg, [email protected] Creator of the i3 Linux window managerLiveblogger: Larry ClappUsing Go in and with DebianSummaryDebian services and tools written in Go. Developing and packaging Go software for use in Debian. Upstream best practices.This is a broad overview… Read more

GopherCon 2018 - Going Serverless

Presenter: Kelsey HightowerLiveblogger: Ryan BlundenSummaryIn this talk, Kelsey demonstrated what a simple Serverless application looks like, highlighted some best practices and inspired Go developers who haven't experimented with Serverless yet to give it a try. While he doesn't suggest we all… Read more

GopherCon 2018 - gRPC, State Machines, and ... Testing?

Presenter: Amy Codes, @TheAmyCodeLiveblogger: Larry ClappIntroduction to Finite State Machines (FSMs), touching on gRPC, and testing of the FSM.SummaryAmy walks us through her usage of a Finite State Machine to implement automatic upgrades of clients running in a Kubernetes (k8s) cluster, also… Read more

GopherCon 2018 - How to Write a Parser in Go

Presenter: Sugu SougoumaraneLiveblogger: Nick SnyderSugu Sougoumarane is the co-creator of Vitess, which contains a SQL parser that is now used by many other projects. In this talk he demonstrates how to write a parser using goyacc.Summarygoyacc is almost an exact translation of the original yacc… Read more

GopherCon 2018 - Micro-optimizing Go Code

Presenter: George TankersleyLiveblogger: Matt JaffeeEveryone knows: if you need to go fast, bust out the assembly. But what if there’s better performance to be had just by writing Go more carefully?SummaryIn this tutorial session, George will optimize a hash function in pure Go, starting from a… Read more

GopherCon 2018 - The Go Programmer's Guide to Secure Connections

Presenter: Liz RiceLiveblogger: Keegan Carruthers-SmithTitle graphic: Amy ChenA practical guide to what is happening under the covers when applications or users need to identify themselves, or need a secure channel for communications.imageSummaryThe motivation of the talk is to understand what is… Read more

GopherCon 2018 - 5 Mistakes C/C++ Devs make writing Go

Nyah Check (@nyah_check, slides) is a software engineer at Altitude Networks.Nyah comes from a C/C++ background and subsequently wrote a lot of bad Go code early on. He hopes others can learn from his mistakes.He has classified his mistakes under 3 topics:Heap vs. StackMemory & Goroutine leaksError… Read more

GopherCon 2018 - Becoming a Go Contributor

Presenter: Kevin BurkeLiveblogger: Farhan AttamimiA guide to becoming a contributor to the Go project.SummaryKevin Burke talks us through his journey to becoming a contributor to Go. He encourages developers to start contributing with small changes to build trust and ownership, and gives tips on how… Read more

GopherCon 2018 - C L Eye-Catching User Interfaces

Presenter: James BowesLiveblogger: Ryan DThis blog was written by @ryan0x44 from Cloudflare. If you want to write Go and help build a better Internet, Cloudflare is hiring!James' tutorial session will teach you how to use the many features and techniques available for building interactive CLIs, from… Read more

GopherCon 2018 - gRPC reflection and grpcurl

Presenter: Joshua HumphriesLiveblogger: Alan Shrevegrpcurl: Dynamic CLI interface for grpc services via protobuf descriptors and grpc reflection.Summarygrpcurl is a CLI tool that can provide a human-friendly CLI experience to dynamically invoke grpc services. Built on top of protobuf descriptors and… Read more

GopherCon 2018 - From Prototype to Production: Lessons from Building and Scaling Reddit's Ad Serving Platform with Go

Presenter: Deval ShahLiveblogger: Farhan AttamimiHow Reddit built its ad-serving system using Go, and the lessons learned from the process.SummaryThe Reddit engineering team recently introduced Go into their stack to write a new ad-serving system to replace a third party system. Deval Shah talks us… Read more

GopherCon 2018 - Implementing a Network Protocol in Go

Presenter: Matt LayherLiveblogger: Beyang LiuAn very detailed walkthrough of implementing a networking protocol (NDP in IPv6) in Go, with many, many code snippets.Matt Layher (@mdlayher, talks) is an engineer at Digital Ocean.IntroThe IPv6 Neighbor Discovery Protocol (NDP) is our focus for todayIPv… Read more

GopherCon 2018 - Asynchronous Networking Patterns

Presenter: Filippo ValsordaLiveblogger: Nick SnyderFilippo Valsorda, a Cryptogopher on the Go Team at Google, demonstrates how to write a TCP network listener using package .Summarygvt is retired.You can build a network proxy using package net that is:About 100 lines of Go.As performant as Nginx… Read more

GopherCon 2018 - Go for Information Displays

Presenter: Anthony StarksLiveblogger: Alan BraithwaiteGo for "programming pictures" -- turning data into compelling displays and visualizations.SummaryGo, while typically used primarily for systems programming, is an excellent language for visualization tools given it's rich image processing… Read more

GopherCon 2018 - Machine Learning in Go

Presenter: Francesc Campoy FloresLiveblogger: Steven KlassenWe've all wondered how to use Machine Learning with Go, but what about turning the tables for once? What can Machine Learning do for Go? During this presentation, we will discover how different Machine Learning models can help us write… Read more

GopherCon 2018 - The Scheduler Saga

Presenter: Kavya JoshiLiveblogger: Keegan Carruthers-SmithThe Go scheduler is the behind-the-scenes magical machine that powers Go programs. It efficiently runs goroutines, and also coordinates network IO and memory management. This talk will explore the inner workings of the scheduler machinery… Read more

GopherCon 2018 - An Over-Engineering Disaster with Macaroons

Presenter: Tess RinearsonLiveblogger: Guillaume J. CharmesThis is a story about cool new technology, over-engineering, and coconut cookies.SummaryMacaroon is an exciting new technology that promises to solve the authentication/authorization problem.Tess Rinearson, VP of Engineering at Chain, walk us… Read more

GopherCon 2018 - How Do You Structure Your Go Apps?

Presenter: Kat ZieńLiveblogger: Matt Kingdltmtnluyaemt6p (Photo credit: arbourdx)How should I structure my Go code?” is probably one of the most commonly asked questions, by new and experienced programmers alike. There is almost always more than one answer and it can be tricky to decide what will… Read more

GopherCon 2018 - Go says WAT?

Presenter: Jon BodnerLiveblogger: Alan BernsteinDespite our smugness, Go has some weird corners where the "obvious" behavior is not the "actual" behavior.SummaryGo developers watch videos like Gary Bernhardt's Wat and feel smug. After all, Go is a typesafe language with no automatic type promotion… Read more

GopherCon 2018 - Painting with Light

Presenter: Hunter LoftisLiveblogger: Farhan AttamimiSummaryThis talk covers the history of path tracing, what basic path tracing is, and how to build a path tracer in Go. Specifically, it covers rendering images using path tracing in Go, explores tradeoffs between concurrency schemes for simulating… Read more

GopherCon 2018 - Allocator Wrestling

Presenter: Eben FreemanLiveblogger: Beyang LiuSummaryA whirlwind tour of the Go memory allocator and garbage collector, with tools and tips on how to optimize.The allocator and garbage collector are pretty ingenious!Single allocations are fast but not freeThe garbage collector can stop individual… Read more

Gophercon 2018 - Computer Vision Using Go and OpenCV 3

Presenter: Ron EvansLiveblogger: @beyangSummaryAn introduction to and tour of computer vision programs written in Go using GoCV––with code snippets and live demos! Ron Evans is the creator of open source robotics projects and, and the leader of The Hybrid Group, the "software… Read more

The Functional Design of Dep (and Package Managers in General)

Sam Boyer (@sdboyer) is a Site Reliability Engineer at VividCortex who, among other things, also works on the official dep dependency management tool. Beyond his work in the Go community, Sam helps coordinate package management improvement efforts at isn't a functional language… Read more

Preparing for the Next Wave

Go has enjoyed success as a language for writing services and command line applications. But that success has largely been contained to Open Source enthusiasts and startups. In this talk I’ll discuss the next wave of developers coming to Go, and what we need to do to be ready for them.Note: This… Read more

Debuggers from Scratch

I learned over time that it’s best to forget about how channels are structured and focus on how they behave. So now when it comes to channels, I think about one thing: signaling. A channel allows one goroutine to signal another goroutine about a particular event. Signaling is at the core of… Read more

Machine Learning and Go

Francesc de Campoy Flores (@francesc) is VP of Developer Relations at source{d}. Previously, he was a developer and advocate at Google for Go and Google Cloud. He also runs the popular video series #justforfunc.All the cool kids are doing machine learning, but they're doing it in Python. Can we… Read more

Go's Work Stealing Scheduler

Go scheduler’s job is to distribute runnable goroutines over multiple worker OS threads that runs on one or more processors. With its work stealing strategy and spinning threads, it does a lot to minimize context switches and aim better CPU utilization. This talk will a dive into the runtime… Read more

Thunder Talks

The thunder talks are the second round of lightning talks from many speakers.Note: This post was live-blogged at dotGo 2017. Let us know on Twitter (@srcgraph) if we missed anything. All content is from the talk; any mistakes or misrepresentations are our fault, not the speaker's.gocv.ioRon… Read more

Unmasking netpoll.go

Cindy Sridharan (@copyconstruct) is a software engineer at imgix working on APIs, infrastructure, and other backend systems in Go. She also blogs at is a great language for writing network servers. Cindy's talk explains what under the hood when you call .Note: This post… Read more

Lightning Talks

The lightning talks are the first round of lightning talks from many speakers.Note: This post was live-blogged at dotGo 2017. Let us know on Twitter (@srcgraph) if we missed anything. All content is from the talk; any mistakes or misrepresentations are our fault, not the speaker's.Reducing Go… Read more

Behaviors of Channels

I learned over time that it’s best to forget about how channels are structured and focus on how they behave. So now when it comes to channels, I think about one thing: signaling. A channel allows one goroutine to signal another goroutine about a particular event. Signaling is at the core of… Read more

The Art of Testing

Note: This post was live-blogged at dotGo 2017. Let us know on Twitter (@srcgraph) if we missed anything. All content is from the talk; any mistakes or misrepresentations are our fault, not the speaker's.Mat Ryer is talking about the art of testing. He contributes to several Go libraries, including… Read more

Go Lift

This talk is about how Category Theory can help you write better code, but without using the words "Category" or "Theory" (or monad or functor or any of the scary terminology). We'll look at how the idea behind "Errors are Values" from the Go blog can be applied to different kinds of programming… Read more

Simulating a Real-World System in Go

Note: This post was live-blogged at dotGo 2017. Let us know on Twitter (@srcgraph) if we missed anything. All content is from the talk; any mistakes or misrepresentations are our fault, not the speaker's.Slides for Sameer's talk can be found here:… Read more

Liveblogging dotGo 2017

We’re excited to be running the official liveblog for dotGo 2017 in Paris on Monday, November 6. With the help of volunteer Gophers at dotGo in Paris, we’ll be blogging concise technical summaries of all dotGo talks, so people from all around the world can follow along and learn. Liveblogging… Read more

Functional Programming in Go

Liveblog by Renfred Harper (@renfredxh)Editor's note: This talk makes frequent reference to this repository: Schlesinger (@arschles) is a Microsoft Azure Gopher. He leads or contributes to development on much of the Go codebase in the Kubernetes, and SIG… Read more

Fallacies Of Distributed Gomputing

Liveblog by Linda Xie (@lindeexie)screenshot-20 2017-07-14Michael Hausenblas is a developer advocate for OpenShift and Kubernetes Hat Red Hat. His background is in large-scale data processing and container orchestration. He also contributes to open source software, mainly using Go.Fallacies of… Read more

Evolutionary optimization

Liveblog by Emmanuel Odeke (@odeke_et)Selection 012BackgroundPeter was at a Prometheus meetup in San Francisco and he lamented on the lack of logging. That lamentation made him wonder why there wasn't a Prometheus buffer log, so he decided to take on the challenge, why not?In this talk, he… Read more

Go at the DARPA Cyber Grand Challenge

Liveblog by Beyang Liu (@beyang)Slides for this talk have been posted here.Will Hawkins, graduate student at the University of Virginia. He's much more of a C/C++ programmer than a Go programmer. He takes Dave Cheney's pop quizzes about Go on Twitter very seriously.What is the DARPA Cyber Grand… Read more

My Journey to Go

Liveblog by Kristie Howard (@kristiehow)ashley-speakerIn an inspiring and thoughtful close to Friday's opening keynote, Ashley McNamara explained her journey to Go - and what you can do to get involved in the Golang community. A self-proclaimed "accidental gopher", Ashley detailed her path to… Read more

Understanding Channels

Liveblog by Jaana B. Dogan (@rakyll)About the speakerKavya writes Go for a living at a start-up in San Francisco. She's primarily a backend/ systems developer, but has of late been dabbling in firmware too. Her favorite aspects of being a programmer are reasoning about systems at scale, and delving… Read more

Writing Network Clients in Go: The Design and Implementation of the NATS Client

Liveblog by Carlisia Pinto (@carlisia)waldemarAbout the speakerWaldemar @wallyqs is a Senior Software Engineer at Apcera, where he develops the Apcera Trusted Platform and is part of the NATS team. Previously, he formed part of the PaaS team at Rakuten in Tokyo which was one of the early adopters of… Read more

Advanced Testing in Go

Liveblog by Beyang Liu (@beyang)Selection 012Mitchell Hashimoto is the founder of HashiCorp and creator of popular DevOps tools such as Vagrant, Packer, Terraform, Consul, Vault, and more. Mitchell is an O'Reilly author and one of the top GitHub users by followers, activity, and contributions. He… Read more

Runtime Generated, Typesafe, and Declarative - Pick Any Three

Liveblog by Matt KingAbout the speakerJon Bodner is part of the Technology Fellows Program at Capital One, currently working on a fork of the LGTM project with the hopes of open sourcing it soon. His team is helping to transform Capital One through introduction and integration of new technologies… Read more

The New Era of Go Package Management

Liveblog by Alan Shreve (@inconshreveable)Update: Slides for this talk have been posted here.Boyer-1AuthorPresentation by Sam Boyer @sdboyer.Sam fell into software engineering by accident, but decided to stick around. He loves complex, ecosystem-class problems, cares deeply about building healhty… Read more

Idiomatic Go

Liveblog by Renfred Harper (@renfredxh)The video for this talk has been posted here.IMG 9383Edward Muller @freeformz is a software engineer @Heroku, where he has worked on databases, infrastructure, metrics and logs before becoming the Go language owner. In that capacity he's seen a lot of Go code… Read more

A Go Programmer’s Guide to Syscalls

Liveblog by Matt KingIMG 4097.JPGOverviewEven if you’ve never used Go’s syscall package - in fact even if you’ve only ever written “Hello, world” - you have definitely used syscalls. They provide the interface between your code and the operating system.Liz goes under the hood to explore what… Read more

Building a High Performance Key/Value Store

Liveblog by Matt KingSelection 012Slides for this talk have been posted here.About The SpeakerMarty Schoch is a Senior Software Engineer at Couchbase and the lead developer at Bleve, an open-source full-text search library for Go.OverviewMarty explores the internals of a high-performance key/value… Read more

Creating a Custom Serialization Format

Liveblog by Renfred Harper (@renfredxh)Update: slides for this talk have been posted here.DEogyASVoAEn0jjScott Mansfield (@sgmansfield) is a Senior Software Engineer at Netflix. He works on EVCache, a high-performance, low latency persistence system. He is the primary author of Rend, an open-source… Read more

Encrypting the Internet with Go - Tutorial

Liveblog by Carlisia Pinto (@carlisia)filippoOverviewTalk by Filippo Valsorda. Starting at the beginning of this year, a lot of your internet traffic probably is going through Go. That is because Cloudflare delivers content for a great number of websites, and they have have build their TLS 1.3 using… Read more

Forward Compatible Go Code

Liveblog by Linda Xie (@lindeexie)Selection 012Joe Tsai is a Software Engineer on Google's Go team. He is a regular contributor to the Go standard library and other open source projects.Gophers often use "Go 1 compatibility" as a magic phrase to indicate that all present Go1 code will always work on… Read more

Go Reliability and Durability at Dropbox

Selection 012Tammy Butow (@tammybutow) is an Engineering Manager in Developer Infrastructure at Dropbox. Tammy manages code workflows—the entire experience of using Go at Dropbox, from coding to shipping. She talked at GopherCon 2017 about how Dropbox engineers build and run large-scale services in… Read more

Liveblog articles from GopherCon 2017

(See an overview of all GopherCon talks with links in this post).GopherCon bannerWe’re excited to be the official liveblogging partner for GopherCon 2017!That’s right — we’ll be writing up concise technical summaries of as many of the amazing talks by Go experts this year as we can. For folks tuning… Read more

Self Deploying Kubernetes Applications

Liveblog by Quinn Slack (@sqs)Selection 012Kelsey Hightower (@kelseyhightower) is a technologist and Googler who regularly comes up with refreshing new ideas for using Go and deploying software. We live-blogged his talk at GopherCon 2017 about self-deploying Go applications using Kubernetes.Note… Read more

An Introduction to go tool trace

Liveblog by Beyang Liu (@beyang)Slides for this talk are available here.Rhys Hiltner, software engineer at Twitch, works on improving developer experience there. He is the author of critical parts of the Twitch chat server (which he wrote in Go) and works on controlling the latency introduced by the… Read more

Generating Better Machine Code with SSA

Liveblog by Beyang Liu (@beyang)Keith Randall (GitHub) is a principal software engineer at Google and works on the Go compiler. Last year he gave a talk on high-frequency trading with Go. Previously, he was a research scientist at Compaq's System Research Center (SRC) and a student of the MIT… Read more

Operability in Go

Liveblog by Beyang Liu (@beyang)Update: slides for this talk have been posted here, and the video for this talk has been posted here.Improving operations in Go programsIan Schenck, software engineer, Infrastructure at Oscar Insurance ([email protected]). "I am a SWE who ends up in SRE… Read more

Valuable Lessons in Over-Engineering the Core of Kubernetes kops, Kris Nova

This post was originally written as liveblog coverage of GopherCon 2017 by @beyang. It has since been updated with the help of the speaker to include more detailed coverage of the technical details of the talk. Slides for this talk are available here.Kris Nova, of Microsoft, shares lessons on the… Read more

Writing a Go Tool to Parse and Modify Struct Tags

Liveblog by Matt KingIMG 4098.JPGOverviewStruct field tags are an important part of encode/decode types, especially when using packages such as encoding/json. However, modifying tags is repetitive, cumbersome and open to human errors. We can make it easy to modify tags with an automated tool that is… Read more

gRPC in Production

Liveblog by Beyang Liu (@beyang)Alan Shreve is an hacker, entrepreneur and creator of ngrok is the best way to connect expose services behind a NAT or firewall to the internet for demos, webhook development and IoT connectivity. Today, he's giving us a whirlwind tour of gRPC and how to… Read more

The Future of Go

Liveblog by Dmitri Shuralyov (@shurcool)coxGo historyOn September 25, 2007, together with Rob Pike, they decided on the name. Go.On November 10, 2009, Go was open sourced.Go 1, the first stable release, was released on March 28, 2012.Before Go 1, Go was broken every week. Programs had to be updated… Read more

JP Robinson of NYTimes on Go kit, Gizmo, and Marvin

jp robinsonJP Robinson, principal engineer at the New York Times, has "drunk Peter's koolaid" with respect to Go adapts Go kit for use inside a production ecosystem with a bunch of existing legacy services. The NYTimes uses it across almost all their production Go… Read more

Liveblogging GopherCon 2017

We’re excited to be the official liveblogging partner for GopherCon 2017!That’s right — we’ll be writing up concise technical summaries of as many of the amazing talks by Go experts this year as we can. For folks tuning in from home, the liveblog will be a great way to stay on top of conference… Read more

Peter Bourgon on the history of Go kit and what's next

bourgonPeter Bourgon is the creator of Go kit.Strong majority of audience here has heard of Go kit.What is Go kit?Go kit is a toolkit for microservices. In the early days, that meant something very specific at SoundCloud (where Peter worked at the time). They were using Finagle for microservices… Read more