So I've just spent the last two days at EuroClojure, which was excellent. I met plenty of really great, really friendly and really smart people. It gave me plenty to think about, and inspired me to try and write and share more about my own experiences with Clojure.
To kick this off, for my own benefit as well as any readers, here follows a list of everything I made a note of to look into further, read or watch.
For a fuller set of notes from the conference, be sure to check out Phil Potter's notes.
Day One
- Fergal Byrne: Real Machine Intelligence with Neuroscience
- The devil's dictionary
- Russ Miles: Architectural Simplicity through Events
- Hierarchical temporal memory: a model of the brain
- Clortex: Hierarchical temporal memory in Clojure
- Logan Campbell: Using Clojure at a Post Office (Australia Post)
- Vlad for validations
- core.typed for optional type checking
- "Show people code to sell the benefits" - on Clojure vs Scala (or vs Anything else)
- http-kit's async http requests +
core.async for simple lightweight concurrency when calling downstream services
- On a new project, engage very early with the Systems/Ops team
- Get something delivered end-to-end as early as possible: pave the way for more
- App Dynamics
- metrics-clojure
- Tommy Hall: Escaping DSL Hell
- If you're writing a language, be sure to actually design it
- When you invent a DSL, people will want loops
- You're better off embedding in a real language than inventing your own
- Geomlab - DSL for learning, but dead-end as skills not directly transferrable
- CLJSFiddle
- Incanter - example of a great DSL embedded in clojure
- Try doing SICP in ClojureScript
- ClojureScript (and Clojure) need a much better day zero experience
- Paul Ingles: multi-armed bandit optimisations
- Its far easier to compare relative values, than to evaluate absolute values
- Multi-armed bandit is about exploration vs exploitation
- Thompson sampling models results so far into a probability distribution used to select the next value
- Tommi Reiman: JSON APIs
-
ring-middleware-format: possible alternative to ring-json
- schema.contrib: extra validations for prismatic's schema
- integrity.human: translate schema errors into end-user-friendly ones
- swagger-ui: Swagger is a bit like WSDL for REST, this generates great looking api docs
- ring-swagger: Helper functions to attach swagger docs via schema to ring handlers
-
compojure-api: Macros to wire up ring-swagger to compojure routing
- ring-http-response: nicer helper functions for ring responses
- Dave Golland - Wiring Prismatic's API with fnHouse and Coax
- Rich Hickey: Some core.async internals
- Channels are just a conveyor belt
- Use put! to throw stuff into a channel from the main thread
- There are no unbounded buffers allowed. at all. ever.
- Channels have a hard limit of 1024 queued items without buffers
- Hallway Track
- Functional Composition - Chris Ford: Recommended to me multiple times
Day Two
- David Nolen: Invention & Innovation
- The Future Doesn't Have to Be Incremental: Recommended viewing
- The Dream Machine: Recommended reading
- Innovation is taking a groundbreaking invention, and making it more practical
- We don't all have to be great inventors, but we can all innovate
- Phil Potter: test.check
- Generative testing is ace!
- Don't just have to generate input data, can also generate sequences of operations to run
- Recommended watching both test.check talks from Clojure West
- Reid Draper - Powerful Testing with test.check
-
John Hughes - Testing the Hard Stuff and Staying Sane
- The the future it would be good to have control of thread scheduling to generate race conditions
- Chris Ford: The Hitchhiker's Guide to the Curry-Howard Correspondence
- Anna Pawlicka: Reactive data visualisations with Om
- D3 works well with clojurescript
- So does leaflet.js for maps
- And dimple.js for charts
- Om is awesome
- Malcolm Sparks: Assembling secure Clojure applications from re-usable parts
- Liberator for building web APIs
- bidi for declarative routing - as opposed to function composition, which cannot be reversed into URLs
- Modular: an experiment in meta-architecture for more reusable components
- There seems to be an inherent tension between dynamism and late binding, and composable modularity (which involves some form of encapsualtion)
- Hallway Track
If nothing else, I think I've realised I need to be more consistent with my note taking - apologies to any speakers I didn't make notes about!