# Get thee to a Go meetup
27 Feb 2013
Tags: community, talk
Summary: How to find or start a local group of gophers.
OldURL: /getthee-to-go-meetup

Andrew Gerrand

##

Last week, David Symonds and I each gave talks at Sydney's Go meetup,
[golang-syd](http://www.meetup.com/golang-syd/).
Dave spoke about [Go API design in the context of Protocol Buffers](http://talks.godoc.org/github.com/dsymonds/talks/2013-feb-golang-syd/golang-syd.slide),
and I discussed some neat tricks in the construction of [a small command-line program](http://talks.godoc.org/github.com/nf/streak/talk.slide).
The presentations were short but provoked some good questions and interesting discussion.
Of the 50-odd attendees, most were regular Go programmers and a fair chunk
write Go code professionally. It was a fun night.

It would have been great to see you there but,
statistically, you're not from Sydney.
Despair not, however, as there are likely some people in your area who either
run a Go meetup or want to start one.

The Go wiki lists [Go user groups](https://golang.org/wiki/GoUserGroups) around the world,
so if there's one nearby you should consider going along to the next event.

If not, why not start your own? To gauge interest,
ask around in the [Go+ Community](https://plus.google.com/communities/114112804251407510571) and
the [golang-nuts mailing list](http://groups.google.com/group/golang-nuts), and
take a look at this [list of people](http://golang.meetup.com/all/) waiting
for a Go meetup in their area.
Once you have a few people interested - and at least one person willing
to present something - pick a venue and set a date.
If you build it, they will come.
