April 06, 2015
Soren Macbeth's talk at Clojure/West is about data crunching in Clojure.
Background
Clojure's prowess in the world of data and distributed systems is pretty awesome. This talk is about two open source libraries for crunching lots of data in Clojure. One is called marceline, the other is flambo. Both are wrappers for distributed computation libraries. For background, you may want to watch a talk by Nathan Marz on Storm.
Homepage - Twitter - GitHub

This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 06, 2015
Timothy Gardner and Ramsey Nasser's talk at Clojure/West is about Arcadia, the integration of Clojure and Unity 3D.
Background
It took a lot of work to get Clojure running with Unity 3D. For one, Unity 3D is based on .NET, so the version of Clojure for the CLR had to be updated and retrofitted to work with it. But Unity 3D is a very popular game engine that exports to lots of major platforms, including consoles. This gives Clojure an inroad into even more systems. I've always wanted to program games, and this gives me hope that I'll do it one day.
For background, the two speakers have given several talks about Arcadia. At Strange Loop 2014, at CodeMesh 2014, and at the Clojure NYC Meetup.
Homepage - Twitter - GitHub

Homepage - Twitter - GitHub

This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 06, 2015
Sean Johnson's talk at Clojure/West is about pattern matching in Clojure.
Background
The built-in pattern matching in Clojure is not as powerful as in Haskell and Erlang. But, being a Lisp, it's easy to write a pattern matching macro. Which has been done, it's called core.match, and it's great. This talk is an experience report from using pattern matching in Clojure. Check out Pattern Matching & Predicate Dispatch, a talk by core.match's creator, David Nolen.
Homepage - Twitter - GitHub

This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 06, 2015
Tom Faulhaber's talk at Clojure/West is about generating Excel sheets in Clojure.
Background
People are using Clojure for some really interesting work. This one is about using Excel as an output format. It's richer by far than CSV, and it can let non-programmers explore data in a way no other tool can. Tom Faulhaber has created a library for filling in Excel templates with Clojure data. See his blog post for more info.
Homepage - Twitter - GitHub

This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 06, 2015
Ron Toland's talk at Clojure/West is about large-scale Clojure systems.
Background
I detect a theme in the Clojure/West talks. Clojure has been around almost eight years now. We're starting to see companies that have mature Clojure codebases. And they are wanting to talk about them.
This talk seems to go with that theme. Sonian has been using Clojure for six years and they want to share how they build their services. As background, I have to again suggest Reflections on a real-world Clojure application. Unfortunately, there isn't much out there right now. I am very much looking forward to these talks being published.
Homepage - Twitter - GitHub

This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 05, 2015

Introduction
Colin Fleming generously agreed to do an interview about his talk at Clojure/West. The background to the talk is available, if you like.
Interview
LispCast: How did you get into Clojure?
Colin Fleming: Several years ago I was working in Java on online transaction processing systems. I was interested in the promise that Clojure had to make such systems easier to work with, in particular the concurrency aspects. I also liked Clojure philosophically, a lot of the ideas behind it really resonated with me.
I really wanted to use IntelliJ since I use it all the time and love it, but the existing plugin for it was fairly immature. I ended up porting a lot of it from Java to Clojure and that became Cursive, which is still the main Clojure project I've worked on.
LC: This year you're talking about debugging in Cursive. I never run an interactive debugger in Clojure, mostly because I don't have one readily available. I do remember using one in Java all the time. What am I missing?
CF: I use the debugger in Cursive pretty much every day, probably in a similar way to which you used to in Java. Cursive's debugger is basically IntelliJ's JVM debugger so it works in very much the same way with some Clojure-specific extensions. So you can stop at breakpoints, step, evaluate Clojure expressions, have conditional breakpoints where the conditions are Clojure expressions and all that. I'm working on some more Clojure-specific functionality like having a REPL running when stopped at a breakpoint too, which I think will be pretty nice. That said, the current expression evaluation works pretty well, and you can interactively inspect the returned objects and so on.
An argument I hear a lot is that a debugger is not required when you have a REPL, since you can interactively test parts of your application more easily. I think it's definitely the case that the REPL allows some of the exploration of a live system that previously required a debugger, but I've never understood why you wouldn't want both. All my work is on Cursive, where I'm integrating with a massive framework that I don't understand well, it's written in Java and is totally stateful so it's actually pretty tough to test at a REPL like that sometimes. The debugger is critical to being able to see what the framework is doing, working without it would be much harder than it is.
LC: Is the debugger ready for prime time? If not, what is left?
CF: Yes, definitely - it's all working pretty well now. That said, nothing is ever totally done, I still have improvements I'd like to make to it. Performance is sometimes an issue, because the JDI really likes you to know the exact name of the class you're working with. That's basically impossible to predict from source code in Clojure so you end up having to filter through a lot of classes. I hope to be able to improve that somewhat. Recent versions of IntelliJ also added functionality which displays the results of evaluated expressions right in the editor while debugging, similar to Light Table's inline REPL evaluation. Cursive doesn't support that for Clojure code yet, but I'll fix that soon. And a fair amount of Java leaks through in the UI since it's based on IntelliJ's Java debugger - variables are displayed with their mangled names, and so on. JetBrains are actually in the process of migrating their Java debugger from an old proprietary framework to a new language-agnostic one that they use to develop debuggers for other languages. Once that's complete hopefully I can tidy that up.
LC: You're really making me want to jump into Cursive. I used to use the debugger all the time. Basically, I'd write code unsure of what it would do, and just jump in and see. That was in Java, so there was still a long compile step. Is that better in Cursive since it's an interactive compiler?
CF: Sure, using Cursive you can debug an arbitrary script which will just have the standard Clojure script startup time, or even better you can debug a REPL session. This means that you can put breakpoints in your code, and when that code is hit by whatever you're executing in your REPL it'll stop. I use this a lot when running tests and trying to figure out why a particular test isn't working. Cursive takes care of disabling locals clearing when running like this, and there's also a toggle button in the REPL toolbar for it which you can use when connecting to a remote JVM.
LC: Where can people follow you online?
CF: The best way to get updates about Cursive is on Twitter or on the mailing list. I also have a personal Twitter handle, but that mostly serves to collect fans of the Scottish tennis player. They must be quite confused by my occasional tweets.
LC: If Clojure were a food, what food would it be?
CF: I'm going to go with blue cheese. It's a taste that you have to acquire, but once you do there's nothing better!
This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 05, 2015

Introduction
Melanie Mitchell generously agreed to do an interview about her talk at Clojure/West. The background to the talk is available, if you like.
Interview
LispCast: Do you program in Clojure? If not, have you heard of it? If so, how did you get into it?
Melanie Mitchell: No, I don’t program in Clojure, though I did write the code for my Ph.D. dissertation project in Common Lisp. I have heard of Clojure, since I’m interested in functional languages, and also some of my students have been programming in it.
LC: I'm no expert in AI, but I've always seen three big approaches. There are the two Peter Norvig approaches, namely the rule-based approach and the statistical approach. And then there was the approach laid out in Fluid Concepts and Creative Analogies, which was much more about building a system that was unpredictable but whose emergent behavior was reminiscent of human intelligence. The rule-based approach has been dismissed as too brittle. And the statistical approach has had broad impact. I have to admit that I haven't heard much about the third approach in a while. Could you talk about it briefly and some of the recent advances?
MM: You’re right -- statistical machine-learning approaches have recently seen some huge successes in applications such as object-recognition, image captioning, speech-recognition, and language translation. The major ideas behind statistical machine-learning approaches, including so-called "deep networks", have been around for a while. Let's use the example of visual object-recognition. The idea is that a system is presented with many images of the concept it is supposed to learn, e.g., "dog", along with many "non-dog" images as well, and the system essentially learns how to map images into a high-dimensional "feature" space in which dog images are close to one another and non-dog images are far from dog images. The "statistical" aspect comes in because the visual features used can be statistical in nature, and also statistical methods are used to find the best mapping.
So why have these methods only been so successful recently? It seems that the success is due to the fact that we now have access to huge amounts of data to train these systems, as well as very fast parallel computing methods to perform the training. These kinds of methods have become very successful in tasks such recognizing faces and specific objects (e.g., "dog") in images.
The problem with these kinds of purely statistical methods is that, it’s hard -- maybe impossible -- to learn to recognize more abstract visual situations, such as "taking a dog for a walk" or "training a dog" or "a dog show". Such situations consist of multiple objects that are related to one another in specific ways -- e.g., "taking a dog for a walk" typically consists of a person, a dog, and a leash, which have specific kinds of spatial and action relationships to one another. Moreover, there are lots of "dog-walking" situations that do not fit the prototype -- e.g., a person walking multiple dogs, a person "walking a dog while riding a bike", a person running rather than walking, etc. etc. Humans are of course very good at learning to recognize abstract situations in a flexible way -- to allow "slippages" from a prototypical situation.
The general architecture described in Fluid Concepts and Creative Analogies has been termed the "active symbol" architecture. The idea is that statistical methods interact with a network of symbolic-level structured activatable concepts. The activity of concepts in the network controls, and is controlled by, stochastic agents that bridge the gap between symbolic knowledge and statistical features. The various chapters in Fluid Concepts and Creative Analogies describe how this architecture was developed for "micro-domains", such as letter-string analogies. I'm now extending this architecture to interface with deep network approaches for the task of visual situation recognition. This is what I will describe in my talk.
LC: Is there any background material you would suggest people read/watch before the talk?
MM: I’ll try to make the talk as self-contained as possible, but if people are interested, they might want to read a (somewhat long) chapter from Fluid Concepts and Creative Analogies, which I’ve put online. This describes the Copycat analogy-making project in some detail.
LC: Where can people follow your work online?
MM: I have a web page on this project. This is where I will be posting papers and updates on the project.
LC: If Clojure were a food, what food would it be?
MM: Cream. (Because you put it on top of Java...).
This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 05, 2015
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!
Ryan Neufeld's talk at Clojure/West is about Simulation Testing using Simulant.
Background
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.
Homepage - Github - Twitter

Ryan is the co-author of: Clojure Cookbook
You might also like
April 05, 2015
Robert Krahn's talk at Clojure/West is about cloxp, an implementation of some important ideas from Smalltalk in Clojure.
Background
Back in the sixties, some computer researchers were trying to make a system that you could have a conversation with. The user, of course, would be intelligent enough to hold up their end. But the researchers did not know how to make the computer hold up its end. The researchers compromised and decided to expose the entire contents of the system's memory and represent it visually on the screen. Every object would have at least a primitive visual form, while others would be richly interactive elements. That way, the user could at least interpret it for themselves. The end result was the ancestor of the GUIs we use today.
But the GUIs we use don't have that property of exposing the contents of memory to inspection. The objects on the screen are not direct representations of the objects in memory They are separate constructs. Cloxp aims to bring the inspectability and directness from Smalltalk to Clojure. Check out the intro page, which has a nice long explanation and a demo video, with links to more background.
Homepage - GitHub - Twitter

This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like
April 04, 2015
Priyatam Mudivarti's talk at Clojure/West is about creating responsive grids with Garden.
Background
Most web shops use a so-called CSS Preprocessor, which means a language that transpiles to CSS. These preprocessors typically add variables, rule nesting, and a few more features to fill out the holes in CSS.
Garden is a Clojure library which converts well-formed Clojure data structures into CSS. What this means is that your Clojure (and ClojureScript) code can generate the CSS dynamically, with the full richness of Clojure behind it. Variables come free, because Clojure has variables. But Clojure also has lambdas, which is not possible in any preprocessor I've ever seen.
At the same time, making a responsive grid is a huge undertaking. Lots of projects promise to do the hard work for you. If it could be done easily using a more powerful language, we would not have to rely so much on these frameworks. Priyatam Mudivarti is going to talk about how to make responsive grids using several techniques. He has created a nice repo containing an exploration of several types of grids.
Homepage - GitHub - Twitter

This post is one of a series called Pre-West Prep, which is also published by email. It's all about getting ready for the upcoming Clojure/West, organized by Cognitect. Conferences are ongoing conversations and explorations. Speakers discuss trends, best practices, and the future by drawing on the rich context built up in past conferences and other media.
That rich context is what Pre-West Prep is about. I want to enhance everyone's experience at the conference by surfacing that context. With just a little homework, we can be better prepared to understand and enjoy the talks and the hallway conversations.
Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.
You might also like