Stuart Sierra introduces some general guidelines for designing systems which make their data and abstractions more transparent to developers, using code examples in Clojure.
Jim Duey surveys several abstraction techniques that can help in writing reusable code in Clojure.
Ola Bini attempts to answer a few questions: Why are new languages still being created, Is it worth choosing languages strategically, and Does language actually matter?
Michael Feathers, Brian Foote, Richard P. Gabriel, Joshua Kerievsky, Eliot Miranda and Dave Ungar put Objects on trial and found them guilty for not living up to their promise.
David Nolen critiques the tools, languages and methodologies used today from the perspective of solving the “mapping dilemma”, introducing match, a pattern matching library for Clojure.
Dean Wampler discusses the merits of several controversial issues: Goto, Design before Code, Design Patterns, Corba vs. REST, Object Middleware and ORMs, and Identiﬁers with Spaces.
Richard Pawson discusses a case study of a large pure OO project for the Irish government, presenting the challenges met, the reason for choosing pure OO, and lessons learned implementing it.
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.