   (let [width     (.-clientWidth node)
         height    (.-clientHeight node)
         driver    (make-driver gl)
-        program   (dp/program driver program-source)
+        program   program-source
         state (app-state width height)]
-    
+
     (reset-gl-canvas! node)
     (.enable gl (.-DEPTH_TEST gl))
     (.clearColor gl 0 0 0 1)

                   (geom/rotate-around-axis [1 0 0] cube-rotation)
                   (geom/rotate-around-axis [0 1 0] cube-rotation)
                   (geom/rotate-around-axis [0 0 1] cube-rotation))]
        (driver/draw-elements driver program
                          (assoc (get-data p mv cube-vertices texture cube-texture-coords)
                            {:tag :element-index} cube-indices)
                          {:draw-mode :triangles
                           :first 0
                           :count 36 ;;Hard-coded
                           })))))

(defn animate [draw-fn step-fn current-value]
  (js/requestAnimationFrame
   (fn [time]
     (let [next-value (step-fn time current-value)]
       (draw-fn next-value)
       (animate draw-fn step-fn next-value)
       ))))

(defn tick
  "Takes the old world value and produces a new world value, suitable

(ns ^:figwheel-load gampg.learn-gamma.lesson-06
    (:require [clojure.string :as s]
              [gamma.api :as g]
              [gamma.program :as p]
              [gamma-driver.api :as gd]
              [gamma-driver.drivers.basic :as driver]
              [thi.ng.geom.core :as geom]
              [thi.ng.geom.core.matrix :as mat :refer [M44]]))

(def title
  "6. Keyboard input and texture filters")
