Roberto Zicari, from ODBMS.org, collected interviews and stories from several users of Object/Relational mapping technologies. The main point of the cases was around "impedance mismatch" between the object technology in the domain model and the relational technology in the data model.
Google caused a stir by releasing Protocol Buffers, a binary serialization format. We take a look at what exactly Protocol Buffers are and what alternatives are available in ASN.1 or Facebook's Thrift.
In this interview with Nate Kohari, creator of the Ninject dependency injection container for .NET, talks about the release of version 1.0 of Ninject. The interview has taken place over the past weeks leading up to the release of Ninject 1.0.
Neo4j is an embedded network model database for Java, Ruby and Python applications. It is capable of handling billions of nodes/relationships/properties on single machine hardware, supporting ACID transactions, durable persistence, concurrency control, transaction recovery, and everything else you’d expect from an enterprise-strength database.
Rails Cells aims to bring component-oriented development to Rails with its lightweight controllers and views that can easily be shared and reused. We caught up with Nick Sutterer, one of the Cells developers, to talk about the state of the project.
A discussion about simple design is taking place on the extremeprogramming Yahoo! group that has already resulted in several useful recommendations. The discussion started off with a request for references concerning incremental design and quickly morphed into one about successfully adopting incremental design.
In a new interview, recorded at QCon San Francisco 2007, CORBA Guru Steve Vinoski talks to Stefan Tilkov about his appreciation for REST, occasions when he would still use CORBA and the role of description languages for distributed systems. Other topics covered include the benefits of knowing many programming languages, and the usefulness of of Erlang to build distributed systems.
A recent thread on Domain Driven Design (DDD) user group discussed the role of Dependency Injection (DI) and Aspect Oriented Programming (AOP) in DDD implementation. InfoQ spoke with Eric Evans and Ramnivas Laddad about these design concepts and the role of Annotations and orchestrated business services in DDD.
Peter Ritchie raised concern about TDD and BDD keeping practitioners from writing good unit tests. He cites an over-reliance on “interaction testing", a core mantra and essence of TDD and BDD, as a driver with tendency to result in incomplete unit testing.
The claim has been made that test driven development (TDD) encourages good design. The claim has also been made that TDD adversely affects design. Focusing on private methods and their relationships to good design and testability will give us something concrete to discuss - an instance of this apparent conflict.
In this talk, Eric Evans introduces two broad principles for strategic design. 'Context mapping' addresses the fact that different groups model differently and '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.
A recent debate on the RubyTalk list asked where to use is_a? vs respond_to? This highlights situations where objects respond to the same interface, but don't share any superclasses. We look at this debate and solutions in other languages such as Smalltalk, Erlang, and Scala.
Jay Bazuzi, once Development Lead for the C# Editor, is leaving Microsoft, and he wrote some surprisingly harsh parting words for his friends before he left; things like “OO isn’t a fad” and that “It’s OK to use someone else’s code”.
"Classes are dead, long live interfaces" was declared by Rickard Oberg at Oredev this week where he announced Qi4j. Qi4j brings the new idea of Composite Oriented Programing, in which is no behaviour at all is put in a class, instead the class becomes a 'composite' of mixins and interfaces declared on the class via annotations.
Designing for flexibility and robustness: Asynchronous message model, OOP and Functional Programming
According to Pragmatic Programmers it is preferable in OOP to avoid design based on returning values. Michael Feathers argues that it may also be better to use the asynchronous message model that might be instrumental for improving adaptability and robustness. This maps well to the Erlang model though opposing some of the principles of pure functional programming.