Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CIDER: Inside the Brewery (f(by) 2016)
Search
Bozhidar Batsov
December 14, 2016
Programming
1
230
CIDER: Inside the Brewery (f(by) 2016)
Slide-deck from talk at the f(by) conference in Minsk.
Bozhidar Batsov
December 14, 2016
Tweet
Share
More Decks by Bozhidar Batsov
See All by Bozhidar Batsov
Clojure: The Bad Parts
bbatsov
0
61
Weird Ruby (RubyDay 2024, Verona)
bbatsov
0
150
Sustainable OSS (Balkan Ruby 2024, Sofia)
bbatsov
0
150
Ruby's Creed (RubyDay 2023, Verona)
bbatsov
0
27
Victims of Complexity
bbatsov
0
310
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
270
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
470
The Elements of Programming Style (HackConf 2019)
bbatsov
0
190
The Groundhog Day Development Method (HackConf 2019)
bbatsov
0
290
Other Decks in Programming
See All in Programming
カンファレンス遠征を(安く)楽しむ技術
wp_daisuke
0
140
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
410
自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー
segadevtech
2
1k
flutter_kaigi_2025.pdf
kyoheig3
1
330
高単価案件で働くための心構え
nullnull
0
140
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
5
1.6k
CSC509 Lecture 13
javiergs
PRO
0
250
JJUG CCC 2025 Fall: Virtual Thread Deep Dive
ternbusty
3
430
モビリティSaaSにおけるデータ利活用の発展
nealle
0
420
Dive into Triton Internals
appleparan
0
490
最新のDirectX12で使えるレイトレ周りの機能追加について
projectasura
0
250
The Missing Link in Angular's Signal Story: Resource API and httpResource
manfredsteyer
PRO
0
130
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
RailsConf 2023
tenderlove
30
1.3k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
What's in a price? How to price your products and services
michaelherold
246
12k
Making Projects Easy
brettharned
120
6.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
930
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Typedesign – Prime Four
hannesfritz
42
2.9k
Transcript
M-x
None
slide intentionally left blank
Вітаю!
Bozhidar
Божидар
Божо cool
Bug cool
Sofia, Bulgaria
None
None
None
None
None
None
None
None
None
None
A (Dark) Knight of the Order of Emacs
@bbatsov
None
None
None
None
None
None
None
Why I am here?
I am a storyteller!
CIDER: Inside The Brewery
None
A story about a different kind of cider…
Clojure Interactive Development Environment that Rocks
… for Emacs
Is Emacs the One True Editor that will bring balance
to the Source?
Absolutely!
Primary Clojure dev environment (2015) Other 10% LT 5% fireplace
12% Cursive 27% CIDER 46%
–Nancy Pearcey “Competition is always a good thing. It forces
us to do our best. A monopoly renders people complacent and satisfied with mediocrity.”
Near future (optimistic) Other 10% CIDER 90%
Near future (worst case) Cursive 34% Other 15% CIDER 51%
Customer Testimonials
“Using CIDER is exciting. You never know if cider-jack-in will
work or not!” — Mich Hickey
I used to wonder a lot how to get an
adrenaline rush - now I simply upgrade CIDER! — Alex Killer
CIDER’s learning curve is amazing! I’m still amazed it never
ends! — Zach Hellman
Half the things in Emacs and CIDER seem magic to
me. Every time I use them I feel like a wizard! — Anna Parenlicka
A not so long time ago in a galaxy not
far away…
Java, C# and PHP ruled the dev world
The Lisp Masters from the Republic of Great Programmers were
on the run
Lisps were out of fashion
None
2007
A gentleman & a scholar
Clojure
Biggest Clojure problem at launch?
((((((((((()))))))))))
0 Clojure development environments
Emacs was the last Lisp stronghold
Emacs is the greatest Emacs Lisp dev environment
SLIME
Superior Lisp Interaction Mode for Emacs
SLIME Features • REPL • Interactive evaluation • Compilation notes
• Code completion • Definition lookup • Documentation lookup • Apropos
SLIME Features • Debugger • Value inspector • Tracing •
Find usages • Macroexpansion • Scratchpad • Minibuffer code evaluation
SLIME is an IDE
Interactive Development Environment
Programs are built in a very incremental manner
SLIME (Emacs Lisp) SWANK (Common Lisp) Clozure RPC LispWorks CMUCL
ABCL SBCL Client Server Backends
2008
clojure-mode & swank-clojure
SLIME (Emacs Lisp) SWANK (Common Lisp) swank-clojure
A star was born
In 2010 around 70% of the Clojurians were developing in
Emacs!!!
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)
SLIME is a Common Lisp tool
2010
Another esteemed gentleman & scholar
nREPL
A common foundation for Clojure development tools
•Load (compile) a Clojure source file •Evaluate a Clojure form
•Interrupt evaluation •Read from the standard input
Extensible via middleware
2012
nrepl.el
nrepl.el (Emacs Lisp) nREPL (Clojure)
A workhorse is retired
nrepl.el • lacked many SLIME features • relied heavily on
evaluation of inlined code • made assumptions about the environment • flawed bencode parser
2013
Don’t settle for good. Demand great!
–Phil Karlton “There are only two hard things in Computer
Science: cache invalidation and naming things.”
None
Clojure Integrated Development Environment & REPL
Clojure Interactive Development Environment Reimagined
Clojure Interactive Development Environment that Rocks
None
CIDER Features • Interactive evaluation • Compilation notes • Code
completion • Definition lookup • Documentation lookup • Apropos
CIDER Features • Value inspector • Command selector • Tracing
• Macroexpansion • Debugger • Scratchpad • Minibuffer code evalution
CIDER Features • Javadoc support • Jump to Java definition
• Jump to resource • Sanity-preserving stacktraces • clojure.test integration • namespace browser
CIDER Features • classpath browser • grimoire integration • dynamic
indentation • dynamic font-locking • nREPL session manager • Smart namespace reloading • ClojureScript support
Extensions (are easy)
Refactoring support (clj-refactor + refactor-nrepl)
Demo Time
CIDER tastes better than SLIME
CIDER tastes better than some IDES
None
Bulgarian Liberation Day 2016
CIDER 0.11 (Bulgaria)
Require Clojure 1.7+
Require Java 7+
Run all loaded/project tests
Enlighten
None
None
Auto-injection of CIDER’s dependencies
None
Clojure/west 2016
CIDER 0.12 (Seattle)
Conditional breakpoints
Step-in while debugging
Test result improvements
Zenburn & Solarized support
cider-auto-test-mode
Eldoc improvements
Display docstring on mouse hover
None
Totally reorganized menus
None
None
None
One more thing…
A Real Manual
A Real Manual
None
http://cider.readthedocs.org/
CIDER 0.13 (California)
Eldoc improvements
None
None
Unified evaluation commands keymap
C-c C-v something
cider-eval-sexp-at-point
C-c C-v (C-)v
Tracking of evaluated expressions
None
None
“See also” section in doc buffers
None
A cornucopia of small additions and improvements
CIDER 0.14 (Berlin)
Display spec in doc buffers
None
Re-run last test
C-c C-t (C-)g
The usual mix of bug fixes, small additions and improvements
What’s still missing?
•Find usages •Built-in refactoring tooling •Better ClojureScript support •Support for
the new Clojure socket REPL CIDER 1.0
Why CIDER?
Integrated Development Environment (a.k.a. IDE)
None
Emacs
None
None
None
None
None
Spacemacs
Emacs users know how to build productive Lisp workflows
•Emacs (ultimate Elisp dev env) •SLIME (and SLY) •Geiser •racket-mode
•CIDER (obviously)
• paredit • smartparens • rainbow-delimiters • rainbow-identifiers • sexp-fu
• paxedit • lispy
Community impact
cider-nrepl https://github.com/clojure-emacs/cider-nrepl
refactor-nrepl https://github.com/clojure-emacs/refactor-nrepl
compliment https://github.com/alexander-yakushev/compliment
cljs-tooling https://github.com/gtrak/cljs-tooling
nREPL improvements
Open development
None
None
158 contributors!
Please, send more help!
Дзякуй!
Felina