# Two recent Go talks
2 Jan 2013
Tags: talk, video, ethos
Summary: Late last year I wrote a couple of Go talks and presented them at [Strange Loop](http://thestrangeloop.com/), [Øredev](http://oredev.com), 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.

Andrew Gerrand

## Introduction

Late last year I wrote a couple of Go talks and presented them at [Strange Loop](http://thestrangeloop.com/),
[Øredev](http://oredev.com), 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 [slide deck](https://talks.golang.org/2012/simple.slide) (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 [slide deck](https://talks.golang.org/2012/chat.slide) (use the left and right arrows to navigate).
