Presentation about a TextMate bundle for Clojure that makes extensive use of the clojure build tool Cake. Still in "early" development...
Presented at the Bay Area Clojure User Group meeting of Sep 2, 2010 in Mountain View.
See "http://github.com/franks42" for bundle code.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Clojure & TextMate on a sugar-high of Cake
1. Clojure & TextMate
on a sugar-high of Cake
C l o j u r e d e v e l o p m e n t
f o r t h e r e s t o f u s ; - )
F r a n k S i e b e n l i s t
g i t h u b . c o m / f r a n k s 4 2 / c l o j u r e . t m b u n d l e
2. Intro
Abundance of Clojure IDEs
Emacs, IntelliJ, NetBeans, Eclipse
Tried them all...
frustrating experiences...too early - all “in flux”
TextMate
at least I can understand what’s happening...
transparency important for understanding Clojure
3. TextMate
Mac-only Programming Editor
Highly customizable
Plenty of language specific add-ons
“Almost” an IDE and it works
Popular with the non-Java IDE devs
Editor extensions fairly “simple”
Also many “warts”... (life is not perfect...)
4. Cake
http://github.com/ninjudd/cake
Cake is a tasty build tool for clojure, designed to be as powerful and
fun to use as clojure itself.
Cake has the following features:
a persistent JVM, eliminating start-up overhead
a dependency based task model
a large library of built in tasks
compatible with most lein project.clj files
an enhanced REPL with readline and tab completion
5. Cake (2)
This software is a pre-release...
...and in active development
Main developers are Justin Balthrop and Lance Bradley
very responsive
Brilliant piece of SW!
Ruby-based Cake-client that manages&interfaces with persistent JVMs
very much like nailgun... but much more flexible
Much more than just a “build tool”
“Potential” to use clojure as a true command line scripting language,
like bash, perl, ruby or python...
6. TextMate & Cake =>
clojure.tmbundle
Tried to interface TM with Clojure thru nailgun before...
like VIM...not easy...kind of ugly
Cake discovery enabled “true” TM-Clojure Integration
code TM-extensions for Clojure in Clojure!
github.com/swannodette/textmate-clojure
David Nolen and Aria Haghighi seem to have had same idea
great job in trying to eval snippets in the right “persistent”
namespace thru cake-clj scripts - non-trivial problem!!!
liberally “borrowed” from David and Aria’s code and ideas
(we will align our efforts in the near future - all very early work...)
7. Demo...
Cake
show-off cake client
command-line scripting
REPL with history and completion
clojure.tmbundle
new project, lein & cake project mgmt
clojure code - online docs, find, macro-expand
eval sexp, files, run tests
8. Conclusion
This TM-Clojure marriage is still “young”
cake helps the bonding
but relationship suffers from occasional miscommunications,
unresponsiveness, unexpected stack-traces and lack of docs
Cake effort is VERY interesting
TextMate has many warts...(need a separate presentation)
...but it kind of works... just like the other dev environments
part of Clojure’s coming of age
Bundle development has been fun and has been a good learning
experience for a recovering “enterprise architect”
...by no means finished - any help appreciated!