Linux Counter

I just remembered I have one of these, and look! It still works!

Soon it’s going to be 15 years since I started using Linux, time flies.

Posted in Idle | Leave a comment

Just installed Ghost on Heroku!

Check it out! (And you can continue reading there, it is a copy of this post)

I was looking for alternatives to WordPress for my blog, I wanted it to be:

  • Opengraph compatible
  • Good SEO support
  • Markdown based
  • Fast

In my search, I’ve found Ghost, it was REALLY fast on my old laptop and It seemed like a nice oportunity to give Heroku a try.

I always liked the heroku concept, and my current hosting does not support Node.JS anyway (though it does suport Python and Ruby!)

Editing text on Ghost is just awesome! Writting in markdown with side-by-side instant preview, is just awesome. Check it out at their site, or watch the video.

Ghost is free and open source, they also plan to have their own hosting service, similar to wordpress.org, I guess.

Asking for trouble

I had to crazy-patch Ghost to make it work on Postgres as this database is not yet supported. It comes with SQLite as default and besides that, it only supports MySQL officially.

It is not a good idea to run Ghost on a free Heroku account, as MySQL is not available and your uploaded images will be erased by the Heroku’s ephimerous filesystem.

In any case, Ghost is probably my next blogging platform.

Posted in Idle, JavaScript | Leave a comment

What Is Enterprise Software?

Big IT vendors market their products as “enterprise ready”, basically meaning “ready to rip you off”. This, and other misuses of the term explain why using the word “enterprise” to describe a piece of software triggers horrified looks and trying-not-to-vomit faces. The intertubes have excellent definitions for what Enterprise Software is, but it seems there is place for yet another answer to this question.

Not so surprisingly, in the first pages of Martin Fowler’s Patterns of Enterprise Application Architecture, there is a good definition of what Enterprise Software is, and what isn’t.

Enterprise applications are about the display, manipulation, and storage of large amounts of often complex data and the support or automation of business processes with that data.” -Martin Fowler

Fowler’s book also gives some examples of what is not Enterprise Software: “Automobile fuel injection, word processors, elevator controllers, chemical plant controllers, telephone switches, operating systems, compilers and games”

The English Wikipedia has a fairly good article on what Enterprise Software means:

“Enterprise software, is purposed-designed computer software used in the furtherance of the needs and objectives of the organizations; such purposes can vary widely as in a business, schools, interest-based user groups and clubs, retailers, or government, as opposed to software used by individuals.” (from the English Wikipedia)

So, next time you hear “Enterprise Software”, try not to think about the dark side, let’s recover the term.

Darkside

This image copyright is owned by ThinkGeek, it is used here to represent and link to their product.
This site has no affiliation with ThinkGeek whatsoever.

Posted in Idle | Leave a comment

Conferencia Agile Spain 2013

I will be speaking at this year’s CAS, the most important Agile conference in Spain, held yearly in a different city each time: http://conferencia2013.agile-spain.org/


CAS 2013 Logo

My talk title will be “Effective Pair Programming“. The idea with the title (besides not being very original) is to emphasize that it won’t be yet another pair programming evangelism talk, but rather a talk about improving the way developers pair, targeted at those who failed, are struggling with, or want to improve their pair programming skills.

Below is the talk abstract/proposal. See you in Bilbao!


Effective Pair Programming

Pair programming is a central element in Extreme Programming (XP) and its correct practice dramatically improves software quality. The technique is however quite difficult to master, and not doing it properly will not only be frustrating for the developers but also a waste of the company resources. This talk introduces different approaches to the technique and shows the audience how to avoid the common pitfalls that developers will encounter in their path to effective pair programming.

In this presentation, I will cover the principles underneath the technique’s productivity gains and why it increases the amount of error-free code over solo programming without spending more resources. I will also show how its practice reduces the team bus factor, and how pair rotation distributes information, effectively eliminating knowledge islands in the team.

Different developers have different experience levels and personalities. I will talk about different combinations and how to overcome these mismatches to enable the pair to become greater than the sum of its parts, thus producing software of greater quality and maintainability. I will cover the classical XP driver/navigator roles but also tag-teams and less formal approaches.

Pair programming is a challenging practice, and though it is not a novelty, it is still surrounded by many misconceptions. I will step through DO’s and DON’ts based on both documented and my own grounded experience on the topic, how it tightly fits other agile development practices such as Test Driven Development, and what to expect when introducing this technique in a team.

Link to the proposal on IdeaScale

Posted in Agile, Community | Tagged , , | Leave a comment

Refactoring Dojo: The Gilded Rose Kata

Last week Rafael de Castro (@rafadc) and I facilitated a Coding Dojo for the Madrid Software Craftsmanship meetup group (219 members and growing every week!) in which we participate. The idea was to make a Dojo in which we could practice refactoring.

Iván Stepaniuk standing in the back, and some Madrid Craftsmen and Craftswomen

Myself in the back, standing. Some Madrid Craftsmen and Craftswomen at work!

It went pretty well! This is the second time we meet in the MediaLab Prado in Madrid, a “citizen laboratory for the production, research and dissemination of cultural projects that explore collaborative forms of experimentation and learning that have emerged from digital networks.”, founded by the Madrid City Council, COOL!

For the Dojo we have chosen a well known Kata called “Gilded Rose”, it is a very simple piece of software that updates the quality value of the items in a store following some simple business rules. The problem is that the code sucks, we are asked to add a new feature but the code is so horrible that you don’t even know where to start.

Rafael de Castro Facilitating a Refactoring Dojo

Rafael de Castro (in the back, standing) Facilitating.

We had limited time, so we choose JavaScript, that way nobody would have to install anything special on their computers, and everybody has a text editor and a browser to launch Jasmine, right?. We distributed several pen drives with the same copy of the code plus a working test runner. And because we wanted to focus on the refactoring techniques I also included the tests, already passing.

The schedule

(at least the planned one!)

  • 20m: Introduction to the exercise, explaining the problem.
  • 05m: Distributing the USB pen drives and asking the attendees to sit in pairs, trying that people that has more experience sits with people that does not.
  • 40m: Pomodoro 1
  • 15m: Break: Group discussion on the problems they have found, connecting some of the computers to the projector so the teams explain what are they doing.
  • 40m: Pomodoro 2, changing pairs!
  • 20m: “Show me the code!” We collected every solution on pen drives each pair shows it on the screen and explain their refactors to the group.
  • 05m: Conclusions, Short retrospective, closing.

Protip: ask the people to bring their [WeirdAppleConnector] to VGA adapters if they have them! Also, for the final “show&tell”, it’s easier to collect the code in pen drives again than to connect many laptops to a projector.

The code

The Kata code is on my github account, where you can also find a folder named ‘solutions’ that contains 8 of the solutions that were written during the Dojo. In most of the cases, 3 people participated in writing the code because pairs where swapped in the break.

Happy hacking!

Posted in Agile, Community, JavaScript | Tagged , , , | 1 Comment