Save 37% off PRO during our Black Friday Sale! »

CIDER: Inside the Brewery (f(by) 2016)

CIDER: Inside the Brewery (f(by) 2016)

Slide-deck from talk at the f(by) conference in Minsk.

Efd2550fb5f3059d815e731ecd61b701?s=128

Bozhidar Batsov

December 14, 2016
Tweet

Transcript

  1. M-x

  2. None
  3. slide intentionally left blank

  4. Вітаю!

  5. Bozhidar

  6. Божидар

  7. Божо cool

  8. Bug cool

  9. Sofia, Bulgaria

  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. None
  19. None
  20. A (Dark) Knight of the Order of Emacs

  21. @bbatsov

  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. Why I am here?

  30. I am a storyteller!

  31. CIDER: Inside The Brewery

  32. None
  33. A story about a different kind of cider…

  34. Clojure Interactive Development Environment that Rocks

  35. … for Emacs

  36. Is Emacs the One True Editor that will bring balance

    to the Source?
  37. Absolutely!

  38. Primary Clojure dev environment (2015) Other 10% LT 5% fireplace

    12% Cursive 27% CIDER 46%
  39. –Nancy Pearcey “Competition is always a good thing. It forces

    us to do our best. A monopoly renders people complacent and satisfied with mediocrity.”
  40. Near future (optimistic) Other 10% CIDER 90%

  41. Near future (worst case) Cursive 34% Other 15% CIDER 51%

  42. Customer Testimonials

  43. “Using CIDER is exciting. You never know if cider-jack-in will

    work or not!” — Mich Hickey
  44. I used to wonder a lot how to get an

    adrenaline rush - now I simply upgrade CIDER! — Alex Killer
  45. CIDER’s learning curve is amazing! I’m still amazed it never

    ends! — Zach Hellman
  46. Half the things in Emacs and CIDER seem magic to

    me. Every time I use them I feel like a wizard! — Anna Parenlicka
  47. A not so long time ago in a galaxy not

    far away…
  48. Java, C# and PHP ruled the dev world

  49. The Lisp Masters from the Republic of Great Programmers were

    on the run
  50. Lisps were out of fashion

  51. None
  52. 2007

  53. A gentleman & a scholar

  54. Clojure

  55. Biggest Clojure problem at launch?

  56. ((((((((((()))))))))))

  57. 0 Clojure development environments

  58. Emacs was the last Lisp stronghold

  59. Emacs is the greatest Emacs Lisp dev environment

  60. SLIME

  61. Superior Lisp Interaction Mode for Emacs

  62. SLIME Features • REPL • Interactive evaluation • Compilation notes

    • Code completion • Definition lookup • Documentation lookup • Apropos
  63. SLIME Features • Debugger • Value inspector • Tracing •

    Find usages • Macroexpansion • Scratchpad • Minibuffer code evaluation
  64. SLIME is an IDE

  65. Interactive Development Environment

  66. Programs are built in a very incremental manner

  67. SLIME (Emacs Lisp) SWANK (Common Lisp) Clozure RPC LispWorks CMUCL

    ABCL SBCL Client Server Backends
  68. 2008

  69. clojure-mode & swank-clojure

  70. SLIME (Emacs Lisp) SWANK (Common Lisp) swank-clojure

  71. A star was born

  72. In 2010 around 70% of the Clojurians were developing in

    Emacs!!!
  73. swank-clojure • Requires knowledge of swank (Common Lisp) • Bundles

    a frozen SLIME version • Subpar features (e.g. debugger, inspector, find usages) • Monolithic (no swank plugins)
  74. SLIME is a Common Lisp tool

  75. 2010

  76. Another esteemed gentleman & scholar

  77. nREPL

  78. A common foundation for Clojure development tools

  79. •Load (compile) a Clojure source file •Evaluate a Clojure form

    •Interrupt evaluation •Read from the standard input
  80. Extensible via middleware

  81. 2012

  82. nrepl.el

  83. nrepl.el (Emacs Lisp) nREPL (Clojure)

  84. A workhorse is retired

  85. nrepl.el • lacked many SLIME features • relied heavily on

    evaluation of inlined code • made assumptions about the environment • flawed bencode parser
  86. 2013

  87. Don’t settle for good. Demand great!

  88. –Phil Karlton “There are only two hard things in Computer

    Science: cache invalidation and naming things.”
  89. None
  90. Clojure Integrated Development Environment & REPL

  91. Clojure Interactive Development Environment Reimagined

  92. Clojure Interactive Development Environment that Rocks

  93. None
  94. CIDER Features • Interactive evaluation • Compilation notes • Code

    completion • Definition lookup • Documentation lookup • Apropos
  95. CIDER Features • Value inspector • Command selector • Tracing

    • Macroexpansion • Debugger • Scratchpad • Minibuffer code evalution
  96. CIDER Features • Javadoc support • Jump to Java definition

    • Jump to resource • Sanity-preserving stacktraces • clojure.test integration • namespace browser
  97. CIDER Features • classpath browser • grimoire integration • dynamic

    indentation • dynamic font-locking • nREPL session manager • Smart namespace reloading • ClojureScript support
  98. Extensions (are easy)

  99. Refactoring support (clj-refactor + refactor-nrepl)

  100. Demo Time

  101. CIDER tastes better than SLIME

  102. CIDER tastes better than some IDES

  103. None
  104. Bulgarian Liberation Day 2016

  105. CIDER 0.11 (Bulgaria)

  106. Require Clojure 1.7+

  107. Require Java 7+

  108. Run all loaded/project tests

  109. Enlighten

  110. None
  111. None
  112. Auto-injection of CIDER’s dependencies

  113. None
  114. Clojure/west 2016

  115. CIDER 0.12 (Seattle)

  116. Conditional breakpoints

  117. Step-in while debugging

  118. Test result improvements

  119. Zenburn & Solarized support

  120. cider-auto-test-mode

  121. Eldoc improvements

  122. Display docstring on mouse hover

  123. None
  124. Totally reorganized menus

  125. None
  126. None
  127. None
  128. One more thing…

  129. A Real Manual

  130. A Real Manual

  131. None
  132. http://cider.readthedocs.org/

  133. CIDER 0.13 (California)

  134. Eldoc improvements

  135. None
  136. None
  137. Unified evaluation commands keymap

  138. C-c C-v something

  139. cider-eval-sexp-at-point

  140. C-c C-v (C-)v

  141. Tracking of evaluated expressions

  142. None
  143. None
  144. “See also” section in doc buffers

  145. None
  146. A cornucopia of small additions and improvements

  147. CIDER 0.14 (Berlin)

  148. Display spec in doc buffers

  149. None
  150. Re-run last test

  151. C-c C-t (C-)g

  152. The usual mix of bug fixes, small additions and improvements

  153. What’s still missing?

  154. •Find usages •Built-in refactoring tooling •Better ClojureScript support •Support for

    the new Clojure socket REPL CIDER 1.0
  155. Why CIDER?

  156. Integrated Development Environment (a.k.a. IDE)

  157. None
  158. Emacs

  159. None
  160. None
  161. None
  162. None
  163. None
  164. Spacemacs

  165. Emacs users know how to build productive Lisp workflows

  166. •Emacs (ultimate Elisp dev env) •SLIME (and SLY) •Geiser •racket-mode

    •CIDER (obviously)
  167. • paredit • smartparens • rainbow-delimiters • rainbow-identifiers • sexp-fu

    • paxedit • lispy
  168. Community impact

  169. cider-nrepl https://github.com/clojure-emacs/cider-nrepl

  170. refactor-nrepl https://github.com/clojure-emacs/refactor-nrepl

  171. compliment https://github.com/alexander-yakushev/compliment

  172. cljs-tooling https://github.com/gtrak/cljs-tooling

  173. nREPL improvements

  174. Open development

  175. None
  176. None
  177. 158 contributors!

  178. Please, send more help!

  179. Дзякуй!

  180. Felina