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:
| ;;; skewer-coffee.el --- skewer support for live-interactive Coffeescript | |
| (defun skewer-coffee-eval (coffee-code) | |
| "Requests the browser to evaluate a coffeescipt string." | |
| ;; XXX should escape double quote characters | |
| (skewer-eval (concat "CoffeeScript.eval(\"" | |
| (s-replace "\n" "\\n" (s-trim coffee-code)) | |
| "\");") | |
| #'skewer-post-minibuffer)) |
| $sprites: sprite-map("sprites/*.png") | |
| $sprites-retina: sprite-map("sprites-retina/*.png") | |
| =sprite-background($name) | |
| background-image: sprite-url($sprites) | |
| background-position: sprite-position($sprites, $name) | |
| background-repeat: no-repeat | |
| display: block | |
| height: image-height(sprite-file($sprites, $name)) | |
| width: image-width(sprite-file($sprites, $name)) |
| function nestCollection(model, attributeName, nestedCollection) { | |
| //setup nested references | |
| for (var i = 0; i < nestedCollection.length; i++) { | |
| model.attributes[attributeName][i] = nestedCollection.at(i).attributes; | |
| } | |
| //create empty arrays if none | |
| nestedCollection.bind('add', function (initiative) { | |
| if (!model.get(attributeName)) { | |
| model.attributes[attributeName] = []; |