September 2006 - Posts

End of the Internet

Google Reader got a new look:



It still sports the same VI-inspired key bindings (j for down, k for up) and it even has a new Tag switcher:



There is also a new Goodies tab on my Settings page. This section grabbed my attention:



What is this? Google Reader without using the Google Reader UI? That's odd.

I dragged the Next link onto my bookmarks toolbar (see first image) and with a simple keystroke (Safari automatically binds bookmarks to Cmd+1, Cmd+2, Cmd+3) I was able to navigate through my feeds. It redirects me, one by one, to the feed's website. Instead of seeing content being rendered by Reader, I'm getting the real page. I'm starting to like this.

In a few minutes, I finished all my feeds. Google Reader congratulated me for reaching the End of the Internet.


Wow.
Posted by jop | with no comments
Filed under:

Little Things

Why do I love my Mac? It is because of the care and attention to details that the Apple developers have put to it. I never expected something this petty can affect the way I use my computer. They must have had a lot of spare time.

Let's see if you can find out what I'm talking about.




Clue: the window on the left is the Safari's Download manager, halfway through a file named get_video, while on the right, the icon of the same file.
Posted by jop | 2 comment(s)
Filed under:

Spreading the Infection

cruizer raised a thread on the forums:  Suggest a good demo for TDD for .NET MSDN Event. I wrote this as a reply on his thread.


I've also done a few short courses about TDD. Despite my mediocre communication and delivery skills, attendees still rate the courses highly (I think they don't want to hurt my feelings). But I'm most concerned about this question: How can I apply it to my project? You've shown us a program for scoring bowling games. So what? I'm not writing that type of application. Wow, now I know how to convert numbers to words. Btw, we have an existing library that does that. It can also handle different languages so you can print cheques in french, german, chinese and with a few configuration changes, even alibata. My application has a UI. It writes to a database. It accesses a web service. It employs some wierd calculations that depending on some random user input. How can TDD help me there? Do you have a demo about that, too?

From the feedback that I got from the attendees, I've dreamed up this training course.


The scenario is this: you are one of the developers of on ongoing application designed using TDD. You've got a new team member [pick someone in the audience to act as the new guy] and he is given a task: to implement a new piece of functionality [estimated to take about an hour or two] and add it to the application. As a new joiner, he knows nothing about the application. As one of the developers of the application, you are responsible for introducing him to the team practice of test driven development. You are going to pair with him and help him implement the new functionality. You will initiate the discussion by writing the first test and he will try to implement them. If he is stuck, you'll switch places. The other attendees watch and learn along with your (hopefully) willing victim.

Pros: 

  1. It is a real world example involving an existing application. Attendees would immediately see the benefit of TDD in terms of how it helps in the design of the new functionality.
  2. Attendees would see a clear benefit of maintaining a large number of running tests.
  3. They'll have an existing application to refer to whenever they want to know something about TDD. How do you test a database? How do you test the UI? What do tests look like? How many tests do I need to write? Show them the code and let them use it as a template.
  4. It is very interactive. It no longer matters if other attendees feel sleepy because you've got the full attention of your victim.
  5. At the very least, one of the attendees would surely be able to guage how hard/easy it is to start doing TDD. You picked someone in the audience, a beginner, to have a hands-on designing and coding using TDD. If you happen to "infect" him too, that's good enough for me. :D

Cons:

  1. You need to write an application that you can demo or you need an existing application to use, probably, open source.
  2. It might be hard to direct. You are picking a random someone from the audience. This is no longer just a presentation. You can try creating a script and let your victim just read from the script but that would make this less real.
  3. It might take longer that time allotted to you. But I guess that's a good thing too.
  4. You might need some special hardware (handsfree mic and a good projector, for example) for this to work.
  5. I haven't tried this on a presentation yet, so it might not work. :D

Will this work? Add some nice, hot food and it surely will.

Posted by jop | 2 comment(s)
Filed under: ,

Afraid to Commit


I attended a Configuration Management Training Course at work today.  Rational ClearCase is the software sanctioned by the company. When my outlook client told me about a training invite on my inbox, I was surprised to see that the training is scheduled to take one whole day. Why on earth would I spend one day learning just a version control system?

I turned out that ClearCase is a very complicated beast. Before you can effectively use it, you need to be familiar with VOBs, views, elements and config specs, rules, dynamic and snapshot views, label types, branch types, etc. Even then, you need to understand the proper way of checking out and checking in stuff, reserved and unreserved checkouts, using tools like ClearCase Explorer, Clearcase Type Explorer, Merge Wizard, Apply Label Wizard, and a whole boat load of stuff. Abstraction leaks everywhere.

However, this is not the point of this post.

About halfway through the training, one of the attendees started crying out his emotions regarding one of his bad experiences with  ClearCase. On a previous project, he and his team lost a weeks worth of work when their ClearCase views got corrupted. Let’s just say that a ClearCase view is database of sorts that ClearCase uses to store files that are not yet checked in. It can be located either on a drive on your local machine or on a shared network folder. In the case of the attendee’s team, their views are all stored on a shared network folder. The drive containing the folder got corrupted, and all the files that they’ve checkout and modified were swooshed.

Let’s skip the fact that the clearcase view got corrupted (sh*t happens) and move on to a more important point. Why do they have weeks of uncommitted work in their views? If they only checked in their code before going home, the effect of the corruption would not be as bad. Of course, it still is a days work down the drain, but at least that is not a weeks worth. For a team of 5 people, that is a lot of man hours.

I talked to my some of my colleagues and it looks like it is not and isolated case. What are these developers afraid of? What can’t they just commit or check in their work at least once a day?

It has always been my habit to check in files whenever I’m done with something that I have been working on. Before TDD, that was at least once a day. When I started doing TDD, commit happens at least once an hour. If I am doing lots of refactoring, I am committing code after each and every refactoring: every few minutes. I’d like to think that I’m just getting better; that’s why I’m committing more frequently. But I think real reason is because of TDD, I now have a better feeling of when I am done.
Posted by jop | 2 comment(s)
Filed under:

Book Lust

I've been saving space on my bookshelf for Agile Software Development, Principles, Patterns, and Practices, for more than two years now. I have visited a lot of bookstores in the Philippines looking for the book but not one copy surfaced. I even scoured the P2P space (I am so bad) for even a page from this book; still no luck.

Last Saturday, I was strolling inside Borders on the corner of Orchard and Paterson (Singapore) and meditating on the apparent ugliness of their filing system, when, on the corner of my eye, I happen to notice "C#" along with "Patterns", "Agile", "Practices", "Principles" all on the same spine. I delicately pulled out the Book of Wisdom in between "Rails Recipes" and "Switching to Mac: the Missing Manual" and ran to the counter.

My bookshelf is still longing for the book; I think it is too precious just to be shelved. I've read the roman numbered pages on my way to the cashier, the preface, foreword and introduction in the toilet, and chapter 1 in the MRT on my way to work.

Good thing the book is hardbound.

Posted by jop | 4 comment(s)
Filed under: ,

Agile Forum

This is a two-week old link, but it seems no one here still has knowledge about it. Ron Jeffries is hosting a new agile forum:

It is my pleasure to offer the Agile community a new resource, an Agile Forum. I'm hoping it will be a brand-neutral, consultant-neutral place, open to and shared by everyone who is interested in advancing him- or herself in Agile, or in bringing Agile to the world. I'm inviting you to help make it a place you'd like to be.

Nice.

Posted by jop | with no comments
Filed under: ,

xUnit Patterns

To all those who are test infected, the xUnit Patterns site catalogues a few wheels that you need not reinvent.
Posted by jop | 2 comment(s)
Filed under: ,