Editing Clojure with Emacs: Ryan Neufeld
- 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
- clisk, clojinc, clevolution
Simulation Testing with Simulant: Stuart Halloway
- example-based tests: setup, inputs, outputs, validation
- originally built as tool for testing datomic
- no language indirection: it’s about using clojure and datomic
- write model for what will happen to the application, then writeup actions to take against the system
- can speed up time in simulation, so don’t have to wait for 6 mo for 6 months of results to go through
- stores db with test results *and* the db tests ran against
- can find and diagnose bugs by querying db after tests run
- use clojure.data.generators to generate random test data (ints, vectors, maps)
- github.com/stuarthalloway/presentations/wiki
- contact at @stuarthalloway to have come out to speak at company or group
- even working through the model of users and use is a good exercise; good way to validate the assumptions you’re making about the system