# Go Conferences and Major Events


## Upcoming

Please keep all items in chronological order.


| Name |  Date | Location | Website |
|-------|-----------|----------|------------|
| GopherCon India 2017 | 2017-02-24-25 | Pune, India | http://www.gophercon.in/ |
| GopherChina 2017 | 2017-04-15-16 | Shanghai | http://www.bagevent.com/event/357764 |
| GopherCon Singapore 2017 | 2017-05-25-26 | Singapore | http://gophercon.sg |
| GopherCon Denver | 2017-07-12-15 | Denver, CO | http://gophercon.com |

## Archives

Please keep all items in reverse chronological order (most recent first)

| Name | Date | Location | Talk, Video Archives |
|------|------------|----------|----------------|
| Go Devroom FOSDEM | 2017-02-05 |Brussels, Belgium | https://fosdem.org/2017/schedule/track/go/ |
| GoLab | 2017-01-20-21 | Florence, Italy | http://golab.io |
| GothamGo | 2016-11-18 | New York, USA | http://gothamgo.com/ |
|GopherCon Brasil | 2016-11-04-05 | Florianopolis, Brazil | https://2016.gopherconbr.org/en/ |
| dotGo | 2016-10-10 | Paris, France | http://2016.dotgo.eu |
| Golang UK | 2016-08-18 | London, UK | http://golanguk.com |
| GopherCon Denver | 2016-07-11 | Denver, CO | http://gophercon.com |
| Gopherfest | 2016-05-16 | San Francisco, USA | http://www.gopherfest.org/ |
| GoCon Japan | 2016-04-23 | Tokyo, Japan | http://gocon.connpass.com/event/27521/ |
| Gopher China | 2016-04-16 | Beijing, China | http://www.gopherchina.org |
| GopherCon Dubai | 2016-02-23 | Dubai, UAE | http://www.gophercon.ae |
| GopherCon India | 2016-02-19 | Bengaluru, India | [videos](https://www.youtube.com/watch?v=4Dr8FXs9aJM&list=PLxFC1MYuNgJT_ynbXGuYAZbSnUnq-6VQA) |
| FOSDEM | 2016-01-30 | Brussels, Belgium | https://video.fosdem.org/2016/h1302/ |
| Gopher Gala | 2016-01-22 | Earth |  |
| | **2015** | | |
| GoLab | 2015-12-15 | Florence, Italy | http://golab.io |
| GoCon Tokyo | 2015-12-06 | Tokyo, Japan |  |
| GopherFest SV | 2015-11-18 | Facebook, Menlo Park, CA | [videos](https://www.youtube.com/playlist?list=PLtLJO5JKE5YALxdnGgvgwxTSmANOvyAo9) |
| dotGo    | 2015-11-09 | Paris, France | [videos](https://www.youtube.com/playlist?list=PLMWwKlp9xoYX4mlNDdkCOfsUG_40WCMCX) |
| GothamGo | 2015-10-02 | NY, NY | [videos](https://www.youtube.com/playlist?list=PLeGxIOPLk9ELh9tsPZMzau6CzMjfMzp9-) |
| Yapcasia | 2015-08-22 | Tokyo, JP | [bradfitz](http://yapcasia.org/2015/talk/show/6bde6c69-187a-11e5-aca1-525412004261) |
| GolangUK | 2015-08-21 | London, UK | [videos](https://www.youtube.com/playlist?list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd) |
| GopherCon Denver | 2015-07-07 | Denver, CO | [keynotes](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBf-_z-gHCOR2N156Nw930Hm), [lightning](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBeHqlHM8DmvS8axgbrpvF9b) |
| GoCon Tokyo | 2015-06-20 | Tokyo, Japan ||
| GopherfestSF | 2015-06-25 | San Francisco, CA | [videos](https://www.youtube.com/playlist?list=PLtLJO5JKE5YB55ExLApKU0S8_eN5eaGkU) |
| GopherCon India | 2015-03-17 | Bengaluru, India | [videos](https://www.youtube.com/playlist?list=PLxFC1MYuNgJTY3uQ5Ja4F5Sz305nnrBOq) |
| Go Devroom FOSDEM | 2015-03-04 | Brussels, Belgium | [videos](https://www.youtube.com/playlist?list=PLtLJO5JKE5YDK74RZm67xfwaDgeCj7oqb) |
| Gopher China | 2015-04-25 | Shanghai, China | |
| London Go Gathering | 2015-02-03 | London, UK | [videos](https://www.youtube.com/playlist?list=PLtLJO5JKE5YCZYDAt8-uyJbVgq1FIUpVM)|
| | **2014** | | |
| GothamGo | 2014-11-15 | NYC, NY | [videos](https://vimeo.com/channels/852217) |
| dotGo | 2014-09-10 | Paris, France | [videos](https://www.youtube.com/playlist?list=PLMW8Xq7bXrG58Qk-9QSy2HRh2WVeIrs7e) |
| Go Devroom FOSDEM | 2014-06-30 |Brussels, Belgium | [videos](https://www.youtube.com/playlist?list=PLtLJO5JKE5YDKG4WcaNts3IVZqhDmmuBH) |
| GopherCon Denver | 2014-04-24 | Denver, CO | [videos](https://www.youtube.com/playlist?list=PL2ntRZ1ySWBcD_BiJiDJUcyrb2w3bTulF) |