# Go at OSCON
20 Aug 2014
Tags: conference, oscon
Summary: What happens in Portland in July? [OSCON](http://www.oscon.com/oscon2014)! At this year's conference, Go was more present than ever before, with five talks, two workshops, a [Birds of a Feather](http://en.wikipedia.org/wiki/Birds_of_a_feather_(computing)) session, and a meetup.

Francesc Campoy

## Introduction

What happens in Portland in July? [OSCON](http://www.oscon.com/oscon2014)! At
this year's conference, Go was more present than ever before, with five talks,
two workshops, a
[Birds of a Feather](http://en.wikipedia.org/wiki/Birds_of_a_feather_(computing))
session, and a meetup.

## Talks

[Matt Stine](http://twitter.com/mstine) talked about his experience switching
from Java to Go with
[A recovering Java developer learns Go](http://www.slideshare.net/mstine/java-devlearnstogooscon)
while [Steve Francia](https://twitter.com/spf13) presented
[Painless Data Storage with MongoDB and Go](http://spf13.com/presentation/MongoDB-and-Go).
Steve also presented
[Go for Object Oriented Programmers](http://spf13.com/presentation/go-for-object-oriented-programmers),
where he explained how some object oriented concepts can be implemented in Go.

.image osconreport/talks.png _ 800

Finally, [Josh Bleecher Snyder](http://twitter.com/offbymany) talked about his
experience writing tools to work with Go source code in
[Gophers with hammers](https://talks.golang.org/2014/hammers.slide#1),
and [Francesc Campoy](http://twitter.com/francesc) talked about all the things
that could have gone wrong and what the Go team did to prevent them
[Inside the Go playground](https://talks.golang.org/2014/playground.slide).

## Workshops

At the beginning of OSCON's workshop day, Steve Francia presented how to build a
web application and a CLI tool during
[Getting started with Go](http://spf13.com/presentation/first-go-app) to a big
room full of Gophers.

.image osconreport/workshops.png _ 800

In the afternoon, [Chris McEniry](https://twitter.com/mmceniry) gave his
[Quick introduction to system tools programming with Go](http://cdn.oreillystatic.com/en/assets/1/event/115/A%20Quick%20Introduction%20to%20System%20Tools%20Programming%20with%20Go%20Presentation.pdf) where he went over some useful skills to
write system tools using Go and its standard library.

## Additional events

To take advantage of the increased Gopher population in Portland during OSCON, we
organized two extra events: the first [PDXGolang](https://twitter.com/pdxgolang)
meetup and a
[Birds of a Feather session](http://www.oscon.com/oscon2014/public/schedule/detail/37775).

.image osconreport/meetup.png _ 800

At the meetup Francesc Campoy talked about
[Go Best Practices](https://talks.golang.org/2013/bestpractices.slide) and
[Kelsey Hightower](https://twitter.com/kelseyhightower) gave a great
introduction to [Kubernetes](https://github.com/GoogleCloudPlatform/kubernetes),
a container management system for clusters written in Go by Google. If you live
in Portland, make sure you [join the group](http://meetup.com/pdx-go) and come
along to the next meeting.

The "Birds of a Feather" (or, more aptly, "Gophers of a Feather") was a lot of
fun for everyone involved. We hope to see more of you there next year.

## In conclusion

.image osconreport/random.png _ 800

Thanks to all the gophers that participated in OSCON. After the successes of
this year we look forward to more Go fun at OSCON 2015.
