Learning Trail - olange/learning-clojure GitHub Wiki
I'm not maintaining this learning trail actively. Still I'm learning every day about Clojure. See also the Datomic Learning Trail.
08.06.2015 · Video «Functional Programming» (Paris)
- Watched Functional Programming using Java, Clojure and Scala by Neal Ford, video 3h46m, O'Reilly Media
### 23-25.04.2015 · Video «Clojure Inside Out» (Iceland)
- Watched Clojure Inside Out by Stuart Halloway and Neal Ford, video 5h52m, O'Reilly Media
### 11-12.04.2015 · Fragments (Iceland)
- Traversing, iterating, visiting trees in Clojure: clojure.zip, clojure.walk, tree-seq and Tree visitors in Clojure (IBM developerWorks, Alex Miller)
- The Joy of Clojure Chapter 17 (pp. 423-436 + 447-454) Clojure changes the way you think: Thinking in the domain, Testing, Error handling and debugging
### 08.04.2015 · Schema
- Reread Prismatic Schema description and examples in depth
### 23-24.01.2015 · Top-down style testing with Midje
- Clojure TDD demo (Robozzle) video, 43 min. Brian Marick demonstrates TDD in Clojure using a top-down style and greater abstraction, implementing the Robozzle game
- The idea behind top down development
- Describing one checkable's prerequisites
- Metaconstants
- Top down testing
- Data prerequisite
- Midje – A tutorial introduction the link «Top-down development and the logical structure of programs» at the end leads to the top-down style of testing
21-23.10.2013 · Lambda Next Clojure Training, Geneva
- Clojure Training with Christophe Grand and Edmund Jackson
08.09.2013 · Genève
- Watched Clojure 1.2 Protocols Stuart Halloway, 25.04.2012 (video, 27 min.)
05.09.2013 · Neuchâtel
- Struggling with the promise of «dynamic languages»: testing small bits of code in the REPL still requires setting up a data context and requiring all namespaces; I'm using various bits of data frozen in EDN
- Read articles Prismatic Schema and Schema for Clojure(Script) Data Shape Declaration and Validation; Prismatic Schema provides optional validation and descriptive schemas
- Installed Drip for faster JVM startup time; speeds up a bit the
lein do clean, checkandlein midjethat I run occasionally out of the REPL before committing (as Midje's(autotest)can have removed functions still available); maybe Stuart Sierra'stools.namespaceand suggestions might help me
### 04.09.2013
- Pivoting the Accounting Engine's design: factoring out high level «operational» functions to build and operate on the journal, provided with the accounting context; «data factory» functions provide the data bricks, in the shape asked, independently of any accounting context. Tried to go as far as possible with these simple bricks; but to factor simple transactions with foreign currencies, exchange difference transactions, and opening balances, access to the chart of account (currencies of accounts) and base currency of the accounting was required; these high-level «data factory» functions will now operate in a separate layer, which is provided with the accounting context.
- EuroClojure 2013's program still not online; yet I already bought my airplane ticket to Berlin, impatient to learn more about Clojure and meet experienced practitioners.
03.09.2013 · Neuchâtel
- My Worldflow Reloaded Stuart Sierra, 04.06.2013 good read
- Narcissistic Design Stuart Halloway «10 easy steps to complex code and job security»
- Clojure Simplicity Stuart Halloway, 140 slides, PDF
### 20.08.2013 · Neuchâtel, studying
- Generating entity unique IDs: Generating Unique IDs (Clojure Cookbook), squuid tradeoffs? (DAtomic Google Group)
05-07.08.2013 · Neuchâtel, studying
- Programming Clojure Book: read chap. 6 ‹Protocols and Datatypes› and chap. 8 ‹Multimethods›
- Study of clj-time, Clojurewerkz Money, Joda Time and Joda Money librairies
31.07.2013 · Neuchâtel, looking for a test framework
- Midje · A tutorial introduction Midje seems widely in use by and has many supporting plugins; less familiar to me; has an autotest feature
lein midje :autotestas well as a mixed REPL/autotest featurelein repl; (use 'midje.repl); (autotest); nice - Midje · The idea behind top down development
- Stereotype a Clojure library for providing a clean way of setting up test data; nice
- Speclj · Tutorial RSpec like testing framework, which I am familiar with; has an autotest feature
lein spec -a - ClojureGiven ClojureGiven is a port of Jim Weirich's rspec-given BDD test framework to Clojure (Given/When/Then notation)
- Clojure Lazytest provides auto-replaying of tests when source files change; not under active development anymore, but feature available to Midje
- Leiningen Profiles how to declare plugins, such as Lein-Midje or Lein-PPrint, in a global user profile
~/.lein/profiles.clj
### TODO
- Session Clojurassic
- Toolbox
- Suite lecture
08.06.2013 · Geneva, studying Clojure
May was a passionate and busy month, with little room for studying; this saturday afternoon, I sat under an old tree, in the old town, at the terrace of Café du Perron, quietly enjoying the soft wind, falling leaves, warm coffee and reading...
- Programming Clojure Book: re-read the start of and finished chap. 3 ‹Unifying Data with Sequences›
- edn · extensible data notation the spec that describes edn, «a superset of which being used by Clojure to represent programs, and being used by Datomic and other applications as a data transfer format [...]»
- Clojure Set API
- Clojure Inside Out video by Neil Ford and Stuart Halloway; watched chap. 1 ‹Introduction›
27.05 and 03.06.2013 · Clojurassic Group meeting in Geneva
- 03.06, pair programming with Patrick: walking and scraping ImmoStreet.ch website
- 27.05: we started a Flat Hunter project; each of us started scraping a website; Ajax-driven websites defeated some of our efforts; looked for solutions and found PhantomJS to the rescue
09.05.2013 · Geneva, studying Clojure
- Programming Clojure Book: finished chap. 2 ‹Exploring Clojure› and started chap. 3 ‹Unifying Data with Sequences›
- Did you know about some? article by Meikel Brandmeyer: «Every once in a while someone asks on the Clojure group why (contains? [:a :b :c] :a) returns false. [...] People always suggest to add a linear-search to Clojure. What they miss: linear-search is already there.»
- Alternatives to contains? thread on Clojure Google Group: « Sequential lookup is not an important operation. Clojure includes sets and maps, and if you are going to be looking things up you should be using them. [...]» concludes Rich Hickey
06.05.2013 · Clojurassic Group meeting in Geneva
- Learning to know each other (Stéphane, Robert, Marc-Elian, Cióran, Chrislain, Jacques, Vincent, Patrick, Olivier)
- Pair programming with Vincent: the absolute minimum of Clojure and a few 4Clojure exercices
02.05.2013 · Brown Bag with Patrick · Gōng-fu I/O alone
- 4Clojure Problems 1-23
- 4Clojure Problems 24-27
- Installed LightTable 0.4.1 4Clojure problem on the left, within a browser tab, Clojure Instarepl on the right: great!
### 29.04.2013 · Unimail, Geneva with Patrick
- Generating our project documentation with Codox and Marginalia
- Reading CSV files with clojure.data.csv
20.04.2013 · A day in Zürich
Drawing, studying Clojure. Nice discussion with Robert in Viadukt Restaurant, under the arches, near Freitag's containers, about creative endeavors and life paths. « One should do its creative work with passion and perfectionism -- today we have the means to reach those who might be interested; even if they are the 0.002% of some reference population » stated Robert. I agreed: « Do anything that is you, you care about, and you're interested in; do it completely; even if it does not reach out many people, it will have meaning, because it is you; and it'll bring you somewhere else, further in the unpexected. » Interestingly enough, the question of earning money was almost left out.
I also learnt about SixSQ Slip Stream, for automated, on-demand, creation of multi-machine runtime environments, versioning the creation of custom machine images based on certified base images. Robert works indeed with Marc-Elian, who initiated this project.
- Watched Peepcode's screencast Functional Programming with Clojure (direct link) video, 65 min.; interesting introduction to references and transactional updates to vars in a simple multiplayer/multithreaded game.
11.04.2013 · Gōng-fu I/O with David
Stormy evening in Geneva, solving 4Clojure problems:
- Problem 126 «Through the Looking Class (Brain teaser)» Take One
- Problem 92 «Read Roman numerals» Take One, Take Two, Take Three
- Problem 62 «Re-implement Iterate» Take One + Take Two
- Problem 46 «Flipping out» Take One
06-08.04.2013 · A week-end in Neuchâtel, exploring Clojure with Patrick
Cloudy weather, clear sky, perfect weather for study.
- Enlive-HTML Tutorial: scraping and templating with Clojure, very similar to XSLT+Cocoon pipelines, nice tutorial
- Fixed a typo in the HN URI with Patrick, committed the fix and added a pull request to the original tutorial
- Clojure Programming Book read Chapters 5 ‹Macros› and 6 ‹Datatypes and Protocols›, just enough to get a grasp of
(defrecord ...), (defmacro ...), (expandmacro ...), as well as bits of and Chapter 1 ‹Down the Rabbit Hole / The Reader› and 3 ‹Collections and Data Structures / Metadata› - Playing with LightTable and the REPL
- A few more Clojure Koans (8+9+10+11)
- Study of Enlive' source code
- Further exploration of metadata,
def ^{...} v, def v ^{...}, defn f ^{...}, meta / with-meta / vary-meta / (meta (var f))