Did you speak at a conference or meetup lately? Please share links to your slide decks here for better distribution to our global community. 


# Peer To Peer Groups

## Kitchener-Waterloo, Canada

### Concurrent Optimization Methods Using Go

Brodie Roberts, June 12, 2018 [[repo](https://github.com/indexexchange/GoOptimizationMethods)]

Concurrency is a powerful tool for doing huge amounts of computation on today's multi-core computers. But that power is limited by the design of paralleling the problem and its implementation using threads and locks. We'll start with a sub-optimal concurrent Go program and walk through improving it - iterating on finding the program's bottleneck, improving it, and seeing the program get faster. We'll also cover general tips and tricks of concurrent optimization to apply to your own computationally intensive programs. 


# Conferences
## [GopherCon 2018](http://gophercon.com/), Denver, Colorado

### The Importance of Beginners
Natalie Pistunovich, August 29 

* [Session details](https://www.gophercon.com/agenda/session/16875)
* [Slides](https://github.com/Pisush/Public-Speaking/blob/master/Slides/gopherconUS.pdf)

### Rethinking Classical Concurrency Patterns
Bryan C. Mills, August 28

* [Slides with speaker notes](https://drive.google.com/file/d/1nPdvhB0PutEJzdCq5ms6UI58dp50fcAN/view?usp=sharing)