I kind of want to show him this code to upset him more. I think React is great, especially when using it through ClojureScript.
(defn todo-list []
(let [todos (atom [])
text (atom "")
add-todo #(do
(swap! todos conj @text)
(reset! text ""))]
(fn []
[:form {:on-submit add-todo
:action "javascript:"}
[:input {:type "text"
:value @text
:on-change #(reset! text (.-target.value %))}]
[:button {:type "submit"} "Add"]
[:ul
(for [todo @todos]
^{:key todo} [:li (str todo "!")])]])))