Blog personal
Cuando escribo, entiendo mejor el mundo.
Blog personal
Cuando escribo, entiendo mejor el mundo.
A code review is not like watching a football match
In my experience a code review must have a goal. Some common goals are: Telling others how you solved a common problem. Warning others about certain perils (i.e race conditions, coupling...) Asking...
I visited Scytl
In October 2015, just two months before the Spanish elections I was lucky to visit Scytl and work there as a consultant for a week. Thanks to my good friends Manu Martin (@ManuCervello) and Alvaro...
Only one MessageDialog may be displayed
On Windows 8, a call to "await aMessageDialog.ShowAsync()" can only be made once, otherwise System.UnauthorizedAccessException will be thrown (E_ACCESSDENIED 80070005). This is a helper method to...
Polymorphic test setup with template method
We had a kind of duplication in our tests that we didn't know how to deal with. The refactoring "Introduce Polymorphic Creation with Factory Method" explained by Joshua Kerievsky in his brilliant...
Refactoring katas with your own codebase
When it comes to refactoring, my preferred katas consist of experimentation with the actual code base I am working on. I just create a new branch from a certain commit, play with several...
Mind the age and context of the book
Usually IT books don't age very well, things change very fast in the sector. This is specially true of books on particular tools, libraries, frameworks... but even books about methods and techniques...
Reflexiones tras una emotiva CAS2015
No habia participado en una Conferencia Agile Spain desde el 2010 que fué en Madrid, la primera. En aquel entonces iba ilusionado con 50 ejemplares en mi maleta de nuestro flamante libro de TDD, que...
Pairing: don’t have to always agree on the plan
So your pair is proposing a route or plan that you don't agree on. Am talking about a refactoring, a redesign or just the way to test drive the next feature. You have told him your reasons no to...
Learning with Peter
Last week I was lucky to host my good friend Peter Kofler in his visit to Gran Canaria, where he came to facilitate the Glodal Day of Code Retreat and also to work together a couple of days in our...
Object references, state and side effects
C#, Java and other languages have the same behaviour when it comes to reference types. public class SomeClass { public string someField; } var instance1 = new SomeClass(); // instance1 is a...
Everyone is potentially a teacher
In order to learn from others I must trust them and open my mind enough to see them as potential teachers even if they are - apparently - less experienced than me in certain knowledge area. The...
XP Team Building
Let the team walk its path Every team walks at its own pace and I haven't found a way to speed it up myself, I don't think there is one regardless of whether you are an external coach or a regular...
EventBus in a Windows 8 app
How to communicate different pages of a Windows 8 App? How to manage the life cycle of the pages? Pages are instantiated by the framework when asked to navigate: *.xaml.cs:...
ES6 + browserify + babel + gulp + jasmine
During Socrates Conference 2015 we decided that it's the right time to jump in ES6 to developer a green field project that our customer is starting. Given that ES6 is already the stable and latest...
Notes from Socrates 2015
The 5th Socrates Conference in Germany has been my first continental Socrates Conference (I've been to UK twice plus another one in the Canaries). What a mind blowing unconference! I got even more...
Pdf made up of pictures
I had to embed 50 pictures in a pdf file for print - don't ask me why. Dependencies (on Debian): apt-get install imagemagick apt-get install pdftk This is the Python script. It uses commands...
Using C# Collections
There are many ways to work with collections. We are following Microsoft Guidelines for Collections plus some ideas that Kent Beck explains in Implementation Patterns. I've created a repository...
Identifying aggregates
An aggregate is particular kind of entity so first of all we need to know whether the model is an entity or a value object. Once we know it's an entity let's figure out whether it is an aggregate. A...
Te recomiendo escribir en un blog
Cualquiera que esté aprendiendo puede beneficiarse de tener un blog. En la profesión de desarrollador uno aprende constantemente por lo que tener un blog es imprescindible en mi opinión. Es...
Remove data structures noise from your tests with builders
Among other qualities good tests should be easy to read, quick to understand. When the test requires complex data structures to be sent to the SUT or to be part of a stubbed answer, it takes longer...