Alex Miller presents some of the abstractions that make Clojure a great language: Collections, Sequence and Higher Order Functions, Multimethods, Protocols, Atoms, Macros, and others.
Marius Eriksen considers that scalability problems appear when leaky abstractions are used, exemplifying with RDBMS, GC, and threads, presenting abstractions that help dealing with scalability issues: map-reduce, shared-nothing web applications, big table, all providing narrow access to explicit resources.
In this presentation from QCon London 2009, Steve Vinoski discusses what RPC means, the origin and history of RPC, RFC 707, the origins of Distributed Computing Environment (DCE), the growth of the Internet, standardization, distributed objects, CORBA, DCOM, Java, SOAP, WS-*, the fundamental flaws in RPC, REST properties and constraints, REST vs RPC philosophy, Erlang reliability and concurrency.
This talk introduces two broad principles for strategic design. 'Context mapping' addresses the fact that different groups model differently. 'Core domain' distills a shared vision of the system's "core domain" and provides a systematic guide to when "good enough" is good enough versus when to push for excellence.
This talk will outline some of the foundations of domain-driven design:How models are chosen and evaluated;How multiple models coexist;How the patterns help avoid the common pitfalls, such as overly interconnected models;How developers and domain experts together in a DDD team engage in deeper exploration of their problem domain and make that understanding tangible as a practical software design.