emacs live, emacs prelude, emacs-starting-kit: for getting up and running
bit.ly/vim-revisited - post about going back to basic editors
bit.ly/clj-ready: ryan's version of emacs starter kit
nREPL & nREPL.el instead of inferior-lisp
melpa for your package manager
have a look at the projectile minor mode for project management
use paredit to build up clojure code trees, not just characters
slurp and slice to add new structure: () then slurp to wrap
Ritz: Missing Clojure Tooling: Hugo Duncan
clojure debugging tool
nREPL: lets you connect to remote clojure VM (transport + socket + protocol + REPL)
sits in-between your local nrepl and the remote nrepl process
available as marmalade package
also lein plugin: lein-ritz
turn on break on exceptions: gives you common-lisp like stacktrace + restart options (continue, ignore, etc)
can open up stacktrace to see local variables within the frame
can even evaluate expressions within the frame (!)
also pull up the source code for a frame (clojure or java)
can set breakpoints on lines of code in emacs; view list of all current breakpoints in a separate buffer
warning: lists appear in stacktrace frame fully-realized (will be fixed)
Macros vs Monads: Chris Houser and Jonathan Claggett
synthread: library of macros that use Clojure's -> (threading macro) as the do
usually pulled in with -> as its alias
defines macros for most of clojure's control-flow code
also has updater macros
use for cases where pure functional code is too verbose and/or hard to read
replaces use of state monad
monads are infectious (end up passing them around everywhere)
clojure 1.5 has cond-> macro
rover example project up on github: lonocloud/synthread
How to Sneak Clojure into Your Rails Shop: Joshua Bellanco
and improve your rails hosting along the way
chief scientist at burnside digital (based in portland)
if this was 2006, we'd be talking about sneaking rails into your java shop
learn from rails: better to ask forgiveness than permission, use clojure whenever it's the right tool for the job, don't be afraid to show off your successes
step 1: convince them to use jruby (better tooling, better performance, java ecosystem, plenty of hosting options)
step 2: torquebox for deployment (benefits of jboss)
step 3: go in with clojure and start using immutant overlay (gives jboss, torquebox, jruby); lein immutant run runs both ruby and clojure apps
step 4: openshift (open source heroku from redhat)
step 5: make clojure and ruby talk to each other (hornetq + torquebox/immutant messaging libraries)
step 6: show off!
example project: memolisa: sends alerts and confirmation when alert is read; rails for users + groups, clojure for the messaging
clj-mook: Craig Brozefsky
library for testing web apps
persistent session, default request params, html parsing
motivated by shift from ring to immutant
RxJava: Dave Ray
open-source implementation of M$ Reactive Extensions
operators for creating, composing, and manipulating Observable streams
sketch up at daveray/rx-clj
also: netflix/rxjava
VMFest: Toni Batchelli
goal: make virtualbox behave like lightweight cloud provider
instantiate multiple vms from the same image
wrap the OOP api of virtualbox with a sane clojure one
has hardware dsl
one step further: little-fluffy-cloud -> RESTful interface for vmfest
visaje: build VMs from data
shafty: Chris Meiklejohn
basho technologies: erlang and js, with some clojure
functional reactive programming library
based on flapjax, implemented in clojurescript
implementation of core API from flapjax
FRP: authoring reactive programs without callbacks
FRP: event streams and behaviors
swearjure: gary fredericks
subset of clojure with no alphanumeric characters
exercise in extreme constraints
integers but no floats
true and false available
Evolutionary Art with Clojure: Alan Shaw
clevolution: partial implementation of paper on genetic programming
converting s-expressions to images
using self as filtering function: delete the images he doesn't like
want to move to true evolutionary: use function to weed through the images, allow cross-breeding between s-expressions