Posted by F 26/12/2005 at 22h19

After nearly two years of procrastination, I finally decided to spend some time on wrapping things up and putting AntDoclet online for public consumption.

AntDoclet is a little tool for documenting Ant Tasks. It automatically generates HTML and LaTeX documentation from the source code of your Tasks.

I wrote it initially in January 2004, for documenting the Ant tasks provided with the FuegoBPM product. Recently, I needed to improve it a bit, and decided to make it public.

Thanks to Fuego Inc. –my employer– who allowed me to release AntDoclet.

My Job Went to India...

Posted by F 18/12/2005 at 12h02

If you work as a software developer for a living, I recommend you get a copy of “My Job Went to India”. Ignore the curious title and funny cover. It’s about planning your career and making yourself a more valuable developer.

I read it right after “The World is Flat” (by the way, a fascinating description of today’s globalized economics), and it was a good 1-2 punch.

Full of great advice. Stimulating and motivating little book. It helped me find the energy to go back to work after taking a week off :-).

The book is divided in 52 concrete pieces of advice. You’ll get ideas for improving your technical abilities, as well as business-related knowledge and inter-personal skills.

A couple of paragraphs I liked, from the Introduction:

For some not-insignificant percentage of IT workers, the safest bet is to start looking for an alternate line of work. […] If you don’t have passion and a drive that would force you to create software […] you’re not going to be able to continue to compete with those who do.

… Software is a business […] To stay employed, you’re going to have to understand how you fit into the business’s plan to make money.

And this one below made me laugh, from advice #6 “Be a specialist”:

“Too many of us seem to believe that specializing in something simply means not knowing about other things.”

I would have titled it something like “The Mature Pragmatic Programmer”, as it is a perfect second volume for “The Pragmatic Programmer” (What? you haven’t read it? Stop reading this stupid blog and go get TPP now!).

Quality of Experience

Posted by F 17/12/2005 at 14h11

I’m surely stating the obvious here (I hope!), but what seems obvious for some people is not so for others.

Work Experience should not be expressed in years. There’s a quality component to it that is more important than quantity. Some people learn very little over several years of “experience”, while others learn and grow a lot in a fraction of the time.

The amount of experience is still important. And the quality of someone’s experience is lot harder to measure, since it may depend on many interrelated factors: type of work done, intelligence, interest, motivation, attitude, the environment, and people (s)he worked with.

But please, don’t measure experience in time units alone.

Unfortunately, if you need to hire someone, recruiters do little (if any) to find quality workers. They just care about keywords (like: java, web, manager) and the years of experience associated with each of them.

If you think about it, time is relatively easy to add to the experience of a person: it’s just a matter of time :-).

The quality of a person’s experience, on the other hand, depends a lot on his/her own will.

Version Control Systems and Open Source 2

Posted by F 11/12/2005 at 15h07

If you haven’t looked at the available Version Control Systems lately, you’d better look again.

About 5 years ago, CVS was pretty much the only open source Version Control System in use, and it’s still very popular.

But in the last few years, a surprising number of new and really good open source version control systems came to life. Like most open source projects, their authors started them to scratch a personal itch. In this case, the itch was caused by some important limitations in CVS:

  • The directory structure is not versioned (it only keeps history of files)
  • Impossibility to rename, move or copy files (without loosing history)
  • Operations (like commits) are not atomic
  • No concept of “change sets”
  • Very expensive (inefficient) branching mechanism
  • Limited merging capabilities
  • No support for decentralized repositories (distributed development).

Don’t get it wrong though: CVS is a very respectable piece of software: it’s been first released more than 20 years ago!

Among the new open source alternatives I found these to be quite popular:

  • Subversion – Explicitly designed as a replacement for CVS. I would say it’s achieving it’s goal. Many big projects moved from CVS to Subversion, like KDE, GCC, Apache.

  • SVK – Built on top Subversion’s libraries. It offers additional functionality, like distributed repositories and better merging. It integrates with existing Subversion repositories, so it’s more an extension than an alternative to Subversion.

  • Arch – Very powerful and decentralized. The current version 1 received many complains around usability, which spawned new projects like Bazaar. But version 2 promises many improvements, including ideas from Bazaar and other systems.

  • Git – Developed by Linus Torvalds and other Linux Kernel hackers when they were forced to stop using the commercial BitKeeper because of licensing issues.

  • Darcs – Written is Haskell.

  • Codeville – Apparently has an advanced merging algorithm without the problems of 3-way-merge.

  • Monotone

Subversion, like CVS, is designed around the concept of a centralized repository: all developers work against one single repository. All the other systems mentioned above are decentralized, allowing for more distributed development: several repositories may exist (say, one per developer) and they are synchronized in a peer-to-peer way.