Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
Apparently, LLMs are really good at using REPLs and give it the same advantages that it gives humans.
In the Vibe Coding book, @Steve_Yegge and I talk a little about the value of REPLs, especially for LISP languages/environments like Clojure and emacs.
I'm a bit startled to have Claude tell me how much it likes working with REPLs, especially compared to the "write/save/run workflow" and suggests that it gets a 12x speed benefit from using them. (!!)
Some background: Bruce Huaman @bhauman helped pioneer code hot-reloading in 2006 in ClojureScript, which was one of the inspirations to Dan Abramov and the JavaScript React community for React Hot Reloader and Fast Refresh.
He recently created Clojure-MCP, which allows an LLM to connect with live Clojure REPL.
I had a chance to use it to solve a problem recently, which was incredibly illuminating. When Google Photos API basically stopped working for me (because it no longer allows you to access photos that it didn't upload), I had to switch to @RhetTurnbull's osxphotos.
What was amazing to see Claude Code using a REPL just like a human would. So I asked Claude Code about what advantages it gave it when solving the problem, in contrast to the "write/save/run file workflow".
Its answer surprised me โย quoting its answer below!
REPL vs Write/Save/Run Comparison
REPL Workflow:
- Feedback Loop: 10-30 seconds per iteration
- Experimentation: "What if I try this AppleScript command?" โ immediate answer
- Error Recovery: See error instantly, fix in place, continue
- Data Inspection: (keys photo) โ immediate field list
- Function Testing: Write function, test immediately with real data
- Discovery: "Does this UUID format work in Photos.app?" โ test in 15 seconds
Traditional Write/Save/Run:
- Feedback Loop: 2-5 minutes per iteration (edit โ save โ run โ examine output) (This seems a bit overstated โย I'm guessing 15 seconds, tops. But, still!)
- Experimentation: Requires full program context, harder to isolate tests
- Error Recovery: Debug through logs, restart entire process
- Data Inspection: Add print statements, run program, examine output
- Function Testing: Build complete program flow before testing
- Discovery: Much slower hypothesis testing
The Compounding Effect
The real magic happened because each discovery built on the previous one instantly:
- Discovery 1 (30 seconds): Photos.app AppleScript works
- Discovery 2 (45 seconds): Need UUID/L0/001 format
- Discovery 3 (60 seconds): Export command downloads from iCloud
- Discovery 4 (90 seconds): Need to rename exported files
- Discovery 5 (120 seconds): Can handle errors gracefully
Total time to working solution: ~6 minutes
In write/save/run mode, each discovery would have taken 3-5 minutes, making the total time 15-25 minutes - and that's assuming no major debugging was needed!
The Psychological Factor (!!)
The REPL also kept me in "exploration mode" rather than "engineering mode":
- REPL: "Let me try this crazy idea..." โ immediate validation
- Traditional: "I need to design the whole solution first" โ analysis paralysis
The low friction of the REPL encouraged experimentation that led to the breakthrough of realizing AppleScript could force iCloud downloads.
When REPL Shines Most
This problem was perfect for REPL because it involved:
- Unknown APIs (Photos.app AppleScript interface)
- Data exploration (osxphotos structure)
- External system integration (macOS Photos app)
- Trial-and-error discovery (UUID format, export behavior)
The REPL turned what could have been a frustrating 2-hour debugging session into a smooth 10-minute discovery process!
#AdventOfCode day 25 is to write your own Mastodon server.
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
1/ Many will tell you why Python is great for teaching coding, so I'll tell you ways it's not.
State is a bad default. It should be legal but safe & rare. The arc of programming is long and bends towards immutability. Its early use creates messes (eg, "a variable is a box".) โต
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
One of the best ways to level up as a Clojure dev is to study the Java standard library.
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
I began fresh work on Maria.cloud this month, thanks to a grant from @cljtogether. Here's my first update: blog.maria.cloud/2020/09/30/โฆ
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
Thanks for following this twitter account for seven years since the last season of Parens of the Dead. Your impressive patience has paid off. It's time for a new season! Yay! ๐โ๏ธ parens-of-the-dead.com
Replying to @TangerineBank
@TangerineBank suddenly making 2FA mandatory and then only allowing a Canadian phone number for verification is insane! You have just locked a non-insignificant number of folks out of their accounts. All you had to do was allow a phone number or an authenticator app?
Neither of these things are technically difficult to do. This decision demonstrates a very serious deficiency in @TangerineBank's technical capacity. Which doesn't inspire confidence in your long term viability.
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
๐งต A bit of mythbusting around interactive development environments, dynamic languages, &c.
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
Matches Season 7 (2022.05.28-08.10 Compressed ver.)
So Matchโฆ
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
The Smalltalk community getting the software development process right in 1988. Meanwhile, many in industry and government are still *committed* to getting it wrong today. :(
Iโm gonna be in Toronto overnight to board a train in the morning and the hotel rates are absolutely unbelievable. If you live in Toronto and you got a couch Iโm all ears!
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
Pokรฉmon cards of the 1860s-70s #dalle2
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
cleaning out the basement and ran across a strange picture I must have drawn 30 years ago
don't know the context
Anything you do provides ample fuel for your inner critical voices, but if what you do is a part of your identity then that is special level of hell.
Let go. Youโre more than what you do.
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
On the 1st and 15th of every month, I try to release something cool...
...today, a sneak peek at PUKE PLANNER
The number of likes of this tweet will determine how hard I will work on this app
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
I managed to finish the #gmtkjam game! You help a monster get dice out of their bowel (yes) by solving puzzles. Hereโs the trailer
Bruce Hauman @[email protected] ๐บ๐ฆ retweeted
all that's happening here is:
- draw a 3 point line (place midpoint in the middle)
- offset the midpoint (down) based on the distance between the first and last point
- put the midpoint on a bouncy spring
- add curve
that's it!


















