Two recent Go talks
2 Jan 2013
Tags: talk, video, ethos

Andrew Gerrand

* Introduction

Late last year I wrote a couple of Go talks and presented them at [[http://thestrangeloop.com/][Strange Loop]], [[http://oredev.com][Øredev]], and various other venues. The talks are designed to give insight into the practice of Go programming, each describing the construction of a real program and demonstrating the power and depth of the Go language and its libraries and tools.

The following videos are, in my opinion, the best recordings of these talks.

* Go: a simple programming environment

Go is a general-purpose language that bridges the gap between efficient statically typed languages and productive dynamic language. But it’s not just the language that makes Go special – Go has broad and consistent standard libraries and powerful but simple tools.

This talk gives an introduction to Go, followed by a tour of some real programs that demonstrate the power, scope, and simplicity of the Go programming environment.

.iframe //player.vimeo.com/video/53221558?badge=0 281 500

See the [[https://talks.golang.org/2012/simple.slide][slide deck]] (use the left and right arrows to navigate).

* Go: code that grows with grace

One of Go's key design goals is code adaptability; that it should be easy to take a simple design and build upon it in a clean and natural way. In this talk I describe a simple "chat roulette" server that matches pairs of incoming TCP connections, and then use Go's concurrency mechanisms, interfaces, and standard library to extend it with a web interface and other features. While the function of the program changes dramatically, Go's flexibility preserves the original design as it grows.

.iframe //player.vimeo.com/video/53221560?badge=0 281 500

See the [[https://talks.golang.org/2012/chat.slide][slide deck]] (use the left and right arrows to navigate).
