# Go will be at OSCON 2014
15 Jul 2014
Tags: conference, oscon
Summary: If you will be at OSCON 2014, July 20-29 in Portland, Oregon, be sure to check out these Go talks.

Francesc Campoy

##

[OSCON](http://www.oscon.com), the Open Source Convention, is taking place
from July 20th to the 29th in Portland, Oregon and Go will be central to many
talks. If you are attending make sure you add these to your personal schedule.

On Monday you'll have the chance to learn Go in these two tutorials:

  - [Getting Started with Go](http://www.oscon.com/oscon2014/public/schedule/detail/34395)
    by [Steve Francia](http://twitter.com/spf13) (MongoDB) at 9:00am on Monday, 07/21/2014

  - [A Quick Introduction to System Tools Programming with Go](http://www.oscon.com/oscon2014/public/schedule/detail/34267)
    by [Chris McEniry](http://twitter.com/macmceniry) (Sony Network Entertainment)
    at 1:30pm on Monday, 07/21/2014

During the rest of the week you can hear how different projects use Go:

  - [A Recovering Java Developer Learns to Go](http://www.oscon.com/oscon2014/public/schedule/detail/34371)
    by [Matt Stine](http://twitter.com/mstine) (Pivotal) at 1:40pm on Tuesday, 07/22/2014

  - [Painless Data Storage with MongoDB and Go](http://www.oscon.com/oscon2014/public/schedule/detail/34299)
    by [Steve Francia](http://twitter.com/spf13) (MongoDB) and [Gustavo Niemeyer](http://twitter.com/gniemeyer)
    (Canonical) at 1:40pm on Tuesday, 07/22/2014

  - [Gophers with Hammers: Fun with Parsing and Generating Go](http://www.oscon.com/oscon2014/public/schedule/detail/37795)
    by [Josh Bleecher Snyder](http://twitter.com/offbymany) (PayPal) at 2:30pm
    on Tuesday, 07/22/2014

  - [Go for Object Oriented Programmers (or OO Programming without Objects)](http://www.oscon.com/oscon2014/public/schedule/detail/34047)
    by [Steve Francia](http://twitter.com/spf13) (MongoDB) at 4:10pm on
    Wednesday, 07/23/2014

  - [Inside the Go Tour](http://www.oscon.com/oscon2014/public/schedule/detail/34509)
    by [Francesc Campoy Flores](http://twitter.com/francesc) (Google Inc.)
    at 11:50am on Thursday, 07/24/2014

And if you have any questions come to the
[Go office hours](http://www.oscon.com/oscon2014/public/schedule/detail/37075)
on Wednesday or come anytime by the Google booth.

See you at OSCON!
