# New Talk and Tutorials
5 May 2010
Summary: More materials for learning about Go: one talk, one codelab, and one screencast.

Andrew Gerrand

##

Rob Pike recently gave a talk at Stanford's [Computer Systems Colloquium](http://www.stanford.edu/class/ee380/) (EE380).
Titled [_Another Go at Language Design_](http://www.stanford.edu/class/ee380/Abstracts/100428.html),
the presentation gives an overview of the itches Go was built to scratch,
and how Go addresses those problems.
You can view [a video stream of the talk](https://www.youtube.com/watch?v=7VcArS4Wpqk),
and [download the slides](http://www.stanford.edu/class/ee380/Abstracts/100428-pike-stanford.pdf).

Last week's release included a code lab, [Writing Web Applications](https://golang.org/doc/codelab/wiki/),
that details the construction of a simple wiki program.
It is a practical introduction to some fundamental Go concepts,
and the first of a series of Go code labs.

Lastly, we are often asked "How do Go packages work?" It's easier to show than to explain,
so I put together a [Go Packages screen cast](http://www.youtube.com/watch?v=jDWBJOXs_iI)
that demonstrates the process of writing,
building, installing, and redistributing Go packages.
I hope to post more of these covering a variety of Go programming topics
to the [gocoding YouTube channel](http://youtube.com/gocoding) in the near future.
