This gist shows how to create a GIF screencast using only free OS X tools: QuickTime, ffmpeg, and gifsicle.
To capture the video (filesize: 19MB), using the free "QuickTime Player" application:
| (ns net.cgrand.decay | |
| "Exponentially decaying lists. See http://awelonblue.wordpress.com/2013/01/24/exponential-decay-of-history-improved/ | |
| for background and http://clj-me.cgrand.net/2013/02/12/decaying-lists-log-scale-for-lists/ for documentation") | |
| ;; PRNG, formulas straight from java.util.Random javadoc | |
| (defn- seed ^long [^long n] | |
| (bit-and (unchecked-multiply n 0x5DEECE66D) | |
| (unchecked-dec (bit-shift-left 1 48)))) | |
| (defn- next-seed ^long [^long seed] |
| # hubot script for desk | |
| module.exports = (robot) -> | |
| robot.router.post "/hook/desk", (req, res) -> | |
| body = req.body.data | |
| lines = body.split "\n" | |
| data = {} | |
| lines.forEach (line) -> | |
| bits = line.split ":" | |
| data[bits.shift()] = bits.join ":" |
| (require '[clojure.core.async :as async] | |
| '[clj-http.client :as client] | |
| '[clojure.data.json :as json]) | |
| (def concurrency 5) | |
| (let [in (async/chan) | |
| out (async/chan) | |
| request-handler (fn [url out*] | |
| (async/go |