Wednesday, August 31, 2011

Between Pomodoros

In the Pomodoro Technique, work is timeboxed into interval of 25 minutes. Between two Pomodoros, there is always a small break which lasts up to 5' minutes: here's what I (try as much as possible to) do during the breaks.

A note: this list is valid for short breaks, while they won't fill longer breaks like a 15' one.
  • 10 pushups: easy, fast, move your arms and legs after a long period on the chair. Or 10 squats, 10 exercises; you get the idea...
  • Refill my water glass from other rooms.
  • Check lighting and temperature to make sure there is no glare on the screen, or the windows do not need adjustment.
  • Adjust the chair and the position of the screen or the keyboard. 
  • Go to the bathroom, also for washing teeth or my face.
  • Unpack my bag.
  • Check phone for urgent messages (only urgent ones).
  • Get up and walk around a bit. Sitting too much tires me.
Here's what I don't do:
  • Engage in mental activity, like explicitly solving problems. Although I find that often since my hands cannot use the keyboard my brain starts to work on autopilot on the last Pomodoro's topic.
  • Browse the web. I try to rest my eyes and focus.

Monday, August 29, 2011

Pretotyping Who disagrees with me?

I am pretotyping a new web site, Who disagrees with me?, in order to find out if the basic idea behind the service is viable or if there is no interest at all.
Who disagrees with me subscription

The idea
A filter bubble is a controversial concept developed by Internet activist Eli Pariser in his book by the same name to describe a phenomenon in which Internet search queries selectively guess what information a user would like to see based on the user's past search history and, as a result, searches tend to play back information which agrees with the user's past viewpoint. According to Pariser, users get less exposure to conflicting viewpoints and are isolated intellectually in their own informational bubble.  --
I have refined my RSS reader, Twitter and Google+ accounts so much that I never encounter something that challenge my views. For example, I get PHP-related content all day; but I am learning much from reading 7 languages in 7 weeks and being exposed to Ruby or Prolog. I suggest to view the short TED talk (9') from Pariser for a longer explanation of the phenomenon and its issues.
While this filtering is definitely useful for singling out an appropriate slice of the Internet cake, it menaces growth as I always threading on the same subjects. Most of the new content I see comes from personal blog and accounts, which are by definition free to link to links they find interesting.

When building a web service an engineer typically starts from designign a data or object model, or from the algorithm that will find challenging links by starting from a set of references. And it must be an adaptive algorithm, that improves as the user gives out more information on his preferred technology, economic policy, or music.
But that's not what to start from: coding the perfect algorithm won't suffice if there is no one interested in using it. Pretotyping consists in narrowing down the scope of a product (like in an MVP) and even faking the existence of the product in order to check the market viability. Will people be interested in reading a challenging newsfeed, or they will prefer conservative filters and I will waste my time buying a domain name and coding?
I want to validate my idea by spending the minimum amount of time and money.

In my case
Instead of a continuous feed of information like for Facebook or Twitter, I limited the pretotype of the service to a single, weekly e-mail containing links. I also limited the category to a single choice: preferred technology.
I started preparing a subscription form with Google Docs, but I switched to MailChimp, a newsletter service, due to the support for verification emails.
I'm using a mixture of two pretotyping strategies described in the book: the Mechanical Turk and the Re-label; they are viable thanks to the very limited scope of this trial. The Mechanical Turk means I will write the weekly emails by hand, not select links with an automated algorithm. Re-label means I'm using an existing service (MailChimp) to take care of the subcription part.
What I'm saving here? The time to build a complex algorithm and a website with a 2nd level domain and an authentication system to store user preferences.
My metrics will be the initial subscription level compared to the number of view and links this post get, and the returning users of the service (people who do not unsubscribe in a month, for example.) MailChimp is adequate for measuring both, while Google Analytics will count the unique views this post get.

What will happen?
The two extremes of the spectrum are:
  • no one submits the form. The service is a crappy idea, because everyone wants to read interesting articles and not from other fields. In this case I have saved my time and I have discovered the idea was not really valid with an expense of just 4 Pomodoros (2 hours, with the time spent writing this post included) and no monetary investment. If it fails, it's normal: most of new ideas fail.
  • I get a good amount of subscription, which do not quit from the newsletter for more than a month (let's say 4 issues). In this case I can move to coding and build a real prototype.
Stay tuned, and share this post with friends if you think they are interested...
Who disagrees with me subscription

Sunday, August 28, 2011

Weekly roundup: pretotyping

I've read the pretotyping free book in one sit: I first came into contact with the concept, while watching a presentation of Patrick Copeland on innovation. At the same time I'm reading the Blue Ocean Strategy, and all this inspirational content has made me thinking about pretotyping a web application related to language learning in the next week.

But I also continue to write on DZone. Here are my new posts.
Practical PHP Refactoring: Change Reference to Value
Edge Side Includes with Varnish in 10 minutes
Practical PHP Refactoring: Replace Array with Object
Raphaël: cross-browser drawings

Sunday, August 21, 2011

Holidays roundup: 2 weeks of PHP and client side

While I was away, my editor continued publishing my articles on DZone. In the last period I am trying not to focus too much on PHP but also on client side technologies; in this case, CoffeeScript and SASS, but usually JavaScript.

Here are my original articles.

First week
Practical PHP Refactoring: Introduce Local Extension is a technique for adding behavior to a class whose source code is not available for modification.
CoffeeScript: a TDD example is an introduction to CoffeeScript that explains how to work with Test-Driven Development in this JavaScript abstraction.
Practical PHP Refactoring: Self Encapsulate Field is about hiding fields even inside a class.
The fastest browser poll: results shows which browser is considered the fastest by developers who read DZone.

Second week
Practical PHP Refactoring: Replace Data Value with Object is about the introduction of a class in place of a scalar value.
Object Calisthenics is an exercise to improve object-oriented design basic skills. My results and code are attached.
Practical PHP Refactoring: Change Value to Reference is about changing the lifecycle of an object from a simple value to a unique object.
Syntactically Awesome Stylesheets is an introduction to SASS, a language that compiles to CSS.

Sunday, August 07, 2011

Weekly roundup: Barcelona

I'm returning to Barcelona, this time for vacation in the nearby Calella. I'm also submitting proposals for PHP Barcelona 2011, and I hope to be selected for the conference in October. Last year's audience was really active in questions during my talk Architecture and testability and large in number.

Here are my original articles published this week. Even while I will be on vacation, my editor will continue to publish my articles.
Practical PHP Refactoring: Remove Middle Man
PHP 5.4 features poll: the results
Practical PHP Refactoring: Introduce Foreign Method
Assetic: JavaScript and CSS files management