# Go talks at FOSDEM 2014
24 Feb 2014
Tags: fosdem, youtube, talk
Summary: At [FOSDEM](http://fosdem.org/) on the 2nd of February 2014 members of the Go community presented a series of talks in the Go Devroom. The day was a huge success, with 13 great talks presented to a consistently jam-packed room.

Andrew Gerrand

## Introduction

At [FOSDEM](http://fosdem.org/) on the 2nd of February 2014 members of the Go
community presented a series of talks in the Go Devroom. The day was a huge
success, with 13 great talks presented to a consistently jam-packed room.

Video recordings of the talks are now available, and a selection of these
videos are presented below.

The complete series of talks is available
[as a YouTube playlist](http://www.youtube.com/playlist?list=PLtLJO5JKE5YDKG4WcaNts3IVZqhDmmuBH).
(You can also get them directly at the
[FOSDEM video archive](http://video.fosdem.org/2014/K4601/Sunday/).)

## Scaling with Go: YouTube's Vitess

Google Engineer Sugu Sougoumarane described how he and his
team built [Vitess](https://github.com/youtube/vitess) in Go to help scale
[YouTube](https://youtube.com).

Vitess is a set of servers and tools primarily developed in Go.
It helps scale MySQL databases for the web, and is currently used as a
fundamental component of YouTube's MySQL infrastructure.

The talk covers some history about how and why the team chose Go, and how it
paid off.
Sugu also talks abou tips and techniques used to scale Vitess using Go.

.iframe //www.youtube.com/embed/qATTTSg6zXk 310 550

The slides for the talk are [available here](https://github.com/youtube/vitess/blob/master/doc/Vitess2014.pdf?raw=true).

## Camlistore

[Camlistore](http://camlistore.org/) is designed to be "your personal storage
system for life, putting you in control, and designed to last." It's open
source, under nearly 4 years of active development, and extremely flexible.  In
this talk, Brad Fitzpatrick and Mathieu Lonjaret explain why they built it,
what it does, and talk about its design.

.iframe //www.youtube.com/embed/yvjeIZgykiA 310 550

## Write your own Go compiler

Elliot Stoneham explains the potential for Go as a portable language and
reviews the Go tools that make that such an exciting possibility.

He said: "Based on my experiences writing an experimental Go to Haxe
translator, I'll talk about the practical issues of code generation and runtime
emulation required. I'll compare some of my design decisions with those of two
other Go compiler/translators that build on the go.tools library. My aim is to
encourage you to try one of these new 'mutant' Go compilers. I hope some of you
will be inspired to contribute to one of them or even to write a new one of
your own."

.iframe //www.youtube.com/embed/Qe8Dq7V3hXY 310 550

## More

There were many more great talks, so please check out the complete series
[as a YouTube playlist](http://www.youtube.com/playlist?list=PLtLJO5JKE5YDKG4WcaNts3IVZqhDmmuBH).
In particular, the [lightning talks](http://www.youtube.com/watch?v=cwpI5ONWGxc&list=PLtLJO5JKE5YDKG4WcaNts3IVZqhDmmuBH&index=7) were a lot of fun.

I would like to give my personal thanks to the excellent speakers, Mathieu
Lonjaret for managing the video gear, and to the FOSDEM staff for making all
this possible.
