Published by Phillip Calçado August 17th, 2010
in abstractions, books, c#, components, domain driven design, domain specific languages, java, language adaptation, language oriented programming, layers, object orientation, ruby, software architecture and software design.
Most complex tasks are solved using abstractions. To create an abstraction one groups lower-level concepts, what I will call primitives in this text, and make them interact in a pre-defined way.
Abstractions are present at all levels in a system. Computers work based on electric signals. To reduce the Essential Complexity we abstract those signals with […]
At ThoughtWorks, our preferred way to start a project is by doing a set of workshops and sessions with stakeholders for about two weeks. That’s what we call Inception. After the Inception we usually have a product backlog for the project and are ready to start writing production code.
During that period, we often come up […]
Published by Phillip Calçado March 22nd, 2010
in agile, books, c#, domain driven design, domain specific languages, events, java, language oriented programming, layers, object orientation, software architecture, software design and trends.
Over the past years I’ve held many workshops on Domain-Driven Design. We had more than one hundred people on those sessions, and feedback was often pretty good. After my last run I told my business partner that this was my last time running those workshops.
I think that Domain-Driven Design is one of the most […]
We finished last post with this funny situation: the abstraction that represents Facebook depends on our Domain Model.
It was a bit obvious that what we needed was not only system abstractions for Facebook, Twitter and the like but Bounded Contexts. We need to acknowledge the fact that these domains are not part of our model, […]
Read the first post here.
In the previous post we were facing the problem demonstrated by the diagram below.
Our FacebookMessageParser needs an instance of AllSocialNetworks so that it can create valid Users coming from Facebook. The only implementation we have for the AllSocialNetworks interface is UserRepository, and this implementation needs a FacebookMessageParser. That’s a circular dependency, […]
Published by Phillip Calçado December 29th, 2009
in agile, books, software design and trends.
I just finished reading Peter Seibel’s new book, Coders at Work.
I was a bit skeptical at first. I only picked the book because of the big names on the cover and because Peter Siebel’s Practical Common Lisp is one of my favourite books on learn-a-new-programming-language. I thought that a book filled only with interviews with […]
As a consultant I have to log my hours in a timesheet application. This could be a test inside the timesheet app:
[TestFixture]
public class BillableTimeTest
{
[Test]
public void ShouldhaveCorrectNumberOfWorkedHours()
[…]
I just finished reading Real World Haskell. This was my first book on Haskell, I’ve read only articles and papers before and I believe it was a very good introduction to the language.
The book tries to use real world problems and I feel like it is not very successful as it. The examples focus too […]
Published by Phillip Calçado April 16th, 2009
in books.
I spent the last two months flying between Melbourne and Sydney and during this time I had the chance to read Charles Petzold’s The Annotated Turing: A Guided Tour Through Alan Turing’s Historic Paper on Computability and the Turing Machine.
Charles walks you through pretty much every single paragraph in Turing’s seminal paper. The […]
For some months now I’ve being playing around the idea of writing a testing framework for Clojure. It started as just a more extensible fork of the fact library but now I’m trying to explore some funny ideas in the testing semantics.
Although this project is progressing too slowly it already spawned some other pet […]