So, EDN [1] is a formalization of Clojure data-literal syntax that includes tagged types, has a text representation, and no built-in caching.
Fressian [2] supports the same types and extensibility as EDN, has a compact binary encoding, and the serializer/writer can choose its own caching strategy (so-called domain-specific caching[3]). I believe it was created to provide a serialization format for Datomic.
Transit sounds like an evolution of EDN and Fressian: make the bottom layer pluggable to support human-readable/browser-friendly JSON or use the well-established msgpack for compactness. Caching is still there, but it can only be used for keywords/strings/symbols/etc. instead of arbitrary values like Fressian -- probably a good trade-off for simplicity.
For someone who is not too familiar with the Clojure world, how does this compare to test.generative[1] (which I heard about in a talk[2] about Simulant[3])?
I checked out the source; what's the trick for getting the dependencies into the tree?
"go get" is not supported in appengine [1], and if I manually check out individual projects, I end up with extra code that will not compile in the appengine environment.
I watched this over lunch and found it really interesting. Particularly:
* History of the retail site, early architecture. Originally ran on DEC hardware.
* How the retail side began to adopt AWS services for internal projects, non-critical features.
* Some details about their continuous deployment infrastructure (Apollo). "How would you manage deployment if you had infinite capacity?" New versions are stood up on clusters of new instances; the old instances are kept around for a while to allow for fast rollback.
* As of November 2010, all front-end webservers run on EC2.
* Scaling costs:
"The cumulative amount of data stored predicts long-term hardware
spend more accurately than transactions per second"