diff --git a/2015/keeping-up.slide b/2015/keeping-up.slide
new file mode 100644
index 0000000..26f0408
--- /dev/null
+++ b/2015/keeping-up.slide
@@ -0,0 +1,104 @@
+Keeping up with the Gophers
+A brief history of gccgo, improvements, and the future
+
+Chris Manghane
+Google Gopher | Compilers and Toolchains
+cmang@golang.org
+
+* gccgo: "The Other Go Compiler"
+
+- Written and maintained by Ian Lance Taylor (released November 2009)
+
+    2010-01-26  Ian Lance Taylor  <iant@google.com>
+
+    		* MAINTAINERS: Add myself as Go frontend maintainer.
+
+- Compiler frontend for the Go language written in C++
+
+.image keeping-up/gccgo_structure.png 320 _
+
+* gccgo: The Go Team didn't know
+
+"Ian just showed up at our door with a fully working compiler" ~ probably Rob
+
+.html keeping-up/gource_explosion.html
+
+* Why write a Go compiler in C++?
+
+* rationale: architecture support
+
+- cmd/gc (2009) targets 4 major architectures: i386, amd64, ARM, and IBM POWER
+- gcc (4.3, 2009) targets 45 architectures officially, 28 unofficially
+- leveraging gcc => minimal work to support Go on existing architectures
+
+* rationale: code generation
+
+- gcc has ~30 years of work put into code analysis and optimization
+- cmd/gc has only recently focused on code generation (khr's SSA work)
+- leveraging gcc => minimal work to produce optimized binaries
+
+* rationale: technical honesty
+
+- "Keeping each other honest"
+- Distinct implementations => Inconsistencies in specification and implementations
+- Users have options when an implementation lacks features
+- Compilers seek feature parity => Compilers learn from each other
+- Compilers generate better binaries => Virtuous cycle
+
+* gccgo improvements through a telescope
+
+* gofrontend: no dependency on gcc
+
+- gcc implements gofrontend's backend interface
+
+gofrontend (gcc/go/gofrontend/expressions.cc)
+
+.code keeping-up/backend_interface.diff
+
+backend (gcc/go/go-gcc.cc)
+
+.code keeping-up/cst.gcc
+
+* gccgo: builds the `go` tool
+
+- One way to build code across multiple compilers
+
+.code keeping-up/go_build.log
+
+* gofrontend: basic escape analysis
+
+- Implementation of _Escape_analysis_for_Java_ by JD Choi
+
+escape.go
+
+.code keeping-up/escape.go
+
+Connection Graph
+
+.image keeping-up/escape.png
+
+* Keeping up
+
+* gccgo: runtime and garbage collector parity
+
+- gccgo runtime is a modified version of Go 1.3 runtime
+- Go 1.4 runtime was rewritten in Go
+- Go 1.4 changed GC type info
+
+* beyond gccgo: compiler stack maps
+
+- Stack map records locations of live values at a certain address
+- Allows Garbage Collector to be precise about types on stack
+- Enables contiguous stacks to readjust copied pointers
+- Little support in C compilers: gcc has no support, LLVM support is WIP
+
+* llvmgo: another "other Go compiler"
+
+- gofrontend provides backend interface LLVM can implement
+- LLVM byte code is trusted in secure environments such as PNaCl
+- Run native Go in the web
+
+* OS support: OSX and Windows
+
+- gccgo support on not unixes
+- Expert needed
\ No newline at end of file
diff --git a/2015/keeping-up/backend_interface.diff b/2015/keeping-up/backend_interface.diff
new file mode 100644
index 0000000..f844d34
--- /dev/null
+++ b/2015/keeping-up/backend_interface.diff
@@ -0,0 +1,7 @@
+-  tree val_type_tree = type_to_tree(this->type()->get_backend(gogo));
+-  go_assert(val_type_tree != error_mark_node);
+-  return build_int_cstu(val_type_tree, val);
++  mpz_t cst;
++  mpz_init_set_ui(cst, val);
++  Btype* int_btype = this->type()->get_backend(gogo);
++  return gogo->backend()->integer_constant_expression(int_btype, cst);
diff --git a/2015/keeping-up/cst.gcc b/2015/keeping-up/cst.gcc
new file mode 100644
index 0000000..9784bbb
--- /dev/null
+++ b/2015/keeping-up/cst.gcc
@@ -0,0 +1,7 @@
+Bexpression*
+Gcc_backend::integer_constant_expression(Btype* btype, mpz_t val)
+{
+  tree t = btype->get_tree();
+  tree ret = double_int_to_tree(t, mpz_get_double_int(t, val, true));
+  return this->make_expression(ret);
+}
diff --git a/2015/keeping-up/escape.go b/2015/keeping-up/escape.go
new file mode 100644
index 0000000..3a76497
--- /dev/null
+++ b/2015/keeping-up/escape.go
@@ -0,0 +1,10 @@
+package main
+
+var global *int
+
+func f(i *int) { global = i }
+
+func main() {
+	a := new(int)
+	f(a)
+}
diff --git a/2015/keeping-up/escape.png b/2015/keeping-up/escape.png
new file mode 100644
index 0000000..401b8f0
--- /dev/null
+++ b/2015/keeping-up/escape.png
Binary files differ
diff --git a/2015/keeping-up/gccgo_structure.png b/2015/keeping-up/gccgo_structure.png
new file mode 100644
index 0000000..91bfbf6
--- /dev/null
+++ b/2015/keeping-up/gccgo_structure.png
Binary files differ
diff --git a/2015/keeping-up/go_build.log b/2015/keeping-up/go_build.log
new file mode 100644
index 0000000..50353d8
--- /dev/null
+++ b/2015/keeping-up/go_build.log
@@ -0,0 +1,14 @@
+$ cat hello.go
+package main
+
+import "fmt"
+
+func main() {
+     fmt.Println("Hello World!")
+}
+
+$ go run -gccgoflags="-fgo-optimize-allocs" hello.go
+Hello World!
+
+$ go version
+go version go1.4.2 gccgo (GCC) 6.0.0 20150714 (experimental) linux/amd64
\ No newline at end of file
diff --git a/2015/keeping-up/gource_explosion.html b/2015/keeping-up/gource_explosion.html
new file mode 100644
index 0000000..10cc0ac
--- /dev/null
+++ b/2015/keeping-up/gource_explosion.html
@@ -0,0 +1,3 @@
+<video id="video" controls="" autoplay="" loop="" width="100%">
+    <source src="http://webm.host/d764a/vid.webm" type="video/webm">
+</video>
