IMG_20160720_195528 Measure of similarity between concepts
IMG_2820 Students and instructor at the Clojure Bridge
From right to left: one of the Clojure Bridge instructors, Nola (standing), students Paige, Cristina, and others at Rackspace, which hosted the workshop.
Clojure Bridge is a workshop for women and underrepresented minorities in software development to learn the Clojure programming language. As a functional programming language Clojure is quite different from imperative programming languages that most developers are familiar with. So Clojure Bridge starts with the simplest programming concepts, unlike, for example, a similar workshop Rails Bridge (which was the one that started the trend of the "Bridge" workshops).
In Austin, Clojure Bridge took place on March 13-14 of 2015 and was hosted by Rackspace. The evening of Friday, March 13 was the installfest, when the students got together to install the software needed for the workshop on their laptops, including the Lighttable editor, which has Clojure support. The main day of the workshop was Saturday, March 14, and it coincided with the more-remarkable-than-most Pi Day, when (at least in the American date notation) pi digits matched to the 4th decimal position (3.1415). We marked the moment when the hour and the minute also aligned with the further digits of pi.
Since this was 2.5 years ago, the only things I remember about it now was that Clojure consists either entirely of functions, or entirely of lists, or both. All of that is nested among lots of parentheses, like in LISP, which Clojure was based on. I did not continue learning Clojure after this workshop -- instead, I got into another functional programming language, Haskell. Anyway, the first two hour of exercises involved combining those lists of data and function calls among parentheses in such a way that the functions would get applied to lists in just the right way. And, in the spirit a functional programming language, it won't let you to change values of variables. So you have to compose functions, passing the output of one as input to another -- another essential feature of functional programming languages.
Turns out that as imperative programmers, we are slow at first to wrap our heads around it. The last of those exercises required you to get just the certain values out of a list of pairs, apply some transforms to it, feed it into some functions to get a different list, compute some values off of it, and something like that. About half of the students got stuck on this exercise -- I guess there were too many parentheses to conquer. And then there was lunch time, catered by sponsors.
After the lunch break one of our instructors, Nola, showed us some graphic programming with Clojure. For that one needed to use a text editor called Lighttable, and it didn't work well for me on Windows (most people had Macs, however). Many were able to follow along, at least for a while, but at the end it was just Nola performing impressive live-coding feats.