diff --git a/docs/concepts-k8s.md b/docs/concepts-k8s.md
index 1ca3aa87..d97c8360 100644
--- a/docs/concepts-k8s.md
+++ b/docs/concepts-k8s.md
@@ -156,11 +156,11 @@ Yes!
--
-- In this workshop, we will run our app on a single node first
+- In this workshop, we run our app on a single node first
- We will need to build images and ship them around
-- You can do these things without Docker
+- We can do these things without Docker
(and get diagnosed with NIH syndrome)
@@ -200,4 +200,82 @@ Yes!
- namespace (more-or-less isolated group of things)
- secret (bundle of sensitive data to be passed to a container)
- And much more; but let's start poking around!
+ And much more! (We can see the full list by running `kubectl get`)
+
+---
+
+# Declarative vs imperative
+
+- Kubernetes puts a very strong emphasis on being *declarative*
+
+- Declarative:
+
+ *I want a cup of tea. Make it happen.*
+
+- Imperative:
+
+ *Boil some water. Pour it in a teapot. Add tea leaves. Steep for a while. Serve in cup.*
+
+--
+
+- Declarative seems simpler at first ...
+
+--
+
+- ... As long as you know how to brew tea
+
+---
+
+## Declarative vs imperative
+
+- What declarative would really be:
+
+ *I want a cup of tea, obtained by pouring an infusion¹ of tea leaves in a cup.*
+
+--
+
+ *¹An infusion is obtained by letting the object steep a few minutes in hot² water.*
+
+--
+
+ *²Hot liquid is obtained by pouring it in an appropriate container³ and setting it on a stove.*
+
+--
+
+ *³Ah, finally, containers! Something we know about. Let's get to work, shall we?*
+
+---
+
+## Declarative vs imperative
+
+- Imperative systems:
+
+ - simpler
+
+ - if a task is interrupted, we have to restart from scratch
+
+- Declarative systems:
+
+ - if a task is interrupted (or if we show up to the party half-way through),
+ we can figure out what's missing and do only what's necessary
+
+ - we need to be able to *observe* the system
+
+ - ... and compute a "diff" between *what we have* and *what we want*
+
+---
+
+## Declarative vs imperative in Kubernetes
+
+- Virtually everything we create in Kubernetes is created from a *spec*
+
+- Watch for the `spec` fields in the YAML files later!
+
+- The *spec* describes *how we want the thing to be*
+
+- Kubernetes will *reconcile* the current state with the spec
+
(technically, this is done by a number of *controllers*)
+
+- When we want to change some resource, we update the *spec*
+
+- Kubernetes will then *converge* that resource
diff --git a/docs/kube.yml b/docs/kube.yml
index d3fcd8f1..9ca03d39 100644
--- a/docs/kube.yml
+++ b/docs/kube.yml
@@ -64,13 +64,13 @@ chapters:
- - prereqs-k8s.md
- versions-k8s.md
- sampleapp.md
- - concepts-k8s.md
+- - concepts-k8s.md
- kubectlget.md
- setup-k8s.md
-- - kubectlrun.md
- - kubectlexpose.md
+ - kubectlrun.md
+- - kubectlexpose.md
- ourapponkube.md
- - kubectlscale.md
+- - kubectlscale.md
- daemonset.md
- |
class: title