Blog personal
Cuando escribo, entiendo mejor el mundo.
Blog personal
Cuando escribo, entiendo mejor el mundo.
Productive Pair Programming
The title of this post is redundant, pair programming is already a productivity technique. That's my understanding or pair programming not just two people sitting together. Two people may code...
Polymorphic Equality
The default generation of Equality members provided by Resharper let you choose three different implementations when overriding the "Equals" method in a class (Alt+Insert -> Equality Members): The...
What is a ViewModel?
A ViewModel is one of the three parts that comprises the MVVM (Model View View-Model). This pattern is a variation of the Presentation Model (M. Fowler). In the Presentation Model, as opposed to...
ViewModels vs DTO vs Domain Models – Part II
Heuristics, bad smells and principles in the design of our Windows 8 app, which shares the core domain with a rich JavaScript client application. In Par I, we exposed some of the difficulties we...
Refactoring towards a meaningful domain model
Today has been a special day. Not because it's my 34th Birthday which I never really celebrate (although I do appreciate all the greetings and warm words from all my friends and family!) but because...
Learned from Sandro’s Outside-in TDD screencasts
As I am getting older my memory doesn't work as it did some years ago. If want to remember and internalize the important stuff from all the things I study, I just have to blog about them for two...
C# Asyn/Await and Task Parallel Library
In order for a native desktop application to be responsive, I mean, not to freeze whilst sending a request over the network or processing a heavy CPU operation, these operations have to run in a...
DTO vs Domain Models
Note: read Part II of this post here. A Data Transfer Object (DTO) is an object intended to carry data, for example between the client and the server or between the UI and the domain layer. It...
We were part of CukeUp! 2015
I had the pleasure of speaking at CukeUp! this year (2015), the fifth edition of Cucumber's conference which is more about BDD than Cucumber itself, although there are always updates on the state of...
Mocking (stubbing) async calls (async/await)
.Net 4.5 came out with a really handy built-in asynchronous mechanism, async and await. However the method signature of a void method is a bit strange: public async Task SomeAction(){...} It is...
Re-simplificalo: objetivo por release
Este post habla de dos de los valores de XP: Simplicidad y Feedback. Fundamentales y habitualmente olvidados. Cuando escribimos software o dibujamos una interfaz de usuario, estamos dando forma a...
DDD: Entity or Value Object?
Depending on the context certain concept may be modeled as an entity or as a value. It could be both in different bounded contexts. To me, good heuristics to choose between entities and values are...
DDD Paradoxes
I read Eric Evans' book on DDD years ago and fall asleep with it. Didn't really took much value from it. Last year I read Vaughn Vernon's book on IDDD and I found it more interesting because of the...
2014: Un gran año
Últimas horas del 31 de Diciembre de 2014. Para millones de personas es un día de celebración. Aproximádamente el 75% de la población cambia de año cada primero de enero siguiendo el calendario...
Practising Mob Programming
In the past edition of Socrates UK, I met Gianfranco Alongi who told us about his team's experience with Mob Programming. It was the first time I heard about it. As the site says, Mob programming...
Implementing BDD – part 1
This is the first of a series of posts on how our team is practicing BDD. These are mostly notes to myself and our team so other readers may not find enough context to understand the points. ...
A method is an abstraction
The name of a method must have a higher level of abstraction than the body for the method to be worth it. The name should explain what the method does but not how. If the name communicates exactly...
Implementing a fake repository
Lately I am using fake objects more than the other common kinds of doubles - stubs, spies and mocks. This is quite recent, I used to prefer stubs, spies or mocks. I find that fakes make my tests...
LTGW2014: resources from our workshop
Yesterday, Jenny Mulholland (from Softwire) and I & ran our workshop on JavaScript for Testers at the London Tester Gathering Workshops 2014, at Skills Matter. We had a nice group of...
Understanding JavaScript Errors
There is no magic in programming languages. The fact that they are formal languages makes them deterministic. For every behaviour there is a reason. For every error there is a logical cause. Before...