Previous Episode: Ep 103: Explorify!
Next Episode: Ep 105: Codify!

We realize we're done exploring when all of the pieces fall into place.

Each week, we discuss a different topic about Clojure and functional programming.


If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.


This week, the topic is: "exploration cessation". We realize we're done exploring when all of the pieces fall into place.


Our discussion includes:

We fiddle at the REPL to explore Sportify!
What is random access exploration?
What are you learning as you explore?
How to interact with AWS and S3
Separating out operation instructions from execution
Maximizing side-effect free code
Handling credentials when fiddling at the REPL
Visualizing data when fiddling at the REPL
Practical tips on handling data in your fiddles
Why use the REPL when you have command line tools?
How does exploring via the REPL help you figure out the structure of your application?
How do you know what to factor in your application?
How to run external commands.
How do you transition from exploring to application development?
Why is hands-on experience with the data indespensible?
What are "exploring abstractions" vs "application abstractions"?
What is "data variance"? Why is it important?

Selected quotes

That's how I approach problems: you just keep going. Keep moving.

A fiddle is like a random access REPL.

A fiddle is just a file. We can put all the different bits of information—including data—in that one file. There's only one place to go back and look at when we pick up the project the next day.

Well, the MAM actually doesn't store the media. I feel like we were shortchanged!

It's the manager. It doesn't do the heavy lifting. When else have you seen the manager do the heavy lifting?!

Will our troubles never cease?!

There's constructing the request and then there's doing the request.

We're here to explore. We're not here to create bike sheds with bike sheds inside. Yes! This is not the place for abstractions.

We're building up enough language to help us with our exploration. Only write the functions that you need to help you learn more. As soon as you've learned enough, stop writing functions and move on. The point is to keep learning, not to keep abstracting.

You can use the command line, but it's worth doing in the REPL, because you're starting to actually explore the library too.

Utilitarian tends to win in the end. Things that let you get things done quickly. Those solutions are great solutions.

It's good to fiddle because you can play around with it. You can write it the wrong way four times, and get those out of your system before arriving at what you want to use.

The fiddle is here to help you figure it out.

We were doing all this exploring, and we stumbled into doing some actual work!

There's no better way to know you've arrived at the end of your exploring then when all of a sudden, the thing you're trying to do, is now finished!

Over the course of your exploration, you go from exploring to doing actual work. There's no seam between the two activities. Exploring dwindles down as you know more.

Your fiddle is turning into your recipe: a semi-automated way by hand. It's like you've stumbled into a working program.

You're still learning as you go through the process again and again. You're always learning.

You cannot overstate how important it is to experience the variance of the data by hand.

You think, "Oh! I see the pattern!", and then it's example seven that blows up your pattern. Then you think, "Oh, but now I know the pattern!", and then example fifteen blows it up.

You're getting a lot of direct experience with the process. That's going to help you make better abstractions for the application.

You're going to learn it sometime: either now or in the future. It's better to learn it now when you're in exploring mode than later when you're on the hook and your boss is breathing down your neck!

We've sent the asynchronous notification back to the work giver via the Outlook message queue.

It's fun to do the first 10, but after that, you probably want the computer to do all the heavy lifting for you.

Links

Sportify! series:

Ep 101: Sportify!
Ep 102: REPLify!
Ep 103: Explorify!

Cognitect AWS API
Amazonica
ffmpeg
clj-media
Babashka
babashka.process
babashka.fs

Twitter Mentions