Go at Google I/O and Gopher SummerFest
6 Oct 2014
Tags: conference, io, report

Francesc Campoy

* Introduction

The week of June 23rd was a good week for gophers in San Francisco. Go was a big
part of [[https://www.google.com/events/io][Google I/O]] on Wednesday and
Thursday, and on Monday we took advantage of the large gopher population to run
the [[http://www.meetup.com/golangsf/events/170421402/][Go SummerFest]], a
special instance of the [[http://www.meetup.com/golangsf][GoSF]] meetup. This
blog post is a recap of both events.

* Gopher SummerFest

.image io2014/summerfest.jpg _ 800

On the Monday, more than 200 gophers gathered at the Google office in San
Francisco to hear a series of talks:

- The State of Go, ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVQm9tdncxWnJGUTQ/edit][slides]] and [[http://www.hakkalabs.co/articles/state-go][video]]) by Andrew Gerrand.
- I was wrong, again! ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVTTUwS25qaFlzMGs/edit][slides]] and [[http://www.hakkalabs.co/articles/why-we-use-go][video]]), by Derek Collison.
- Go at Splice ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVZklnNnJITlhSbXc/edit][slides]]), by Matt Aimonetti
- Quick testing with quick ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVVElmOHpwamp4aTA/edit][slides]]), by Evan Shaw
- Something about Go (no slides), by Blake Mizerany.

More comments and pictures from the event are available on the
[[http://www.meetup.com/golangsf/events/170421402/][meetup event page]].

* Go at Google I/O

On the Wednesday and Thursday, Go was at Google I/O in two different
formats: the Go booth in the sandbox area and the Go code labs available in the
code lab area and all around the world through
[[https://www.google.com/events/io/io-extended][I/O Extended]].

** The Go booth

.image io2014/booth.jpg _ 800

The Go booth was part of the Developer Sandbox area.

For the two days of the conference, some gophers from Google and other
companies gave a series of talks and demonstrations. The talks were not
recorded, but the slides and some screencasts and blog posts will be shared
soon.

- Organizing Go Code, by David Crawshaw. ([[https://talks.golang.org/2014/organizeio.slide#1][slides]])
- Testing Techniques, by Andrew Gerrand. ([[https://www.youtube.com/watch?v=ndmB0bj7eyw][video]] and [[https://talks.golang.org/2014/testing.slide#1][slides]])
- Go for Java Developers, by Francesc Campoy. ([[https://talks.golang.org/2014/go4java.slide#1][slides]])
- Camlistore: Android, ARM, App Engine, Everywhere, by Brad Fitzpatrick. ([[https://talks.golang.org/2014/camlistore.slide#1][slides]])
- Go Compilation Complexities, by Ian Lance Taylor. ([[https://talks.golang.org/2014/compiling.slide#1][slides]])
- SourceGraph: a Code Search Engine in Go, by Quinn Slack. ([[https://youtu.be/-DpKaoPz8l8][video]] and [[https://go-talks.appspot.com/github.com/sourcegraph/talks/google-io-2014/gio2014.slide#1][slides]])


We also organized Q&A sessions and lightning talks by members of the Go
community:

- [[https://twitter.com/bradrydzewski][Brad Rydzewski]] talked about his project [[https://drone.io/][drone.io]].
- [[https://twitter.com/barakmich][Barak Michener]] presented [[https://github.com/google/cayley][Cayley]], an open source graph database.
- [[https://twitter.com/mattetti][Matt Aimonetti]] discussed how Go is used at [[https://splice.com/][Splice]].
- [[https://twitter.com/ssougou][Sugu Sougoumarane]] talked about how [[https://github.com/youtube/vitess][vitess]] solved scalability problems at YouTube. ([[https://youtu.be/midJ6b1LkA0][video]])

** The Go code lab

This year attendees of Google I/O had a code lab area with self-service
computers where they could sit and learn Go. The code labs were also available
to anyone through the Google I/O extended brand. You can try it yourself at
[[https://io2014codelabs.appspot.com/][io2014codelabs.appspot.com]].

.image io2014/collage.jpg _ 800

* Conclusion

Thanks to the organizers, speakers, and attendees who helped make these events a
great success. See you next year. (Or at [[http://dotgo.eu][dotGo]] this week!)