 
 (defn slide [data owner current]
   (reify
-    om/IInitState
-    (init-state [_]
+    #_om/IInitState
+    #_(init-state [_]
       (when-let [custom (:custom data)]
         (init-slide-state (om/value custom))))
     om/IRender
     (render [_]
       (html
        (if-let [bg (:background data)]
-         [:img {:class (str "slide " (:class data)) :src bg
+         [:img {:class (str "slide " (:class data))
+                :src bg
                 :style {:width "100%"
                         :height "100%"}}]
 

(def debug false)

;; A protocol for custom slides

(defprotocol Slide
  (init-slide-state [_])
  (render-slide [_ data owner]))


          {:subtitle "channels (TODO)"}

          #_{:subtitle "put and take"
           :custom (PutAndTakeSlide. {:buffer-size 7 :font-size "72pt" :radius 50})}

          #_{:subtitle "timeouts"
           :custom (TimeoutSlide. {:font-size "72pt"})}

          {:subtitle "buffers (TODO)"
           :code "(<! (chan))"}

          #_{:subtitle "alts!"
           :custom (AltsSlide. {:font-size "30pt"})}

          {:subtitle "go blocks"
           :custom go-block-slide
           :opts {:font-size "80pt" :circles 5}
           }
          ;; Show result of race in alts! between a channel and a timeout

          ;; Go blocks
