PurelyFunctional.tv: How did you get into Clojure?
Zach Oakes: About 5 years ago I was working in a federal government cubicle, doing everything from PHP to C++, and was in a pretty wicked emotional malaise. After quitting like a gangsta, I went home to rural PA. I started a few side projects that required Java, and soon learned that other languages could run on the JVM. For something as different as Clojure, you can either have an allergic reaction or be drawn into it; for me, it was the latter.
PF.tv: What is your talk about?
ZO: I’m making a new editor, called Nightlight, that runs inside of your Clojure(Script) projects. I think the design is really unique and has some legs. I’m also going to talk about Nightcoders.net, a hosted version of Nightlight that allows you to build projects without installing anything locally. Either these will be a great way to learn the language, or part of a graveyard of editors I’ve built to quench an odd obsession. Time will tell.
PF.tv: Who is your talk for?
ZO: My tools usually appeal most to beginners, but enough about them. I want to reach out to people like me — professional beginners. By that, I mean experienced programmers who aren’t infatuated with tools and still write intentionally stupid code. Too many people get caught in a local optimum, spending a ton of time configuring tools and writing overly abstract and ornate code. I’m the guy that leaves all the defaults on and copy/pastes stuff everywhere. Join me, my people.
PF.tv: What do you hope people will take away from the talk?
ZO: I want to show that it’s not a coincidence that the most interesting tools come out of languages like this. I’ll show several examples of why the tools I’m making would be extremely hard to do in other languages. For a tool maker, the homoiconicity and dynamism of Clojure gives it the flexibility of oil paint. I’m basically Bob Ross out there and that’s not even an exaggeration.
PF.tv: What concepts do you recommend people be familiar with to maximize their experience with the talk?
ZO: A few cool things in the Clojure world that I’ll touch on are Parinfer, a new editing mode, and Boot, a new build tool. I would recommend looking into both, as I’ll be singing their praises but won’t have much time to get into detail about them. Other than that, there isn’t much to become familiar with. This isn’t one of those talks that will make you feel dumb. I mean it might, but that’s on you.
PF.tv: What resources are available for people who want to study up before the talk?
ZO: For my tools, the best way to understand them is to just use them. Try out Nightlight by following the instructions on https://sekao.net/nightlight and go to http://nightcoders.net to try the hosted version. You can talk to other users on the /r/Nightcode subreddit, but mostly it’s just me making announcements and hearing crickets.
PF.tv: Where can people follow you online?
ZO: Haha, good luck. I’m a bit old-fashioned and the only place you will consistently see activity from me is on Github, as oakes. I’m on Reddit with the same name. I have a Facebook, but only because Tinder required it. I can’t think of much else. Talk to me in person, at ClojureD!
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
ZO: I’m doing a lightning talk on my new game library, play-cljs. Despite the name, it doesn’t have much in common with its older sibling, play-clj. I’ve become more interested in making games that run in a browser, and the new library has given me the opportunity to fix some design issues that my younger self made in the old library. As always, you can help out with any of my stuff by sending a pull request or making an issue.
PF.tv: Where do you see the state of Clojure in 10 years?
ZO: I think the real growth will happen with ClojureScript. On the backend, there are a lot of great choices that compete with Clojure, but on the frontend, nothing really compares. With Reagent, core.async, and language-level features like immutable data, macros, spec, and painless JS interop, I think it’s on a different level. That could bring about a virtuous cycle where people use Clojure on the backend for the sake of code-sharing. As Conor McGregor says, "I predict deez tings".
PF.tv: If Clojure were an animal, what animal would it be?
ZO: It’d be a gorilla, and some dumb kid is gonna fall into its cage and force the zookeepers to shoot it. And then we will have to go back to Java and PHP.