Posted by F
Sun, 11 Dec 2005 20:07:00 GMT
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.
Read more...
Posted in Software Products, Developer Toolbox | 2 comments | no trackbacks
Posted by F
Fri, 25 Nov 2005 04:00:00 GMT
I am surprised by the high number of Java developers I meet that do
not know what a Java Thread Dump is or how to generate one. I find it
a very powerful tool, and it is always available as part of the JVM.
I haven’t played much with Java 5 yet, but it comes with jstack, a new tool that makes it easier to generate thread dumps.
Earlier this year, I was working on a load test for for a well-known
airline. We were tunning the environment all we could, monitoring and
profiling to know where to focus our optimization efforts. The
solution involved a fairly high stack: Apache httpd, WebSphere,
FuegoBPM, Tibco messaging, Oracle RAC.
The system was holding load pretty well up to a certain point in which
it immediatly halted and stopped processing new requests. Every time
we run the load testing scripts we experienced the same symptoms. Not
even the official testers –with allegedly powerful testing and
monitoring tools– were able to identify the cause of the problem.
So, I decided to get a few Thread Dumps of WebSphere’s JVM. On Unix, you do ”kill -3 <pid>” and the dump goes to WebSphere’s native_stdout.log. We
inspected the dumps but couldn’t identify dead-locks or any other
obvious anomaly, although the answer was right before our eyes.
Read more...
Posted in Java, Debugging & Optimizing | 1 comment | no trackbacks
Posted by F
Tue, 22 Nov 2005 18:25:00 GMT
A co-worker pointed me to AT&T Natural Voices, a Text-to-Speech research
project from AT&T. I tried
the online demo and I’m
really impressed.
It’s been a long while since I last tried a TTS system, so may be I’m
just late to the party… but this one produces very natural speech. I
tried a couple of English and Spanish voices, and all seem very real.
I knew about the
Festival project, which
provides a free speech synthesis system, but if you check the online voice
demos you will probably agree that it’s not on par with AT&T’s.
Posted in Software Products | no comments | no trackbacks
Posted by F
Sat, 19 Nov 2005 15:40:00 GMT
This is old news already, and although it’s not about Software, it’s
definitely about Development :-)
I’m happy to share that Pilar, my second daughter, was born last
Monday 14th, a couple of weeks ahead of schedule –and on budget ;-).
She has
jaundice,
so she is under photo-therapy. Fortunately, this can be done at home,
and should only last a few days.
Posted in Personal | 1 comment | no trackbacks
Posted by F
Fri, 04 Nov 2005 03:16:00 GMT
Yesterday, a good friend of mine and ex-coworker contacted to me to share his
frustration.
(he hates to be called “Polino”, so I won’t.. doh!)
He finished a software solution for a customer, and now an expert
is reviewing his Java code.
The expert code reviewer insists on small performance optimizations, but he
is way off target. He wants to micro-optimize, and to do it blindly.
For example, he reported that the following code was doing
“inefficient String concatenations”:
String myString = "Some text here "+
"Some text there "+
"Some more... ";
And that this was an “inefficient way of creating Longs”:
myList.add(new Long(1));
These examples are probably well optimized by modern Java
compilers. But even if they weren’t, they probably don’t affect much
to the performance of the system as a whole.
Read more...
Posted in Java, Debugging & Optimizing | 1 comment | no trackbacks