Build & maintain complex distributed systems
October 1–2, 2017: Training
October 2–4, 2017: Tutorials & Conference
New York, NY

In-Person Training
Let’s Go! Using the Go programming language for system tasks

Michael Hausenblas (Red Hat)
Sunday, October 1 & Monday, October 2, 9:00am - 5:00pm
Location: Morgan Level: Beginner
See pricing & packages
Early Price ends August 17

This course will sell out—sign up today!

Participants should plan to attend both days of this 2-day training course. Training passes do not include access to tutorials on Monday.

On day 1 of this training you will learn Go from scratch and on the second day understand how to use it for system tasks such as batch file operations, container inspection or access control automation as well as apply the knowledge in your own project.

What you'll learn, and how you can apply it

Learn Go, understand when to use it (and when not) and being able to apply best practices for system tasks.

This training is for you because...

You are a sysadmin, DevOps engineer, or developer who manages infrastructure and want to have an effective and reliable tool at your disposal to automate parts of your daily work.


A basic familiarity with the command line is required, knowing a programming language is a plus.

Hardware and/or installation requirements:

You will need a laptop and having a GitHub account is beneficial but not strictly required.

In the past couple of years, Go has established itself as a popular language for systems programming, services, and tools. More and more people use Go nowadays for tasks that would traditionally have been solved using Python or Ruby. Many system’s tools, for example container technologies like Docker & Kubernetes, are also developed in Go.

Go produces statically linked binaries across the major operating systems (Linux, Windows, macOS) and platforms (x86, AMD, ARM, etc.) and comes with a powerful standard library providing you with everything you need, from networking to security to filesystem operations.

Day 1

The first day provides an introduction to the Go programming language and its ecosystem:

  • Why Go? History and philosophy of Go
  • Tooling (building, testing, dependency management)
  • Language features by example
  • Advanced Go programming (concurrency, databases, etc.)
  • Good practices (idiomatic Go, limitations)
  • Go and containers

Day 2

Part 1 – review of tools written in Go

During the first half day we carry out code reviews of a couple of tools written in Go. Each of the codebases we review provides a deep-dive into certain aspects of system tasks such as dealing with the filesystem, containers, cloud providers, and provisioning and provides concrete examples around error handling, logging, configuration management and CLI apps (how to implement commands, etc). The code reviews help you understand how to go about common tasks and also serve as applied best practices:

Note that it is not about the selected tools we review but about the patterns and packages used.

Part 2 – implement your own tool using Go

In the second half day you will implement your own systems tool in Go, choosing one of the following:

  • You re-implement one of the tools you’ve developed in another language (such as a bash scripts or Python, etc.)
  • You write a tool you will need in the near future from scratch
  • If you don’t have an existing tool you want to migrate or anything planned for the near future, I’ll provide you with suggestions of tools you can tackle

About your instructor

Photo of Michael Hausenblas

Michael is a Developer Advocate for OpenShift and Kubernetes at Red Hat where he helps appops to build and operate distributed services. He shares his experience with distributed systems and large-scale data processing through demos, blog posts and public speaking engagements and contributes to open source software such as OpenShift and Kubernetes. Prior to Red Hat, Michael was a Developer Advocate at Mesosphere, Chief Data Engineer at MapR Technologies, and before that he was a Research Fellow at the National University of Ireland, Galway where he researched into large-scale data integration and the Internet of Things and where he gathered experience in advocacy and standardization (World Wide Web Consortium, IETF).

Twitter for mhausenblas

Conference registration

Get the Platinum pass or the Training pass to add this course to your package. Early Price ends August 17.

Leave a Comment or Question

Help us make this conference the best it can be for you. Have questions you'd like this speaker to address? Suggestions for issues that deserve extra attention? Feedback that you'd like to share with the speaker and other attendees?

Join the conversation here (requires login)