My talk at Clojure Conj 2015

Tue, 17 Nov 2015 Permalink

I presented my "Clojure for Business Teams - Decomplecting Data Analysis" talk at Clojure Conj 2015 on Monday. I had some technical issues with my laptop in the beginning, but managed to get past them. The audience was incredibly patient and supportive. I really appreciate that.

The video of the talk has already been published on YouTube, and I've included a PDF of the slide deck that I used below (1).

Thanks to the awesome folks who organize Clojure Conj for inviting me to present. Do check out all the other great talks that they've posted also.


1. Conj talk slide deck (PDF)

Clojure and Decomplecting data analysis for business users

Tue, 15 Sep 2015 Permalink

TL;DR Data analysis has a lot of incidental complexity. Composable abstractions can help reduce this. Clojure solves this for developers, but can this be extended to business users who are non-coders? Developers want to continue writing programs in code, but business teams need ways to discover, configure and run them directly and independently. Could a Yahoo Pipes-like approach to data analysis bridge this gap?

Analyzing data with software tools is rife with incidental complexity (1) - by which I mean the myriad data formats and shapes, algorithms, APIs and programming languages that one has to wrangle with.

Clojure's functional abstractions and composability help dramatically reduce many of these incidental complexities - at least for developers. We are able to quickly build robust and reusable pipelines of data processing code and put them together in different combinations to tackle each, seemingly one-off, problem.

That's great for us. But, in most companies, Data Analysis cuts across many functional boundaries. We need to extend the flexibility in abstraction and composition beyond developers to business teams.

The average off-the-shelf data analytics tool for business users is either severely feature constrained in the name of ease-of-use, or profusely leaks its thinly wrapped programming language abstractions in the name of power. A savvy business user who needs something more expressive than Excel, without having to become a software engineer, doesn't have very many options. (2)

I care deeply about this problem, because I have personally experienced this pain point. As a dev lead supporting a business team I've seen simple report requests turn into multi man-week software projects. The business users were frustrated waiting for weeks to see their minor report requests. And the devs were unhappy having to work on pointless reports all the time.

Essentially, developers want to continue creating their core value as software abstractions in code, and business teams need to be able to discover, configure and run them directly and independently. The UNIX shell is a classic example of this from a bygone era when business users actually wrote shell scripts. But, we can do better than the stream of bytes abstraction of the UNIX pipes, and fix some of other shell problems along the way. (3)

At juxt.io, my co-founder Panch and I are working on this exact problem, which had dogged us in our past jobs. Our approach is to give business users a powerful and extensible platform, into which developers can directly contribute their code abstractions as content. Using a visual and interactive UX business users can drag and drop functional components onto a design canvas and wire them together and compose higher order functionality.

movielens-flow.png

Figure 1: juxt.io Interactive Data Analysis Workbench

Juxt.io builds upon ideas from previous systems like Yahoo Pipes, Apple Quartz Composer and MIT Scratch to create an interactive data analysis workbench in which Analytics, ML and Web API components can be composed together, using Clojure as the extension language and Clojure's rich data structures.

That's the really high level picture. I'll dive into more of the details about the implementation stack, and some of the challenges and learning in upcoming posts.

Thanks to Panch Chandrasekaran and Sujatha Jagannathan for their feedback on early drafts of this post.


1. Incidental (or accidental) complexity as opposed to the essential complexity of any given problem. See Fred Brooks' No Silver Bullet (wikipedia).

2. Yes, Excel has a Turing complete macro language but it's a huge leap from the worksheet's visual UX. There's also Excel-REPL, which is a nice idea but doesn't address the Excel side of the problem.

3. See UNIX Shell and The UNIX-Haters Handbook Chapter 8

clojure-mode and slime

Sun, 03 Mar 2013 Permalink

As a long time user of SLIME I was a bit disappointed to see clojure-mode 2.0 drop support for it in favor of nrepl. I looked into nrepl but found it to be not as feature complete as SLIME, at present. Also, I still work on some sizeable Common Lisp code, which relies entirely on SLIME, and I want to be able leverage any tooling work I do across all my projects – so SLIME wins.

As it turns out, it wasn't at all difficult to resurrect the SLIME integration code from clojure-mode 1.x and load it alongside the newer clojure-mode.

I've committed the clojure-mode-slime.el Emacs Lisp code into the following repo, along with some other Clojure/Emacs hacks:

http://github.com/kriyative/clojure-emacs-hacks

I hope this is useful to other SLIME die-hards in the Clojure community as well. Feedback and bug reports are most welcome.

Older posts

Sat, 02 Mar 2013
clojure, emacs, and docs redux
Wed, 20 Feb 2013
New Site
Sat, 28 Jul 2012
Emacs for Clojure - Part 2
Sat, 21 Jul 2012
Emacs for Clojure - Part 1
Sat, 26 Mar 2011
ECL for iOS update for ECL-11.1.1, Xocde 4, and SDK 4.3
Mon, 10 Jan 2011
clojurejs -- a Clojure (subset) to Javascript translator
Mon, 20 Dec 2010
Lisp functions as UI callbacks in ECL/iOS
Tue, 14 Dec 2010
ECL for iOS updated to work with SDK 4.2
Tue, 23 Mar 2010
Displaying a daily Org-mode agenda reminder in Emacs
Wed, 10 Feb 2010
Snapshot of ECL for iPhone
Fri, 29 Jan 2010
my other lisp blog
Fri, 29 Jan 2010
ECL on iPhone update
Tue, 29 Dec 2009
A lightweight `bind' macro
Mon, 14 Dec 2009
community funded clojure
Sat, 12 Dec 2009
ECL on iPhone (redux)
Sun, 21 Jun 2009
clojure, emacs, and javadocs
Thu, 11 Jun 2009
cynojure.aws -- amazon web services from clojure
Mon, 08 Jun 2009
cynojure - clojure library on github
Fri, 08 May 2009
sql and s-expressions
Wed, 06 May 2009
welcome to cynojure
Wed, 06 May 2009
keyword args in clojure