Sunday, October 30, 2011

Weekly roundup: the Pomodoro Technique in Barcelona

Here are the slides of my talk The Pomodoro Technique at PHP Barcelona last Friday. If you have found it interesting, remember to rate the talk on I'd like to thank all the staff (who also gave away a Pomodoro Technique Illustrated book) and the audience, which was very interested and involved in the topic.

Here are my original articles that I published this week before the conference.

Practical PHP Refactoring: Replace Conditional with Polymorphism is the cornerstore of the elimination of conditionals.
Getting started with Selenium 2 is a primer for the usage of WebDriver, only with the official Java bindings for now.
Practical PHP Refactoring: Introduce Null Object explains the creation of an object dedicated to special cases.
I've had enough of running Scala in a terminal, let's try with a web application is the first step in my quest to develop for the web in Scala.

Sunday, October 23, 2011

Weekly roundup: going to Barcelona

I'm leaving for Barcelona on Thursday afternoon for the PHP Barcelona 2011 conference and I will hold my talk on the Pomodoro Technique on Friday morning. Feel free to ping me if you will be there, I like to discuss about the themes treated in my writings. :)

These are my original articles published this week on DZone.
Practical PHP Refactoring: Remove Control Flag is about refactoring from a boolean variable to statements like break and continue.
A look at Dart from the eyes of an OO programmer is my opinion on Dart.
Practical PHP Refactoring: Replace Nested Conditionals with Guard Clauses explains how to simplify a complex conditional before starting to extract objects.
Tell, Don't Ask in the case of a web service is a practical case of changing a design from a getter-based style to a Tell Don't Ask one.

Sunday, October 16, 2011

Weekly roundup: hardware design vs. Continuous Integration

I'm taking a course in ubiquitous computing where we are studying hardware design. It's interesting how a common methodology reminds me of waterfall - each phase from the behavioral specification to the logical synthesis (where you decide how many and, or and not to use) contains a thorough verification step.
The reason is simple - the last phase, the actual production of a custom integrated circuit is very costly (hundreds of thousands of Euros). So iterating a design including this phase is not possible at all.
In software, it's a bit different. We can afford a dedicated server that builds our application dozens of time each day.

Here are my original articles published this week on DZone.
Practical PHP Refactoring: Consolidate Conditional Expression is about extracting code from conditionals and applying polymorphism when possible.
What I have learned at DDD Day is about my experience at a conference on enterprise software, mostly oriented to .NET.
Practical PHP Refactoring: Consolidate Duplicate Conditional Fragments is about avoiding duplication even in ifs.
OAuth in headless applications explains how to access Facebook, LinkedIn and other Apis when the user can't continuously authorize your application.

Tuesday, October 11, 2011

DDD Day slides

Here are my slides (if you can call them slides) for the DDD Day of Saturday in Bologna. The audio+slides playback will be available in the next weeks.
Note that the talk was oriented to an audience who knows what Domain-Driven Design is, but hasn't really worked with PHP yet (Java and C# developers).

Sunday, October 09, 2011

Weekly roundup: DDD Day

From this photo, you almost cannot see that I was rasmussed by Greg Young
I've returned from the DDD Day, the Italian conference on Domain-Driven Design. I learned some concrete tips ad techniques in spite of the event being oriented to .NET and frequented by C# and Java programmers.
In fact, as Alberto Brandolini said in the morning, DDD is also about the method, not really about the technology; and the differences in technology between imperative object-oriented languages such as C# and PHP are not so high.

Here are my original articles published this week on DZone.
Practical PHP Refactoring: Replace Subclass with Fields is about the inverse move of refactoring from type codes.
The Goal of software development is an exposition of Goldratt's work applied to software development.
Practical PHP Refactoring: Decompose Conditional is the first article about dealing with ifs and possibly targeting polymorphism.
Temporal correlation in Git repositories contains the code for discovering which classes usually change together in the history of your codebase.

Sunday, October 02, 2011

Bi-weekly roundup: DDD in PHP

I'm wrapping up my presentation for the DDD Day in Bologna and beginning rehearsals. Since I am involved in the project as a software architect, I will talk mostly about the technical side (it's DDD in PHP, not DDD in transportation and rental companies.) Wit respect to Java and C#, we will take a look at the differences in the language, in the platform where they are run and in the Domain Model.
See you in Bologna on October 8th.

Here are my original articles published in the last two weeks.
First week
Practical PHP Refactoring: Replace Record with Data Class is about substituting data structures provided by the language or libraries with an object coded on your own.
Practical Google+ Api is a guide to get you up and running in coding for an application using Google+ as a data source.
Practical PHP Refactoring: Replace Type Code with Class is about substituting a field value with a new object.
Phar: PHP libraries included with a single file is self-explanatory: Phar is the equivalent of Jar for the PHP world.
Second week
Practical PHP Refactoring: Replace Type Code with Subclasses expands on the type code miniseries, by adding subclasses to the one containing the problematic field.
Cross-Site Request Forgery explained is my take on this security issue, providing three ways documented in the literature to avoid it.
Practical PHP Refactoring: Replace Type Code with State or Strategy is the third option for eliminating a type code: transforming its values in a hierarchy of State objects.
Pretotyping: a complete example describes my experience with Who Disagrees With Me? and all the data I collected, which suggests a very focused audience but a descending trend.