Archive for September, 2005

Cocoon GetTogether 2005

cocoon.gifI haven’t had much time to post anything this week, since we have a deadline by Friday and still some issues to fix by then. But I managed to book a plane to Amsterdam and do a last-minute registration for the annual Apache Cocoon GetTogether. I’ll be there on Thursday (leaving very early in the morning) and Friday. Once more, we’ll be able to exchange real beers and not just virtual ones.

Why I won’t switch back

I know this is something that is apt to quickly turn into a religious argument. I’m also probably the last to comment on this, as everybody and his sister already did. But this is a slow day, so bear with me.

Russell: “I’ve been using Macs almost exclusively now for about 7 months - since just after I joined Yahoo! and got my PowerBook to go with my mini at home. Now that I’ve been using Macs for a while, I’m wondering if they’re all that special. The hardware is nice, but OS X can be as slow, buggy, non-standard, frustrating and annoying as any other operating system. Also, I don’t really use most of the included apps, so most of what makes OSX so special doesn’t really apply to me.”

Personally, I haven’t had a Windows machine on my desktop for the last six years. So, should I decide to switch back, it would be to Linux. The only thing that really makes Linux a better desktop system when compared to either OSX or Windows, apart from price, is stability. Linux is really solid, OSX is respectable and I can’t really say much about Windows, except that from my occasional usage of it, it still doesn’t seem to be on a par.

It’s true: OSX isn’t perfect, but what is? To me, it’s the best compromise between a nice, usable and intuitive GUI and a solid UNIX foundation. I can have my bash shell, GNU utilities and desktop candy. Well, the Finder sucks, but who cares when you have cp, mv, find, less and the full power of bash scripting at your fingertips? The real killer app of OSX, for us longtime UNIX geeks is the Terminal!

Moreover, I can use OSX for all my software development tasks, mainly using Java (even Java 5 on Tiger) and Eclipse, so it’s not that I’m missing something. I have all the usual collaboration tools (CVS, Subversion, IM, email) at my disposal and most of them are on the web anyway.

I just want to address one specific point made by Russ:

17. What is the friggin’ deal with the .dmg files? The install process is so broken. Unzip .dmg.gz, mount .dmg, copy to Applications, unmount .dmg, delete .dmg, delete dmg.gz. Bleh.

The install process is anything but broken! Double-click on the compressed image (assuming it is compressed: it would be better if compression was applied at the HTTP level and you got an uncompressed file to begin with), double-click on the .dmg file, drop the bundle in the Applications folder and you’re set. What’s the alternative? A GUI installer with a wizard interface that asks you lots of irrelevant questions like where should I install the damned app, which components should be installed and whether it should keep the original version of WMFC32.DLL or overwrite it? Come on!

Searching domain objects

Ryan Sonnek: “Wouldn’t it be great to be able to use a powerful search engine on your business objects? Searching is becoming THE preferred way for user’s to find their data. Emerging applications like Google Desktop and Beagle have embraced the new mantra of user’s to ‘Search, Don’t Sort’. User’s don’t want to be forced to organize their data into limiting categories or folders, or to scroll around applications to find the data they are looking for. Even common GUI practices like table sorting are considered an eye sore compared to a snappy search box.”

Interesting technique. I’m marking this up just because it might come handy in a little while. I’m pretty sure at least one of the readers of my weblog (you know who you are) will find it useful.

10 Steps to a Hugely Successful Web 2.0 Company

CharlieODonnel.jpgCharlie O’Donnell: “Create your own Web 2.0 company NOW!!

Its easy.  Just follow these 10 simple steps and you, too, can be seen in fine dining establishments like Jamba Juice and speaking on panels for conferences like Distribucate 2.0, Fred, Bloggerstock and Elfdex.”

Be sure to read the whole list, even though it might all seem like basic common sense if you’ve been following successful Web 2.0 companies as of late. And there is certainly something missing from this list, as I’m sure there’s a lot of people following it already (me included), but still only very few are hugely successful.

One sensible religious leader

john184.jpgIf I ever were to convert and embrace some kind of religion, it would probably be some type of Buddhism. It’s the only religion whose leader is able to say something reasonable on the subject of science vs. religion:

If scientific analysis were conclusively to demonstrate certain claims in Buddhism to be false, then we must accept the findings of science and abandon those claims.

(Via Evolutionblog.)

Is RSS 2.0 too ambiguous?

If even the father of RSS 2.0 is not sure whether an empty <title> element makes a feed valid or not, you might be justified if you are skeptical about the robustness of its design:

Dave Winer: “A note to the people who maintain the Gillmor Gang podcast feed — the channel-level title element is required. I suppose technically your feed is valid if it has an empty title, but it makes my aggregator unhappy. (Folders with empty names are frowned on by the operating system.) Could you please help me out and include a nice title, something like The Gillmor Gang, for example. Thanks. (While you’re at it, the channel-level description is required as well.)”

While the Gillmor Gang folks would do well in using a meaningful title, the really sad point here is that having such a poorly designed format be so popular makes the job of people developing aggregators unnecessarily difficult.

An aggregator that uses a feed’s title as the name of a folder where said feed’s item are stored is also highly suspect, as far as proper software design is concerned.

Google unveils new erotica search engine

Google unveils new erotica search engine: “MOUNTAIN VIEW, Calif. — September 15, 2005 — Google Inc. (NASDAQ: GOOG) announced today its plans to enter the lucrative adult content market with a new search engine that will be kept separate from its main line of search services.

Called Grotica, the new service uses sophisticated image processing tools to automatically categorize still photos and movies according to subject matter and degree of explicitness. Google’s powerful keyword search functions have been further enhanced for this application with over 3000 synonyms for anatomical terms and erotic activities.

When users visit Grotica.com they will be able to specify a plain language description of the material they are searching for, or point the search engine to an existing image containing similar content. Grotica will then use a proprietary ranking algorithm to return the most relevant hits.”

It would be cool if it were true ;). Unfortunately, it’s a fake.

(Via Steve Rubel.)

Re: The Black Art of Good Design

The latest BileBlog from Hani strangely resonated with me today:

So what’s the acid test for a good design? I have no idea. The closest I could come up with is A good design allows your code to do things you never expected it to have to do. It’s not about ‘oh I’ll add an interface here so I can plop in different implementations’ when there’s no sane reason you’d ever need more than one implementation, for example. […] For example, there are interfaces for simple objects that have both getters and setters specified, which makes creating a read-only implementation pretty unpleasant. I’d also argue that putting getter+setter style methods in an interface is an implementation leak anyway, mind you.

I just started working on a new project and the colleague I’m working with on it insists on putting interfaces on everything, even on beans which are mostly just containers for properties. And of course, getters and setters are specified in the interface.

I think getters and setters are indeed evil, but they are a necessary evil when your objects are used as containers for data to be shipped back and forth between a GUI and a database. They do not certainly belong to the interface, though.

I’d also argue that specifying an interface for these kind of (pseudo) objects is way overkill. The problem is he is also heavily into TDD, which I heartily applaud, but somehow thinks it’s necessary to test everything via mock objects, which requires having interfaces.

This goes to the point of mocking an OrderItem implementation to test that Order.getTotalAmount will call OrderItem.getQuantity and OrderItem.getPrice once for each OrderItem, which I find a bit too extreme.

Personally, I find this type of test to be:

  • Overspecified, as it does not just test that the correct amount is computed, but also that it is done following a specific algorithm.
  • Brittle, as the algorithm might change and we couldn’t care less as long as the correct result is computed, but we would be forced to rewrite the test.
  • An abuse of mock objects, which IMHO should be used to avoid dependencies on concrete implementations of external APIs. The same test, assuming it made sense, could be implemented in the traditional way without mock objects.
  • Much less readable than a traditional test.

I’m afraid all this TDD stuff, which is certainly valuable if done sensibly, is becoming to be abused as a means for avoiding to have to think about a proper design beforehand, as Hani hints to in hist post.

On the other hand, I will readily admit of being way too lazy in writing proper test cases, so I’ll concede the benefit of doubt. Maybe we can find a comfortable middle ground and I can start being more test-infected, which would be good.

What do you think?

Google Blog Search

g_bsrch_logo.gif

It had to happen, didn’t it?

Gmail as yourself

I know I am just the latest one reporting on this, but I will add a small twist. If you are using Gmail as the outgoing mail server in your client configuration, what this means is that Gmail won’t rewrite your From address anymore. As I’m using at least three different accounts when sending out mail, depending on who I’m sending it to, what’s in it for me is that I can now use Gmail as my only outgoing server, not having to fight with corporate SMTP gateways that insist on me having a fixed IP address or such. Even my cellphone is now configured to send mail out via Gmail.

What this also means, however, is that more and more of my life is tied to Google.

Back from Mexico

Maya RivieraIn case you were wondering why I had posted nothing in the last two weeks, well, I was simply on vacations in Mexico and forgot to write about it before leaving. Now I’m back, fully relaxed even if a bit jet-lagged and ready to dive into about 1500 new items in my aggregator and countless mail messages.

I also have about 200 photos to download, process, print, etc. I’m seriously thinking about upgrading my Flickr account to pro level, so that I don’t have to worry about maxing out the meager bandwidth limit of the free account. The places and their colors were so beautiful that I’d really like to share them with you.