Hello Clojure — Workshop 101

Rollar Coaster, Disney Parks, Singapore by Divyendu Singh
Rollar Coaster, Disney Parks, Singapore by Divyendu Singh

Experience

Today I had my first real go at Clojure and thanks to the community it was a breeze. Apart from the content of the workshop being awesome, I had a real good discussions with clojureists and programming humans.

I like the idea of a homoiconic (read — data and logic have the same syntax), immutable, functional (albeit not purely) language.

Moreover, Clojure being a “lisp” and my interest is SICP (bear in mind that SICP is not about LISP but general software construction) makes for another reason as to why I was at the workshop.

Workshop

I will now briefly list of the contents of the workshop. https://github.com/inclojure-org/clojure-by-example

  1. Introduction Quick intro to Clojure syntax
  2. Small Beginnings Very basic data modeling and querying
  3. Small Functions Start building basic abstractions and composition.
  4. Data and Functions Playing further with Clojure ways of data transformation
  5. Control Flow Data processing and decision logic in Clojure
  6. Immutability and Functional Programming A look at the immutable nature of Clojure
  7. This example also has a tiny macro, which is a beautiful thing about LISP Full Functional Firepower
  8. A must checkout, this example discusses side-effects, boundaries and pure functions Boldly Go
  9. Package your Clojure code But Before We Go
  10. Reference links/videos/resources Community links and more

Takeaways

  1. My interaction with the Clojure community has been the best take away I had today — I felt welcomed. Highly recommended.
  2. Clojure conferences are a good mix of academia and practical computer science work.

Reference Links

Code with comments — master branch. Uncommented exercise code is in workshop-code branch.

https://github.com/inclojure-org/clojure-by-example/tree/master

Workshop setup instructions

http://inclojure.org/workshop.html

Parinfer Documentation

https://shaunlebron.github.io/parinfer/

Source code for LightTable editor — legend says this needs some help in maintenance

https://github.com/LightTable/LightTable

Side-effect, Boundaries, programming by wishful thinking

https://en.wikipedia.org/wiki/Side_effect_%28computer_science%29

https://www.destroyallsoftware.com/talks/boundaries

http://blog.adrianbolboaca.ro/2016/04/programming-by-wishful-thinking/

https://www.destroyallsoftware.com/talks

And lastly, an article I wrote a while back about software (this article did very well, would love to hear the opinion of Clojure community on this)

https://divu.in/writing-effective-software-137ac3c3c7c1