# Go Conferences and Major Events

## Upcoming

Please keep all items in chronological order.

| Name |  Date | Location | Website | 
|-------|-----------|----------|------------|
| GopherCon Europe - Iceland | 2018-06-01-02 | Reykjavik, Iceland | https://gophercon.is | 
| Go Northwest 2018 | 2018-07-30 | Seattle, WA, USA | http://gonorthwest.io/ |
| GopherCon UK 2018 | 2018-08-01-03 | London, UK | https://www.gophercon.co.uk/<br>CFP https://www.gophercon.co.uk/speakers/ |
| GopherCon Denver 2018 | 2018-08-27-30 | Denver, CO | http://gophercon.com<br>CFP https://www.papercall.io/gophercon2018 |
| GopherCon Brasil 2018 | 2018-09-27-29 | Florianópolis, Brazil | https://2018.gopherconbr.org/en<br>CFP https://www.papercall.io/gopherconbrasil2018 |
| GoLab 2018 | 2018-10-22-23 | Florence, Italy | http://golab.io<br>CFP https://www.papercall.io/golab2018 |
| dotGo 2019 | 2019-03-25 | Paris, France | https://2019.dotgo.eu |

## Archives

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

| Name | Date | Location | Talk, Video Archives | 
|------|------------|----------|----------------|
| GopherCon SG 2018 | 2018-05-04 | Singapore | https://2018.gophercon.sg/ |
| GothamGo 2018 | 2018-04-27 | New York, USA | http://gothamgo.com/ |
| GoCon Tokyo | 2018-04-15 | Tokyo, Japan | https://gocon.connpass.com/event/82515/ |
| GopherCon China 2018 | 2018-04-14-15 | Shanghai, China | http://www.gopherchina.org/ |
| GopherCon Russia 2018 | 2018-03-17 | Moscow, Russia | http://gophercon-russia.ru/en<br>https://github.com/GopherConRu/talks | 
| GopherCon India 2018 | 2018-03-09-10 | Pune, India | http://www.gophercon.in/ |
| Go Devroom FOSDEM 2018 | 2018-02-03-04 | Brussels, Belgium | https://fosdem.org/2018/schedule/track/go/ |
| | **2017** | | | |
| GopherCon Brasil 2017 | 2017-11-17-19 | Florianópolis, Brazil | https://2017.gopherconbr.org/en |
| dotGo | 2017-11-06 | Paris, France | https://www.dotgo.eu |
| GothamGo | 2017-10-05-06 | New York, USA | http://gothamgo.com/ |
| Golang UK | 2017-08-16-18 | London, UK | https://golanguk.com |
| GopherCon Denver | 2017-07-12-15 | Denver, CO | http://gophercon.com |
| GopherCon Singapore 2017 | 2017-05-25-26 | Singapore | http://gophercon.sg |
| Capital Go Language Conference | 2017-04-24-25 | Washington, DC | http://www.capitalgolang.com/ |
| GopherChina 2017 | 2017-04-15-16 | Shanghai | http://www.bagevent.com/event/357764 |
| GoCon Tokyo | 2017-03-25 | Tokyo, Japan |https://gocon.connpass.com/event/52441/ |
| GopherCon India 2017 | 2017-02-24-25 | Pune, India | http://www.gophercon.in/ 
| 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 |
| | **2016** | | | |
| GothamGo | 2016-11-18 | New York, USA | http://gothamgo.com/ |
| GopherCon Brasil | 2016-11-04-05 | Florianópolis, 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-) |
| 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) |