blob: 896dac83e2e2c3845c283fa3fa3bff8d6f303c67 [file] [log] [blame] [view]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +11001# Go talks
2
Jason Buberelf7f7d182015-08-21 16:44:01 -07003Check out http://talks.golang.org for presentations for some of the talks. For a comprehensive, curated and searchable index, try [GopherVids](http://gophervids.appspot.com/) from Damian Gryski.
Andrew Gerrand5bc444d2014-12-10 11:35:11 +11004
5# Official
6
7## Introductory Talks
8
9An introduction to Go.
10
11### Russ Cox's Tour of Go
12
13[[video and discussion](http://research.swtch.com/gotour)]
14
15Three things that make Go fast, fun, and productive:interfaces, reflection, and concurrency. Builds a toy web crawler to demonstrate these.
16
17### Go: a simple programming environment
18
19[[video](http://vimeo.com/53221558)]
20[[another video](http://vimeo.com/69237265)]
21[[slides](http://talks.golang.org/2012/simple.slide)]
22
23Go is a general-purpose language that bridges the gap between efficient statically typed languages and productive dynamic language. But it’s not just the language that makes Go special – Go has broad and consistent standard libraries and powerful but simple tools.
24
25This talk gives an introduction to Go, followed by a tour of some real programs that demonstrate the power, scope, and simplicity of the Go programming environment.
26
27### Get Started with Go
28
29[[video](http://www.youtube.com/watch?v=2KmHtgtEZ1s)]
30
Budh Ram Gurungbd33fe32016-07-18 11:41:36 +053031Get a feel for the language and its standard libraries and tools in this session, where we go through installing Go and writing some simple but useful
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110032programs.
33
34### Go Programming
35
Mitchell Riley9b36f2a2015-06-15 15:12:32 -040036[[video](http://www.youtube.com/watch?v=jgVhBThJdXc)]
37[[code](http://talks.golang.org/2010/io/)]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110038
39A presentation delivered by Rob Pike and Russ Cox at Google I/O 2010. It
40illustrates how programming in Go differs from other languages through a set of
41examples demonstrating features particular to Go. These include concurrency,
42embedded types, methods on any type, and program construction using interfaces.
43
44### The Go Tech Talk
45
46[[video](http://www.youtube.com/watch?v=rKnDgT73v8s)]
47[[slides](http://talks.golang.org/2009/go_talk-20091030.pdf)]
48
49An hour-long talk delivered by Rob Pike at Google in October 2009.
50The language's first public introduction. The language has changed since it was made,
51but it's still a good introduction.
52
53## Development in Go
54
55### Writing Web Apps in Go
56
Mitchell Riley9b36f2a2015-06-15 15:12:32 -040057[[video](http://www.youtube.com/watch?v=-i0hat7pdpk)]
58[[slides](http://talks.golang.org/2011/Writing_Web_Apps_in_Go.pdf)]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110059
60A talk by Rob Pike and Andrew Gerrand presented at Google I/O 2011.
61It walks through the construction and deployment of a simple web application
62and unveils the [Go runtime for App Engine](http://blog.golang.org/2011/05/go-and-google-app-engine.html).
63
64### Real World Go
65
Mitchell Riley9b36f2a2015-06-15 15:12:32 -040066[[video](http://www.youtube.com/watch?v=7QDVRowyUQA)]
67[[slides](http://talks.golang.org/2011/Real_World_Go.pdf)]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110068
69A talk by Andrew Gerrand presented at Google I/O Bootcamp 2011.
70It gives a broad overview of Go's type system and concurrency model
71and provides four examples of Go programs that solve real problems.
72
73### Building Integrated Apps on Google's Cloud Platform
74
75[[video](http://www.youtube.com/watch?v=Mo1YKpIF1PQ)]
76
77A talk by Andrew Gerrand presented at Google Developer Day Japan 2011.
78It discusses the development of a web application that runs on Google
79App Engine and renders raytraced that it stores on Google Cloud Storage.
80
81### High Performance Apps with Go on App Engine
82
83Google I/O, May 2013
84
Mitchell Riley9b36f2a2015-06-15 15:12:32 -040085[[video](http://www.youtube.com/watch?v=fc25ihfXhbg)]
86[[slides](http://talks.golang.org/2013/highperf.slide)]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110087
88### Practical Go Programming
89
Mitchell Riley9b36f2a2015-06-15 15:12:32 -040090[[video](http://www.youtube.com/watch?v=2-pPAvqyluI)]
91[[slides](http://wh3rd.net/practical-go)]
92[[code](http://github.com/nf/goto)]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +110093
94This talk presents the development of a complete web application in Go.
95It looks at design, storage, concurrency, and scaling issues in detail, using
96the simple example of an URL shortening service.
97
98### Lexical Scanning in Go
99
100[[video](http://www.youtube.com/watch?v=HxaD_trXwRE)]
101
102This GTUG talk by Rob Pike discusses the detailed design of a lexical scanner that uses Go's
103features in expressive combinations. (The discussion near the end about avoiding goroutines
104at initialization is obsolete: Go 1 allows goroutines in init functions so the extra complexity
105is unnecessary.)
106
107### Go in Production
108
109Google I/O, June 2012
110
111[[video](http://www.youtube.com/watch?v=kKQLhGZVN4A)]
112
113Since Go's release in 2009 many companies (besides Google, of course) have used the language to build cool stuff. In this session programmers from several companies will share their first-hand experience using Go in production environments.
114
115### Go: code that grows with grace
116
117[[video](http://vimeo.com/53221560)]
118[[slides](http://talks.golang.org/2012/chat.slide)]
119
120One of the Go Programming Language’s key design goals is code adaptability; that it should be easy to take a simple design and build upon it in a clean and natural way. In this talk I describe a simple “chat roulette” server that matches pairs of incoming TCP connections, and then use Go’s concurrency mechanisms, interfaces, and standard library to extend it with a web interface and other features. Although the function of the program changes dramatically, the inherent flexibility of Go allows the original design to remain intact as it grows.
121
Mitchell Riley9b36f2a2015-06-15 15:12:32 -0400122### Implementing a bignum calculator
123
124[[video](https://www.youtube.com/watch?v=PXoG0WX0r_E)]
125[[slides](http://go-talks.appspot.com/github.com/robpike/ivy/talks/ivy.slide)]
126
127Rob Pike describes his interpreter for an APL-like calculator language.
128
129### Go in Go
130
131[[video](https://www.youtube.com/watch?v=cF1zJYkBW4A)]
132[[slides](https://talks.golang.org/2015/gogo.slide)]
133
134Rob Pike speaks on moving the Go toolchain from C to Go
135
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100136## Concurrency in Go
137
138### Go concurrency patterns
139
140Google I/O, June 2012
141
142[[video](http://www.youtube.com/watch?v=f6kdp27TYZs)]
143
144### Advanced Concurrency Patterns
145
146[[video](https://www.youtube.com/watch?v=QDDwwePbDtw)]
147[[slides](http://talks.golang.org/2013/advconc.slide)]
148
149Google I/0, May 2013
150
151Concurrency is the key to designing high performance network services. This talk expands on last year's popular Go Concurrency Patterns talk to dive deeper into Go's concurrency primitives, and see how tricky concurrency problems can be solved gracefully with simple Go code.
152
153## Design of Go
154
155### The Expressiveness Of Go
156
157[[slides](http://talks.golang.org/2010/ExpressivenessOfGo-2010.pdf)]
158
159A discussion of the qualities that make Go an expressive and comprehensible
160language. The talk was presented by Rob Pike at JAOO 2010.
161The recording of the event was lost due to a hardware error.
162
163### Another Go at Language Design
164
165[[video](http://sydney.edu.au/engineering/it/videos/seminar_pike) from Sydney University]
166[[slides](http://assets.en.oreilly.com/1/event/45/Another%20Go%20at%20Language%20Design%20Presentation.pdf)]
167
168A tour, with some background, of the major features of Go, intended for
169an audience new to the language. The talk was presented at OSCON 2010.
170This talk was also delivered at Sydney University in September 2010.
171
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100172### Go Emerging Languages Conference Talk
173
Mitchell Riley9b36f2a2015-06-15 15:12:32 -0400174[[video](http://confreaks.com/videos/115-elcamp2010-go)]
175[[slides](http://assets.en.oreilly.com/1/event/45/Go%20Presentation.pdf)]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100176
177Rob Pike's Emerging Languages Conference presentation delivered in July 2010. Talk abstract:
178
179> Go’s approach to concurrency differs from that of many languages, even those
180> (such as Erlang) that make concurrency central, yet it has deep roots. The path
181> from Hoare’s 1978 paper to Go provides insight into how and why Go works as it
182> does.
183
Mitchell Riley9b36f2a2015-06-15 15:12:32 -0400184## The State of Go
185
186### June 2014
187
188[[video](https://www.youtube.com/watch?v=0KF44QtoByk)]
189[[slides](https://talks.golang.org/2014/state-of-go.slide)]
190
191### February 2015
192
193[[video](https://www.youtube.com/watch?v=Kd8EqTvW5EQ)]
194[[slides](https://talks.golang.org/2015/state-of-go.slide)]
195
196### May 2015
197
198[[video](https://www.youtube.com/watch?v=S9Bu6fZnLGM)]
199[[slides](https://talks.golang.org/2015/state-of-go-may.slide)]
200
201
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100202## Miscellaneous
203
204### The Go frontend for GCC
205
206[[paper](http://talks.golang.org/2010/gofrontend-gcc-summit-2010.pdf)]
207
208A description of the Go language frontend for gcc.
209Ian Lance Taylor's paper delivered at the GCC Summit 2010.
210
211### The Go Promo Video
212
213[[video](http://www.youtube.com/watch?v=wwoWei-GAPo)]
214
215A short promotional video featuring Russ Cox demonstrating Go's fast compiler.
216
217### Meet the Go team
218
219Google I/O, June 2012
220
221[[video](http://www.youtube.com/watch?v=sln-gJaURzk)]
222
223A panel discussion with David Symonds, Robert Griesemer, Rob Pike, Ken Thompson, Andrew Gerrand, and Brad Fitzpatrick.
224
225### Fireside Chat with Go team
226
227Google I/0, May 2013
228
229[[video](http://www.youtube.com/watch?v=p9VUCp98ay4)]
230
231A fireside chat with Andrew Gerrand, Brad Fitzpatrick, David Symonds, Ian Lance Taylor, Nigel Tao, Rob Pike, Robert Griesemer, Sameer Ajmani.
232
Mitchell Riley9b36f2a2015-06-15 15:12:32 -0400233### The State of the Gopher
234
235[[video](https://www.youtube.com/watch?v=4KFTacxqkcQ)]
236[[slides](https://talks.golang.org/2014/state-of-the-gopher.slide)]
237
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100238# Unofficial
239
240Talks by members of the community.
241
242### Let's Go, or introduction to Go
243
Mitchell Riley9b36f2a2015-06-15 15:12:32 -0400244[[video (starting at 14:35)](http://live.digicast.ru/view/1582)]
245[[slides](http://talks.godoc.org/github.com/AlekSi/LetsGo/lets-go.slide)]
246[[source](https://github.com/AlekSi/LetsGo)]
Andrew Gerrand5bc444d2014-12-10 11:35:11 +1100247
Antonio Troina175ab9a2018-08-18 14:56:03 +0100248This talk gives an introduction to Go in Russian.
249
250### What are Go modules and how do I use them?
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100251_[Paul Jolly](https://twitter.com/_myitcv) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100252
253[[video](https://youtu.be/6MbIzJmLz6Q)]
254[[slides](https://talks.godoc.org/github.com/myitcv/talks/2018-08-15-glug-modules/main.slide#1)]
255
256### What else is in Go 1.11
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100257_[Daniel Martì](https://twitter.com/mvdan_) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100258
259[[video](https://youtu.be/mQYjjVCGVJ8)]
260[[slides](https://talks.godoc.org/github.com/mvdan/talks/2018/go1.11.slide#1)]
261
262Sneak peak at the Go 1.11 release
263
264### Get Going with WebAssembly
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100265_[Johan Brandhorst](https://twitter.com/JohanBrandhorst) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100266
267[[video](https://youtu.be/iTrx0BbUXI4)]
268[[slides](https://talks.godoc.org/github.com/johanbrandhorst/presentations/wasm-lightning/wasm.slide#1)]
269[[code wasm](https://github.com/johanbrandhorst/wasm-experiments)]
270[[code grpc](https://github.com/johanbrandhorst/grpcweb-wasm-example)]
271
272In this talk, Johan introduces you to the WebAssembly port in Go 1.11 and how it can help when dealing with JavaScript madness :)
273
274### Go and Mongo - and how it's changing
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100275_[DJ Walker-Morgan](https://twitter.com/codepope) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100276
277[[video](https://youtu.be/W22tZ5p3aDk)]
278[[slides](https://github.com/codepope/talks/blob/master/GoAndMongo.pdf)]
279
280### Building a simple concurrency teaching language with Go
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100281_[Nicholas Ng](https://twitter.com/nicholascwng) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100282
283[[video](https://youtu.be/7cEp98y6WCs)]
284[[slides](https://talks.godoc.org/github.com/nickng/londongophers-aug18/londongophers-aug18.slide#1)]
285
286In this talk Nicholas presents the design and implementation of a simple language designed for teaching concurrency theory (process calculi), implemented in Go. He covers some of Go's static analysis tools used in the implementation and show how you can use them too!
287
288### Introducing Remoto
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100289_[Mat Ryer](https://twitter.com/matryer) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100290
291[[video](https://youtu.be/dhbq7R7h-C0)]
292
293Mat shares the first glimpse of a new project that aims to make building RPC services easy. gRPC isn’t good for clients (especially web), and RESTful designs sometimes lead to confusing APIs. Remoto lets you define your service with a Go interface, and generate everything you need to build and consume the service.
294
295### Go Swagger
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100296_[Simone Trubian](https://twitter.com/simone_trubian) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100297
298[[video](https://youtu.be/PUejMR82RgU)]
299
300Simone gives an overview of the Go Swagger command line tool and briefly explain how he used it to improve productivity in designing REST API's.
301
302### ORMs in Go
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100303_Renato Serra at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100304
305[[video](https://youtu.be/0XW6wI2FnPA)]
306
307Renato explains where ORMs can help, what the options were and what it's been like to use one.
308
309### Unused parameters in Go code
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100310_[Daniel Martì](https://twitter.com/mvdan_) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100311
312[[video](https://youtu.be/VW5jI6V_Y2c)]
313[[slides](https://talks.godoc.org/github.com/mvdan/talks/2018/unparam.slide#1)]
314
315Daniel talks about how to use SSA and callgraphs to write powerful code analysis tools. In particular, he demonstrates how to detect unused parameters in functions.
316
317### Lies, Damn Lies, and Benchmarks
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100318_Amnon at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100319
320[[video](https://youtu.be/YDPKUJndhw4)]
321[[slides](https://talks.godoc.org/github.com/amnonbc/talks/lies.slide#1)]
322
323Amnon discusses why microbenchmarks can be misleading for optimising real world systems, why data layout is often more significant than code structure, and how Go can help us in the quest for performance.
324
325### A debugger from scratch
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100326_[Liz Rice](https://twitter.com/LizRice) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100327
328[[video](https://youtu.be/tZ5PUKbGjO4)]
329[[slides](https://speakerdeck.com/lizrice/debuggers-from-scratch)]
330[[code](https://github.com/lizrice/debugger-from-scratch)]
331
332Liz explains how a debugger works by building one in a few lines of Go. This includes mapping between Go source code and the machine code instructions it compiles to, and using the ptrace system call to set break points and examine and modify the running process.
333
334### Fast Fractal Fun With SDL
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100335_[Sue Spence](https://twitter.com/virtualsue) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100336
337[[video](https://youtu.be/eTjL3grAYAM)]
338[[slides](https://gitlab.com/virtualsue/sdl-fractal/blob/master/Fast%20Fractal%20Fun.pdf)]
339[[code](https://gitlab.com/virtualsue/sdl-fractal)]
340
341Go programs which create images such as the Mandelbrot & Julia sets often output an image file. I will show how to use Go bindings for the Simple Directmedia Layer library to output them on a display device instead.
342
343### Concurrency: a Journey from Ruby to Go
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100344_[Mathilda Thompson](https://twitter.com/mathildathompso) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100345
346[[video](https://youtu.be/mK3r5PDED-0)]
347
348### Go in a Polyglot Environment
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100349_[Kevin McKelvin](https://twitter.com/kmckelvin) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100350
351[[video](https://youtu.be/kWAxBhsEayk)]
352
353In this talk Kevin goes through his experience of adopting Go, moving to a polyglot environment, successes and challenges, and how Go fits into his company's overall architecture and strategy.
354
355### Delivering Go Services
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100356_[Zak Knill](https://twitter.com/zakknill) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100357
358[[video](https://youtu.be/pRdfJTuGxEw)]
359
360Delivering Go Services: After introducing Go to your company, and deploying your first go service. What are the next steps? This talk focuses on some of the things that come next, touching on the fabled "New service to prod in X (10, 20, 30) mins", as well as some gotchas along the way.
361
362### Go-ing Lambda
363
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100364_[David Blooman](https://twitter.com/dblooman) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100365
366[[video](https://youtu.be/BBiIr19JOo4)]
367
368Go-ing Lambda - A year in production: How we(FundApps) used Go in lambda functions to build a service for importing/scraping/parsing data for financial services to build API's on top of. Tips and tricks of lambda functions in Go, limitations, performance and using the Apex framework.
369
370### The RED method
371
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100372_[Tom Wilkie](https://twitter.com/tom_wilkie) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100373
374[[video](https://youtu.be/rc3V-k-JYAo)]
375
376We'll also have a section dedicated to those of you who are hiring or looking to get hired (if we'll miss it like last time, please don't be afraid to remind us).
377
378### Abusing Go’s net package for fun and profit
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100379_[Michał Witkowski](https://twitter.com/MWitkow) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100380
381[[video](https://youtu.be/JDjHFmke0ZI)]
382
383This talks into the details of how Go’s composition-based philosophy, as applied to the net package, can be creatively leveraged to beautiful and useful hacks that significantly augment the functionality of the stack. We’ll explore the net.Conn, and how one can (ab)use them in creative ways. We’ll take a peek into net/http, and explore how the http.Handler and http.Roundtripper interfaces can be creatively appropriated to build useful middleware. We’ll then dig even deeper into the net/http internals and how they related tls.Conn and x/net/http2, to understand how they work, and armed with that knowledge we’ll demonstrate some of our most beautiful hacks.
384
385### 2018's stringer
Antonio Troina7ab7c5b2018-08-18 15:11:55 +0100386_[Daniel Martì](https://twitter.com/mvdan_) at [**LondonGophers**](https://twitter.com/LondonGophers)_
Antonio Troina175ab9a2018-08-18 14:56:03 +0100387
388[[video](https://youtu.be/IyVEW19IkXE)]
389[[slides](https://talks.godoc.org/github.com/mvdan/talks/2018/stringer.slide)]
390
3912018's stringer - a demonstration of new features you likely haven't heard of.