Tuesday, May 19th

  • Intro to Go Workshop
    9:00 AM - 1:00 PM EST (4 hours)

    This course is tailored to developers learning Go for the first time or having less than one year of Go development experience. This workshop will cover practical, daily Go fundamentals. Starting with the language fundamentals, students will move into interfaces and how they lend to embedding and composition in Go. We will finish up with an overview of concurrency in Go.

  • Mastering Serialization in Go
    9:00 AM - 1:00 PM EST (4 hours)

    At the 'edges' of your program (e.g. when interacting with other services) you will use serialization to send and receive data. Working efficiently with serialization will make your interfaces more flexible, will save you money on CPU & bandwidth and free you to focus on writing business value code.

  • Intro to Testing in Go Workshop
    2:00 PM - 6:00 PM EST (4 hours)

    Whether you are just getting started in Go or have been writing Go code for a couple years, this class will make sure you have what you need to write simple, quick, robust tests. We will start with the basics and introduce table driven tests. Then we'll work through advanced concepts such as testing asynchronous code as well as mocking and injecting code. We’ll finish up with example tests and code coverage. We believe in a hands-on approach to learning, so be ready to write a lot of tests!

Wednesday, May 20th

  • Infrastructure for ML Applications
    9:00 AM - 1:00 PM EST (4 hours)

    At the heart of Machine Learning is the model’s code, but it only accounts for a fraction of the overall code of a production system and the rest is the infrastructure needed to power and utilize it. In this workshop, we will focus on the infrastructure of a Machine Learning application written in Go and integrate the systems needed to deploy a ML model at scale.

  • Benchmarking, Profiling, and Optimizing Go Workshop
    2:00 PM - 6:00 PM EST (4 hours)

    This course was designed to take experienced Go developers and walk them through how to use all the Go tooling to make your code perform better. We will start with a complete look at benchmarking from start to finish. Then a walk-through of the profiling tools will be presented. Students will finish up by learning about common optimizations in Go. After learning about these optimizations, you will be able to apply this knowledge to your own code to identify performance issues.

Thursday, May 21st

  • 8:00 AM- 9:00 AM EST (1 hour)
    Pre-social

    Join the slack channel and get ready for the talks to begin!

  • 9:00 AM- 9:10 AM EST (10 min)
    Welcome Gophers!

    Join your Emcee's Mark Bates and Mat Ryer as they kick off todays talks.

  • 9:10 AM- 9:35 AM EST (25 min)

    Opening Keynote

    Dave Cheney
  • 9:40 AM- 10:05 AM EST (25min)

    Go-Swagger in production: wins and pitfalls

    Ilya Kaznacheev

    Teamwork is a big deal. To simplify it we use swagger as a description of our backend’s REST API. So front-end and back-end can always be synchronized. We also use go-swagger to generate the API-related handlers and structures in Go. It saves a lot of time by reducing the amount of hand-written boilerplate code. But go-swagger has its own character. It tells us what to do instead of listening to our orders. But we learned to work it out, and I’ll tell you how.

  • 10:05 AM- 10:50 AM EST ( 45 Min )
    Morning Break
  • 10:50 AM- 11:15 AM EST ( 25 Min )

    Crypto Fails and How to Tackle Them in Go

    Anna-Katharina Wickert

    With most of our daily life being digital, secure communication is gaining in importance. However, recent studies have shown that 95% of Android apps have an insecure solution. But wait, the studies are for Java and Go is doing a better job, right? Yes and No. Let’s understand it and do it securely.

  • 11:20 AM- 11:45 AM EST ( 25 Min )

    Go routines and thread safe data structures

    Eleni Fragkiadaki

    Go routines are a powerful tool that can be used to make code run faster. But is using them always safe or can they create hard to find, hard to reproduce race conditions? In this talk we cover go routines, wait groups and locks in order to create thread safe data structures for our applications.

  • 11:55 AM- 12:40 PM EST ( 45 Min )

    Building APIs with Golang

    Mauricio De La Quintana Illanes

    In the data revolution’s age APIs are growing in importance as bridges for the information. Golang as a distributed oriented language offers many advantages and a rich suite of tools to make highly proficient scalable API solutions. In this talk, we will go through over critical points of our API.

  • 12:40 PM- 1:40 PM EST ( 1 Hour )
    Lunch
  • 1:40 PM- 2:20 PM EST ( 40 Min )

    Live fireside chat with the Go Team

    Rebecca Stambler, Julie Qiu, Ian Lance Taylor, Steve Francia, Russ Cox, Carmen Andoh

    Join us live for a fireside chat with Go Team members moderated by Emcees Mat Ryer and Mark Bates.

  • 2:25 PM- 2:50 PM EST ( 25 Min )

    Continuous profiling Go application

    Gianluca Arbezzano

    I use profiles to better describe post mortems, to enrich observability and monitoring signals with concrete information from the binary itself. They are the perfect bridge between ops and developers when somebody reaches out to me asking why this application eats all that memory I can translate that to a function that I can check out in my editor. I find myself looking for outages that happened in the past because cloud providers and Kubernetes increased my resiliency budget the application gets restarted when it reaches a certain threshold and the system keeps running, but that leak is still a problem that as to be fixed. Having profiles well organized and easy to retrieve is a valuable source of information and you never know when you will need them. That's why continuous profiling is important today more than ever. I use Profefe to collect and store profiles from all my applications continuously. It is an open-source project that exposes a friendly API and an interface to concrete storage of your preference like badger, S3, Minio, and counting. I will describe to you how to project works, how I use it with Kubernetes, and how I analyze the collected profiles.

  • 3:00 PM- 3:25 PM EST ( 25 Min )

    Intro to AI for software engineers Using go-learn

    Miriah Peterson

    AI is a 2019 buzzword. There is an ever growing need for the Software Engineer to understand now these models work. This talk I explains AI/ML basics in the context of Go dev. It is a hands-on demo using the go-learn library to explain of classing ML techniques.

  • 3:25 PM- 4:10 PM EST ( 45 Min )
    Afternoon Break
  • 4:15 PM- 4:50 PM EST ( 35 Min )

    Closing Keynote

    Johnny Boursiquot
  • 4:50 PM- 5:00 PM EST ( 10 Min )
    Wrap-up

    Emcees Mat Ryer and Mark Bates will close down the conference with final comments.

Buy Now! $49

Includes admission for all talks, real time discussions, and early access to all recorded videos. View the agenda.

Buy Now! $199

At the heart of Machine Learning is the model’s code, but it only accounts for a fraction of the overall code of a production system and the rest is the infrastructure needed to power and utilize it. In this workshop, we will focus on the infrastructure of a Machine Learning application written in Go and integrate the systems needed to deploy a ML model at scale.

Buy Now! $199

At the 'edges' of your program (e.g. when interacting with other services) you will use serialization to send and receive data. Working efficiently with serialization will make your interfaces more flexible, will save you money on CPU & bandwidth and free you to focus on writing business value code.

Buy Now! $199

Whether you are just getting started in Go or have been writing Go code for a couple years, this class will make sure you have what you need to write simple, quick, robust tests. We will start with the basics and introduce table driven tests. Then we'll work through advanced concepts such as testing asynchronous code as well as mocking and injecting code. We’ll finish up with example tests and code coverage. We believe in a hands-on approach to learning, so be ready to write a lot of tests!

Buy Now! $199

This course is tailored to developers learning Go for the first time or having less than one year of Go development experience. This workshop will cover practical, daily Go fundamentals. Starting with the language fundamentals, students will move into interfaces and how they lend to embedding and composition in Go. We will finish up with an overview of concurrency in Go.

Buy Now! $199

This course was designed to take experienced Go developers and walk them through how to use all the Go tooling to make your code perform better. We will start with a complete look at benchmarking from start to finish. Then a walk-through of the profiling tools will be presented. Students will finish up by learning about common optimizations in Go. After learning about these optimizations, you will be able to apply this knowledge to your own code to identify performance issues.