Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
66
Weird Ruby (RubyDay 2024, Verona)
bbatsov
0
160
Sustainable OSS (Balkan Ruby 2024, Sofia)
bbatsov
0
160
Ruby's Creed (RubyDay 2023, Verona)
bbatsov
0
28
Victims of Complexity
bbatsov
0
320
Ruby 3.0 Redux (Spark Academy, Jan 2021)
bbatsov
1
270
Ruby 3.0 Redux (Pivorak 4.0)
bbatsov
0
480
The Elements of Programming Style (HackConf 2019)
bbatsov
0
200
The Groundhog Day Development Method (HackConf 2019)
bbatsov
0
290
Other Decks in Programming
See All in Programming
認証・認可の基本を学ぼう後編
kouyuume
0
250
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
140
Microservices rules: What good looks like
cer
PRO
0
1.6k
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
170
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
570
Cell-Based Architecture
larchanjo
0
140
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
180
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
130
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
270
TestingOsaka6_Ozono
o3
0
170
Featured
See All Featured
Abbi's Birthday
coloredviolet
0
3.6k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
100
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
First, design no harm
axbom
PRO
1
1.1k
It's Worth the Effort
3n
187
29k
The browser strikes back
jonoalderson
0
120
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
99
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
170
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
29
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
48
33k
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