Pre-West Interview: Ryan Neufeld

This summary was graciously written by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Talk: Simulant in Anger; an Experience Report

Ryan Neufeld's talk at Clojure/West is about Simulation Testing using Simulant.


Simulation Testing is a systems based testing methodology where a series of actions are randomized but repeatable and then the outcomes are recorded and observed. The actions can simulate realistic load on the system. The library for that in Clojure is Simulant.

Hear more information on episode 59 of the Cognicast where Michael Nygard talks about using Simulant. When researching this topic I found what looks to be a simple example testing an API with simulant.

About Ryan Neufeld

Homepage - Github

Ryan is the co-author of: Clojure Cookbook

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

![](/import/rn eufeld.jpg)


Ryan Neufeld is the next interview participant. He is giving a talk at Clojure/West about Simulation Testing. The background to his talk is available, if you like.

Interview with Ryan Neufeld

Nola: How long have you been doing clojure and how did you get into it?

Ryan: By my reckoning, I've been using Clojure professionally for about 2.5 years now.

How I got started is actually pretty interesting; I was hired by Cognitect (née Relevance) in early 2012 as a Ruby on Rails developer. Once the business shifted hard towards Clojure, I jumped at the first opportunity to get on with a Clojure client. My first Clojure project was with the most excellent Paul deGrandis, so it was a just a matter of letting osmosis take it's course. I haven't looked back since.

Nola: What suggestions do you have for someone getting started with clojure?

Ryan: Experiment liberally, and don't be afraid to make mistakes or "do it wrong." A breadth of experience with the language and its libraries is crucial for knowing what tool to reach for when it is finally time to get down to business.

For those seeking to make the jump to full-time Clojure, a word of career advice: Never pass over a job opportunity because you lack on-paper experience. Every company wants to hire a Rich Hickey to work with them, but in most cases, they'd be more than happy with a bright, passionate developer such as yourself. Just give it a shot---at worst, you'll get a no, at best, you could change your life!

Nola: Your talk is about Simulation Testing, is there anything like this in other languages? If yes, what advantage does the implementation in clojure have over other languages?

Ryan: Indeed there is. While Simulation Testing is novel to the Clojure community, it's been around for a number of years under various names; it's sometimes called model or agent-based testing, or just plain "simulation." I heard from a little bird that organizations like DARPA use the technique on nearly all of their projects.

There are a couple of big benefits to doing Simulation Testing in Clojure, however. First and foremost is Simulant. In addition to being a useful framework for running Simulation Tests, the way it segregates tests into phases makes tests both reproducible and amenable to new validations that you can bring to bare against old sim runs.

The second superpower Clojure brings to the table is Datomic. Given Datomic is a time-based fact-store, it is a nearly perfect fit for long-term, continuous-integration style simulation testing. With Datomic, very few of the validations I write involve procedural code; generally a simple Datomic query will suffice to detect abnormalities. Even better, it is trivial to query how test results have change over time.

Nola: What is the average airspeed velocity of an unladen Clojure REPL?

Ryan: Well, the bird is a little slow to get off the ground (Clojure start times, and all), but once she's airborne you're looking at about 2-4 Rubies (that's 10 Javas, in the imperial system).

Nola: Thanks for the interview. It was very informative.