# REPL-Driven Development: Clojure's Superpower

**URL:** https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858
**Category:** Talks
**Tags:** repl
**Created:** [November 24, 2020, 6:30pm UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858 "2020-11-24T18:30:17Z")
**Posts on this page:** 15
**Page:** 2

<div class="post-metadata">

### Author: ![Clojurenoob](https://clojureverse.org/letter_avatar_proxy/v4/letter/c/eb8c5e/32.png) [@Clojurenoob](https://clojureverse.org/u/Clojurenoob)
#### Post date: [December 2, 2020, 4:18am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/21 "2020-12-02T04:18:15Z")

</div>

Oh sounds cool, thanks Sean!

---

<div class="post-metadata">

### Author: ![didibus](https://clojureverse.org/user_avatar/clojureverse.org/didibus/32/951_2.png) [@didibus](https://clojureverse.org/u/didibus)
#### Post date: [December 2, 2020, 6:26am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/22 "2020-12-02T06:26:35Z")

</div>

Made me try Reveal, really like it, its sleeker than REBL, I’m most likely gonna switch to it, and it’ll probably replace my Cider REPL window, and my use of Cider inspector.

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [December 3, 2020, 3:17am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/23 "2020-12-03T03:17:11Z")

</div>

I have updated my [dot-clojure repo](https://github.com/seancorfield/dot-clojure) with a new alias (`:dev`) and a `dev.clj` script file that can start various REPLs, including Cognitect’s REBL, @vlaaad’s Reveal, and @bhauman’s Rebel Readline – depending on what is on your classpath.

Thanks to some digging around by @didibus, that script can combine Reveal and Rebel Readline, so you get a nice, rich REPL to type into (yeah, I know, I don’t do that but…) and everything is displayed in Reveal (plus anything you `tap>`).

When it starts Reveal, it also adds in some auto-table-view code, so anything you `tap>` into Reveal is automatically displayed in a table view, along with its metadata, and that view updates automatically every time you `tap>` something.

---

<div class="post-metadata">

### Author: ![bsless](https://clojureverse.org/letter_avatar_proxy/v4/letter/b/6f9a4e/32.png) [@bsless](https://clojureverse.org/u/bsless)
#### Post date: [December 3, 2020, 9:22am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/24 "2020-12-03T09:22:29Z")

</div>

Didn’t Erlang solve the problem of continuous (and atomic) deployment? Perhaps we can pilfer some ideas

---

<div class="post-metadata">

### Author: ![practicalli](https://clojureverse.org/user_avatar/clojureverse.org/practicalli/32/3157_2.png) [@practicalli](https://clojureverse.org/u/practicalli)
#### Post date: [December 3, 2020, 10:12am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/25 "2020-12-03T10:12:04Z")

</div>

It will be interesting to see the commonalities and differences between Sean’s approach and mine. I hope more people share… Here is my general approach with Spacemacs

Video: REPL driven development in Clojure with Spacemacs

[![](https://img.youtube.com/vi/NDrpclY54E0/maxresdefault.jpg "REPL driven development with Clojure using Spacemacs, CIDER and clj-kondo") ](https://www.youtube.com/watch?v=NDrpclY54E0)

A 30 minute video showing how to develop a simple random function generator project in Clojure using REPL driven development with Spacemacs.  
Spacemacs is a community configuration for Emacs and uses the CIDER project for its Clojure development environment.  
The project uses Clojure CLI tools to run the REPL and uses the practicallli/clojure-deps-edn user configuration to access a range of community tools.  
clj-kondo is used for static analysis, providing live linting as code is typed.  
[Practicalli Spacemacs - Practicalli Spacemacs](https://practicalli.github.io/spacemacs/) also covers more general usage of Spacemacs and using the very powerful Vim-style editing approach.

---

<div class="post-metadata">

### Author: ![Clojurenoob](https://clojureverse.org/letter_avatar_proxy/v4/letter/c/eb8c5e/32.png) [@Clojurenoob](https://clojureverse.org/u/Clojurenoob)
#### Post date: [December 3, 2020, 11:19am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/26 "2020-12-03T11:19:45Z")

</div>

Cool thanks might see if I can get that up and running before your talk, but I’m still not understanding how to put stuff on my classpath, currently learning Java as well now.

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [December 3, 2020, 11:38am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/27 "2020-12-03T11:38:38Z")

</div>

Your dependencies (in lein’s project.clj file or the CLI’s deps.edn file) are what ends up on your classpath, plus your source / test code.

---

<div class="post-metadata">

### Author: ![Clojurenoob](https://clojureverse.org/letter_avatar_proxy/v4/letter/c/eb8c5e/32.png) [@Clojurenoob](https://clojureverse.org/u/Clojurenoob)
#### Post date: [December 4, 2020, 4:57am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/28 "2020-12-04T04:57:37Z")

</div>

Ah OK thanks Sean, that probably leads me to the next thing that confuses me though - in an earlier version of your deps file it was pointing to REBL in a local folder but in a later version you had it pointing to a repository I think? Or a server? Not quite sure as that is the bit that confuses me. I think I will need to learn about Maven and Java repositories to understand better. I didn’t know how to replicate that on my machine so just stuck with your old deps file.

I think that was when you were using Xlaunch but I guess you’ve done away with that now you are using VS Code + Clover.

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [December 4, 2020, 5:39am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/29 "2020-12-04T05:39:40Z")

</div>

Re: REBL – for several releases, you had to download the REBL JAR manually (and therefore point your dependency at that downloaded file), then Cognitect made it available via a repository (so your dependency needed to point to the repository). I’m no longer using REBL (but you can still use it, via a local JAR or a repository).

Xlaunch (VcXsrv) is nothing to do with that (per se), nor is it anything to do with VS Code/Clover or Atom/Chlorine. It’s a Windows program that lets you run X11 apps (such as REBL or Reveal) from WSL2 but have it display on Windows.

---

<div class="post-metadata">

### Author: ![Clojurenoob](https://clojureverse.org/letter_avatar_proxy/v4/letter/c/eb8c5e/32.png) [@Clojurenoob](https://clojureverse.org/u/Clojurenoob)
#### Post date: [December 4, 2020, 7:17am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/30 "2020-12-04T07:17:09Z")

</div>

Ah OK, thanks for the clarification 🙂

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [December 14, 2020, 11:44pm UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/31 "2020-12-14T23:44:42Z")

</div>

A reminder that the first run of this talk is tomorrow, Tuesday, December 15th at 6 pm Pacific. Feel free to post any last requests for things to show in the demo portion. The second run will be Tuesday, January 12th at 10:30 am Pacific.

---

<div class="post-metadata">

### Author: ![mvarela](https://clojureverse.org/user_avatar/clojureverse.org/mvarela/32/1478_2.png) [@mvarela](https://clojureverse.org/u/mvarela)
#### Post date: [December 15, 2020, 6:21am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/32 "2020-12-15T06:21:17Z")

</div>

@seancorfield, do you know if this one will be recorded? The timezone mismatch it too high, and I’d love to see this before the scicloj one, if possible (just not to wait another month).

---

<div class="post-metadata">

### Author: ![seancorfield](https://clojureverse.org/user_avatar/clojureverse.org/seancorfield/32/195_2.png) [@seancorfield](https://clojureverse.org/u/seancorfield)
#### Post date: [December 15, 2020, 6:33am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/33 "2020-12-15T06:33:58Z")

</div>

Yes, it will be recorded, but the video won’t be posted until after I’ve also given this talk to the London group (which will also be recorded). The two different TZs mean most people should be able to attend live, I hope!

---

<div class="post-metadata">

### Author: ![mvarela](https://clojureverse.org/user_avatar/clojureverse.org/mvarela/32/1478_2.png) [@mvarela](https://clojureverse.org/u/mvarela)
#### Post date: [December 15, 2020, 7:04am UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/34 "2020-12-15T07:04:46Z")

</div>

Ok, gotta wait, then 🙂

---

<div class="post-metadata">

### Author: ![system](https://clojureverse.org/uploads/default/original/2X/5/51079bf9e4b7d9466242c06cf1e43b9f8bd6da14.png) [@system](https://clojureverse.org/u/system)
#### Post date: [June 15, 2021, 7:04pm UTC](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858/35 "2021-06-15T19:04:50Z")

</div>

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.

[Previous page](https://clojureverse.org/t/repl-driven-development-clojures-superpower/6858.md?page=1)
