###data.fressian
Self describing
Chunks by default
Uses Byte Code Encoding Scheme
High Data Compression ratio to generic.
###core.matrix
Array programming as a language extension.
####Abstraction
(+ a b) ; add two arrays together####API
Broadcasting scalars
(+ [[0 1 2][3 4 5 ][6 7 8]] _)
####Implementation
Uses protocols to dispatch on the first type
###The Internet of Strings
####Background: Web apps
What are the lines between systems?
Implicit contracts and a lot of trust in the current way we do things.
####Solution: More explicit contracts.
But have we seen this before? [WSDL XSD]
- High coupling
- Big upfront design of contracts and schemas - resulting in horrible change
- Any data format, as long as it's XML
- WSDL was usually generated
- And it was WSDL
Do we need a contract for everything? Depends
###Prismatic - Schema
Enforce a Schema for Function arguments and other things in clojure.
It is not as strict as core.typed and allows even cooler things to happen.
###Personalized Medicine
PREDICT - system to help make healthy decisions based on patient history.
Started out as Rails project. Added Erlang piece, then a clojure piece.
Eventually it will be all clojure
###illuminated macros
Macros
- Collect input
- compute
- emit output
Focuses on core.logic
Mathematical relations mapped to clojure.
Rich Hickey - Awesome
###Learning to talk to Machines
AR Drones
Speech Acts. JL Austin "How to Do Things with Words". John Searle "Speech Acts" 1969.
Elephant 2000 - John McCarthy
Illocutionary speech acts
Speech Acts with AR drones.
###core.async
Sometimes you want to not be synchronous
####Channel (chan) unbuffered channel - a logical point for two threads to communicate data through.
Callback hell is callback hell.
Use promises, similar take as some node people.
####Thread (thread _) returns a channel
It is a hardcore heavy weight thread
####go
Is more of a logical thread. Any code in a go block turns into functions that are attached to a channel
What a channel with fixed buffer there is a back pressure. A nice clean fix to producer/consumer solutions.
####buffers
dropping-buffers - drops puts if buffer is full
sliding-buffers
####alts
Alts are interesting. Alts use random number gens to take from different channels as to not starve some channels. Priority levels can also be set.
Ports nicely to clojure-script
###Cascalog
A way to generate hadoop jobs.