GopherCon 2018 - Rethinking Classical Concurrency Patterns

Presenter: Bryan C. Mills Liveblogger: Dmitri Shuralyov In 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. Summary This talk will cover two principles related to the Go concurrency primitives (goroutines… Read more

GopherCon 2018 - Demystifying Binary Search Tree Algorithms

Presenter: Kaylyn Gibilterra Liveblogger: Geoffrey Gilmore Learning 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. Introduction Kaylyn started… Read more

GopherCon 2018 - The Importance of Beginners

Presenter: Natalie Pistunovich Liveblogger: Ryan Blunden Title Graphic: Amy Chen Summary Natalie 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 - Writing Accessible Go

Presenter: Julia Ferraioli Liveblogger: William Kennedy Title Graphic: Amy Chen Summary Julia 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… Read more

GopherCon 2018 - Adventures in Cgo Performance

Presenter: Mr. Sean T. Allen Liveblogger: Keegan Carruthers-Smith Covers 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… 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. Stack Memory & Goroutine… Read more

GopherCon 2018 - Becoming a Go Contributor

Presenter: Kevin Burke Liveblogger: Farhan Attamimi A guide to becoming a contributor to the Go project. Summary Kevin 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… Read more

GopherCon 2018 - C L Eye-Catching User Interfaces

Presenter: James Bowes Liveblogger: Ryan D This 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… Read more

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

Presenter: Deval Shah Liveblogger: Farhan Attamimi How Reddit built its ad-serving system using Go, and the lessons learned from the process. Summary The Reddit engineering team recently introduced Go into their stack to write a new ad-serving system to replace a third party system. Deval Shah… Read more

GopherCon 2018 - Go in Debian

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

GopherCon 2018 - Going Serverless

Presenter: Kelsey Hightower Liveblogger: Ryan Blunden Summary In 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 , @TheAmyCode Liveblogger: Larry Clapp Introduction to Finite State Machines (FSMs), touching on gRPC, and testing of the FSM. Summary Amy walks us through her usage of a Finite State Machine to implement automatic upgrades of clients running in a Kubernetes (k8s) cluster… Read more

GopherCon 2018 - How to Write a Parser in Go

Presenter: Sugu Sougoumarane Liveblogger: Nick Snyder Sugu 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. Summary goyacc is almost an exact translation of the… Read more

GopherCon 2018 - gRPC reflection and grpcurl

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

GopherCon 2018 - Micro-optimizing Go Code

Presenter: George Tankersley Liveblogger: Matt Jaffee Everyone 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? Summary In this tutorial session, George will optimize a hash function in pure Go, starting from… Read more

GopherCon 2018 - Implementing a Network Protocol in Go

Presenter: Matt Layher Liveblogger: Beyang Liu An 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. Intro The IPv6 Neighbor Discovery Protocol (NDP) is our focus… Read more

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

Presenter: Liz Rice Liveblogger: Keegan Carruthers-Smith Title graphic: Amy Chen A practical guide to what is happening under the covers when applications or users need to identify themselves, or need a secure channel for communications. Summary The motivation of the talk is to understand what is… Read more

GopherCon 2018 - An Over-Engineering Disaster with Macaroons

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

GopherCon 2018 - Asynchronous Networking Patterns

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

GopherCon 2018 - Allocator Wrestling

Presenter: Eben Freeman Liveblogger: Beyang Liu Summary A 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 free The garbage collector can stop… Read more

Gophercon 2018 - Computer Vision Using Go and OpenCV 3

Presenter: Ron Evans Liveblogger: @beyang Summary An 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… Read more

GopherCon 2018 - Go for Information Displays

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

GopherCon 2018 - Go says WAT?

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

GopherCon 2018 - How Do You Structure Your Go Apps?

Presenter: Kat Zień Liveblogger: Matt King (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 work best… Read more

GopherCon 2018 - Machine Learning in Go

Presenter: Francesc Campoy Flores Liveblogger: Steven Klassen We'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… Read more

GopherCon 2018 - Painting with Light

Presenter: Hunter Loftis Liveblogger: Farhan Attamimi Summary This 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… Read more

GopherCon 2018 - The Scheduler Saga

Presenter: Kavya Joshi Liveblogger: Keegan Carruthers-Smith The 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

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 . Go isn't a functional… 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. Ron… 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 . Go is a great language for writing network servers. Cindy's talk explains what under the hood when you call . Note: This… 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… 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: Aaron Schlesinger ( @arschles ) is a Microsoft Azure Gopher. He leads or contributes to development on much of the Go codebase in the Kubernetes, and… Read more

Fallacies Of Distributed Gomputing

Liveblog by Linda Xie ( @lindeexie ) Michael 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 distributed computing… Read more

Advanced Testing in Go

Liveblog by Beyang Liu ( @beyang ) Mitchell 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 has been… Read more

Evolutionary optimization

Liveblog by Emmanuel Odeke ( @odeke_et ) Background Peter 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 chronicles the… 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… Read more

Idiomatic Go

Liveblog by Renfred Harper ( @renfredxh ) The video for this talk has been posted here . Edward 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

Runtime Generated, Typesafe, and Declarative - Pick Any Three

Liveblog by Matt King About the speaker Jon 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 . Author Presentation 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

Understanding Channels

Liveblog by Jaana B. Dogan ( @rakyll ) About the speaker Kavya 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… Read more

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

Liveblog by Carlisia Pinto ( @carlisia ) About the speaker Waldemar @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

My Journey to Go

Liveblog by Kristie Howard ( @kristiehow ) In 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 becoming a… Read more

A Go Programmer’s Guide to Syscalls

Liveblog by Matt King Overview Even 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 syscalls are… 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… Read more

Building a High Performance Key/Value Store

Liveblog by Matt King Slides for this talk have been posted here . About The Speaker Marty Schoch is a Senior Software Engineer at Couchbase and the lead developer at Bleve , an open-source full-text search library for Go. Overview Marty 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 . Scott 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 ) Overview Talk 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 Go… Read more

Forward Compatible Go Code

Liveblog by Linda Xie ( @lindeexie ) Joe 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 all… 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

Go Reliability and Durability at Dropbox

Tammy 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 Go. Note… 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… Read more

Liveblog articles from GopherCon 2017

(See an overview of all GopherCon talks with links in this post). 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… 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 programs Ian Schenck , software engineer, Infrastructure at Oscar Insurance ([email protected]). "I am a SWE who ends up in SRE… Read more

Self Deploying Kubernetes Applications

Liveblog by Quinn Slack ( @sqs ) Kelsey 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: This… Read more

The Future of Go

Liveblog by Dmitri Shuralyov ( @shurcool ) Go history On 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… 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… Read more

Writing a Go Tool to Parse and Modify Struct Tags

Liveblog by Matt King Overview Struct 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 written… Read more

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

JP Robinson , principal engineer at the New York Times, has "drunk Peter's koolaid" with respect to Go kit. 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 services. About… 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

Peter 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, but… Read more