diff --git a/2015/simplicity-is-complicated.slide b/2015/simplicity-is-complicated.slide
new file mode 100644
index 0000000..19f1fc1
--- /dev/null
+++ b/2015/simplicity-is-complicated.slide
@@ -0,0 +1,373 @@
+Simplicity is Complicated
+
+dotGo
+9 Nov 2015
+
+Rob Pike
+Google
+@rob_pike
+[[http://golang.org/s/plusrob][+RobPikeTheHuman]]
+http://golang.org/
+
+* Bonjour mes Gophers!
+
+.image simplicity-is-complicated/gophers.jpg 512 _
+
+* Success
+
+What makes Go successful?
+
+Many reasons cited:
+
+- speed of compilation
+- speed of execution
+- deployment
+- tools
+- libraries
+
+These are not language features.
+Less often cited: true language features such as interfaces or concurrency.
+
+All are important but not really an answer.
+
+* Simplicity
+
+My answer: Simplicity.
+
+Go is simple, at least compared to established languages.
+
+Simplicity has many facets.
+
+Simplicity is complicated.
+
+* Convergence
+
+[[http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/From-Parallel-to-Concurrent?utm_content=bufferf1e11&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer][Attended]] [[https://langnext2014.eventday.com/][Lang.Next]] conference last year (2014).
+
+Heard talks about new versions of Java, JavaScript (ECMAScript), Typescript, C#, C++, Hack (PHP), and more.
+
+These languages actively borrow features from one another.
+
+They are converging into a single huge language.
+
+* Language relativity
+
+_Sapir-Whorf_hypothesis_: Language influences thought.
+
+Controversial with regard to human languages.
+
+Close to a fact for computer languages. Consider:
+
+- logic programming
+- procedural programming
+- functional programming
+- object-oriented programming
+- concurrent programming
+
+Like disciplines in mathematics.
+
+* Convergence and relativity
+
+If the languages all converge, we will all think the same.
+
+But different ways of thinking are good.
+
+Need different languages for different problems.
+
+We don't want just one tool, we want a set of tools, each best at one task.
+
+* Convergence and features
+
+The talks at Lang.Next were about new language versions (Java 8, ECMAScript 6, C#, C++14) and were lists of features.
+
+These languages evolve and compete by adding features.
+
+The languages grow in complexity while becoming more similar.
+
+Bloat without distinction.
+
+* Features in Go
+
+Go is different.
+
+Go does not try to be like the other languages.
+
+Go does not compete on features.
+
+As of Go 1, the language is fixed.
+
+Many newcomers to Go ask for features from languages they know.
+But those features do not belong in Go—and the language is fixed.
+
+Adding features to Go would not make it better, just bigger.
+
+That would make Go less interesting by being less different.
+
+* But you need features!
+
+Of course, there must be _some_ features.
+
+But which ones? The right ones!
+
+Design by consensus.
+
+* Readability
+
+If a language has too many features, you waste time choosing which ones to use.
+Then implement, refine, possibly rethink and redo.
+
+Later, "Why does the code work this way?"
+
+_The_code_is_harder_to_understand_simply_because_it_is_using_a_more_complex_language._
+
+Preferable to have just one way, or at least fewer, simpler ways.
+
+Features add complexity. We want simplicity.
+
+Features hurt readability. We want readability.
+
+Readability is paramount.
+
+* Readable means Reliable
+
+Readable code is reliable code.
+
+It's easier to understand.
+
+It's easier to work on.
+
+If it breaks, it's easier to fix.
+
+If the language is complicated:
+
+- You must understand more things to read and work on the code.
+- You must understand more things to debug and fix it.
+
+A key tradeoff: More fun to write, or less work to maintain?
+
+* Expressiveness
+
+Features are often suggested to aid "expressiveness".
+
+Conciseness can be expressive but not always readable.
+(Consider APL:  ⊃ 1 ω ∨ . ∧ 3 4 = +/ +⌿ 1 0 ‾1 ∘.θ 1 - ‾1 Φ″ ⊂ ω)
+
+Can also be expensive, implementing simple ideas with too-powerful primitives.
+Performance can also be unpredictable.
+
+On the other hand, verbosity can inhibit readability by obscuring the intent.
+
+Build on, but do not be limited by, familiar ideas.
+
+Be concise while remaining expressive.
+
+* The right set of features
+
+Not features for features' sake.
+
+Features that "cover the space", like a vector basis covering solution space.
+
+Orthogonal features that interact predictably.
+
+Simple features that interact in simple ways.
+
+Simplicity comes from orthogonality and predictability.
+
+Keep the language's goals in mind.
+
+* Go's goals
+
+Clean procedural language designed for scalable cloud software.
+
+Composable distinct elements, including:
+
+- concrete data types
+- functions and methods
+- interfaces
+- packages
+- concurrency
+
+Plus: Good tools, fast builds.
+
+All the pieces feel simple in practice.
+
+* Simple can be expressive
+
+.image simplicity-is-complicated/gopherslide2smblue.jpg 512 _
+
+* Don't need all those features
+
+They add complexity without clarity.
+
+.image simplicity-is-complicated/gopherslide2sm.jpg 512 _
+
+* Simplicity
+
+Go is actually complex, but it _feels_ simple.
+
+Interacting elements must mesh seamlessly, without surprises.
+
+Requires a lot of design, implementation work, refinement.
+
+Simplicity is the art of hiding complexity.
+
+* A few simple things in Go
+
+- garbage collection
+- goroutines
+- constants
+- interfaces
+- packages
+
+Each hides complexity behind a simple facade.
+
+* Garbage collection
+
+Perhaps the best example of simplicity hiding complexity.
+
+Very difficult to implement well, but worth it.
+Yet so simple the language specification mentions it only in the introduction.
+Nonetheless, parts of the language strongly influenced by it.
+
+Code is simpler because GC is there.
+Design does not need to include "ownership".
+
+Go: there is no `free`. There is only garbage collection.
+As simple as it can be. (But complex behind the facade.)
+
+* Concurrency
+
+Concurrency is the ability to write your program as independently executing pieces.
+In Go, concurrency has three elements:
+
+- goroutines (execution)
+- channels (communication)
+- `select` (coordination)
+
+Let's talk about goroutines.
+
+* Goroutines
+
+Start a goroutine with the `go` keyword:
+
+	go function(args)
+
+Three extra keystrokes ('g', 'o', ' '). Hard to be much simpler.
+
+Like garbage collection, eliminate considerations from the programmer's concern:
+
+- no stack size
+- no return or completion status
+- no mechanism for management
+- no "ID"
+
+These are things other systems would provide. Go instead has a minimalist design.
+
+Implementation complex, dependent on garbage collection for stack management.
+
+* Constants
+
+In Go, constants are just numbers, even though (because) it is strongly typed.
+
+	var nanosecond = time.Second/1e9
+
+Simple idea took about a year to work out. Difficulties:
+
+- "infinite" precision integers
+- "infinite" precision floating point (tried and failed with rationals)
+- promotion rules (`i` `:=` `2;` `f` `:=` `2.0;`  `g` `:=` `1/2;` `h` `:=` `1/2.0`)
+- corner cases like shift
+
+.play simplicity-is-complicated/shift.go /Printf/
+
+Still not totally satisfied, but the effect is that constants feel like numbers, contribute to the ease of using Go. But complicated behind the scenes.
+
+More at [[http://blog.golang.org/constants][this blog post]].
+
+* Interfaces
+
+Just a set of methods. No data. Simple idea, but more complex than expected.
+
+	type Reader interface {
+		Read([]byte) (int, error)
+	}
+
+Also need variables of that type (`var` `reader` `io.Reader`).
+These variables add dynamic typing to a statically typed language.
+
+	var r Reader = os.Stdin // Statically checked.
+	var x interface{} = os.Stdin // Statically checked.
+	r = x.(Reader) // Dynamically checked. Must be explicit here - design decision.
+
+Requires careful design. Interface assignment must be implemented at run time (not a v-table). What if it fails? Led to type assertions and the "comma, ok" idiom.
+
+More complexity crept in. Type assertions and type switches were not in the original plan.
+
+* Interfaces
+
+Go's most distinctive and powerful feature.
+
+Profound effect on library design.
+
+Enables true component architectures. Prime examples are `io.Reader` and `io.Writer`, generalizations of the Unix pipe idea.
+
+Feel simple, worth the complexity.
+
+* Packages
+
+A design for structuring programs and libraries.
+
+	package big
+	...
+	import "math/big"
+
+Took a long time to design. Enable componentization, scalability, sharing, data hiding and isolation, ...
+
+Affect program design, syntax, naming, building, linking, testing, ...
+
+Separation of package path (`"math/big"`) from package name (`big`).
+Enabled the `go` `get` mechanism.
+
+Intricate to implement yet natural to use.
+
+After garbage collection, perhaps the highest ratio of true complexity to apparent simplicity, and therefore of the power of simplicity to hide complexity.
+
+* A "simple" example
+
+.play simplicity-is-complicated/hello.go
+
+* Hidden complexity
+
+Unicode and UTF-8 handled seamlessly.
+
+Packages imported and used easily.
+
+`Fprintf` direct to network connection.
+
+Function promoted to method (`HandleFunc`).
+
+Truly concurrent—server won't block.
+
+Production ready.
+
+All very simple.
+
+* Summary
+
+Simplicity is complicated but the clarity is worth the fight.
+
+.image simplicity-is-complicated/gopherslide2sm.jpg 512 _
+
+* Conclusion
+
+Simplicity is hard—to design.
+
+Simplicity is complicated—to build.
+
+But if you get it right...
+
+Simplicity is easy—to use.
+
+The success of Go proves it.
+
+.image simplicity-is-complicated/gopherslide2smblue.jpg 256 _
diff --git a/2015/simplicity-is-complicated/gophers.jpg b/2015/simplicity-is-complicated/gophers.jpg
new file mode 100644
index 0000000..ac88bfc
--- /dev/null
+++ b/2015/simplicity-is-complicated/gophers.jpg
Binary files differ
diff --git a/2015/simplicity-is-complicated/gopherslide2sm.jpg b/2015/simplicity-is-complicated/gopherslide2sm.jpg
new file mode 100644
index 0000000..887a7bd
--- /dev/null
+++ b/2015/simplicity-is-complicated/gopherslide2sm.jpg
Binary files differ
diff --git a/2015/simplicity-is-complicated/gopherslide2smblue.jpg b/2015/simplicity-is-complicated/gopherslide2smblue.jpg
new file mode 100644
index 0000000..54581a1
--- /dev/null
+++ b/2015/simplicity-is-complicated/gopherslide2smblue.jpg
Binary files differ
diff --git a/2015/simplicity-is-complicated/gopherslide2smbrown.jpg b/2015/simplicity-is-complicated/gopherslide2smbrown.jpg
new file mode 100644
index 0000000..4ec67af
--- /dev/null
+++ b/2015/simplicity-is-complicated/gopherslide2smbrown.jpg
Binary files differ
diff --git a/2015/simplicity-is-complicated/hello.go b/2015/simplicity-is-complicated/hello.go
new file mode 100644
index 0000000..2b4d4d1
--- /dev/null
+++ b/2015/simplicity-is-complicated/hello.go
@@ -0,0 +1,19 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"net/http"
+)
+
+func こんにちは_Gophers(w http.ResponseWriter, req *http.Request) {
+	fmt.Fprintf(w, "こんにちは  Gophers!\n")
+}
+
+func main() {
+	http.HandleFunc("/", こんにちは_Gophers)
+	err := http.ListenAndServe("localhost:12345", nil)
+	if err != nil {
+		log.Fatal("ListenAndServe: ", err)
+	}
+}
diff --git a/2015/simplicity-is-complicated/shift.go b/2015/simplicity-is-complicated/shift.go
new file mode 100644
index 0000000..0b6013c
--- /dev/null
+++ b/2015/simplicity-is-complicated/shift.go
@@ -0,0 +1,7 @@
+package main
+
+import "fmt"
+
+func main() {
+	fmt.Printf("%T %T", 2.0, 2.0<<0)
+}
