if ( document.comments_form.url ) { document.comments_form.url.value = getCookie("mtcmthome"); }
It's been about a month now since I switched my entire environment from Outlook to GMail, so it's time to do a quick check up.
Since a lot has been said about GMail, I will try to focus on details that have never really been covered and explain in what ways they improved (or not) my email-reading habits.
Overall, the experience has been tremendously positive and GMail is more than meeting my email needs, which I thought were pretty stringent. And of course, GMail is improving on a weekly basis, so there is a lot more to look forward to.
I was quite a bit surprised to find pumpkins everywhere in the main cities of World of Warcraft today.
This was already funny it itself, but the Warcraft developers didn't stop there: if you talk to an inn keeper, you can "trick or treat" and you will then receive either a candy or a wand.
The wand will randomly turn one of your party member into a pirate, a ninja, a skeleton, a worm, a miniature cat, and many more possibilities that I haven't discovered yet (click on the picture above for a larger image). At any rate, this little patch is causing hilarity throughout the various realms.
The Blizzard developers are having way too much fun.
It's not without a certain sense of irony that just as Gilad Bracha, Sun's language expert, starts blogging about the next Java, Microsoft publishes the specification for what will become C# 3.0. Interestingly, these two pieces of news are a pretty good illustration of how the two companies work.
Gilad's post discusses the possibility of adding a new bytecode to Java's virtual machine: invokedynamic. If you put aside the obligatory Microsoft jabs that all Sun employees seem to feel forced to include in their posts (it's probably in their employment contract) and the fact that accusing Microsoft of coming up with non-standard terminology while Java came with its own term reinvention (why Generics and not Templates?) is quite ironic in itself, the entire entry is really focused around this simple consideration: what are the repercussions of adding invokedynamic to the Java Virtual Machine?
I'll let the experts discuss between themselves, but I can't help making two observations:
Still, it's quite discouraging to hear from Gilad that should this change be approved, it wouldn't make it into Java before the next next (that's two "next") version of Java. Probably at least two years in the future.
And on the other side of the fence, you have Microsoft, which used its own process to find a heir to the very successful C#: work behind closed doors and when done, publish it and tell the world "this is it".
It's easy to hate this approach, but there is also a lot to like about it. While I share some sympathy for Gilad's fondness of committees (his words), my experience has taught me that committees just don't work for languages. Successful languages are not created: they just happen. And there's not much you can do to drive that process.
Does this mean I like all the new C# 3.0 features? No. And actually, C# 3.0 has so many new features that statistically, you are guaranteed to hate at least half of them, but this is an approach that has been pretty successful for C++, and I expect the same success for C# 3.0.
I can't help giving credit to Microsoft for coming up with so many innovations and such a rebel attitude. I am predicting that C# 3.0 will usher us in the fifth generation language era and that all the features they are adding to C# 3.0 will be the new reference against which future languages will be judged.
There is a lot to say about these new features but going over them would make this post too long, so I'll save this for a future entry.
I am very happy to announce the immediate availability of TestNG 4.0. There are a lot of improvements and new features in this release, so we decided to skip to a major version (actually, we considered calling it version 5, but it wouldn't have been fair to JUnit ;-)).
The change log is included below, but I'd like to take this opportunity to discuss one of the new features: Data Providers.
TestNG lets you specify parameters to your test methods, and their values are then defined in testng.xml. This approach works fine in simple cases but is not enough when:
Data Providers address these two problems and also let you specify as many sets of parameters as you want, so that your test methods will be invoked several times, each time with a different set of parameters.
Here is an example:
// This test method declares that its data should be supplied by the Data Provider
// named "test1"
@Test(dataProvider = "test1")
public void verifyData1(String n1, Integer n2) {
System.out.println(n1 + " " + n2);
}// This method will provide data to any test method that declares that its Data Provider
// is named "test1"
@DataProvider(name = "test1")
public Object[][] createData1() {
return new Object[][] {
new Object[] { "Cedric", new Integer(36) },
new Object[] { "Anne", new Integer(37)},
};
}
This code will cause the method verifyData1() to be invoked twice, once with "Cedric", 36 and then with "Anne", 37.
Of course, this data can come from more complex places, such as a file, a database or the network. Since the creation of the parameters is done in Java, anything is possible.
This is a big release for the TestNG team, and it wouldn't have been possible without a lot of hard work from Alexandru Popescu and Hani Suleiman. Thanks guys!
TestNG 4.0 can be downloaded on http://testng.org and the Eclipse plug-in has also been uploaded to the update site. Here is the change log:
Change log for TestNG 4.0
Core:
Eclipse plug-in:
IDEA plug-in:
Google is hosting this month's Mobile Monday tonight, and the topic is "Mobile Search". Since we are merging this event with SD Forum, we are expecting a pretty big crowd, so if you are interested in knowing what's happening in this area or you just want to hang out and discuss mobile topics, stop by!
The event starts at 6:30pm and you can find all the details on the speakers and the directions here.
See you tonight!
Hope to see you there!
I enjoyed playing with Entbloess but more for its aesthetic value than its practicality. With TaskSwitchXP, I might have found a task switcher that is actually better than Windows' default one.
TaskSwitchXP has many features, but there are really two that I already started getting quite used to:
You don't really realize how much you depend on task switching until you try another utility than Window's default one. And when you do, the first thing you really want is for the behavior to be exactly the same. Not only do I use Alt-Tab and Alt-Shift-Tab a lot, I now have very precise expectations on the stacking order of my windows.
I use both Windows XP and Linux at work, and I realize this fact the hard way every day whenever I try to task-switch on KDE. Not only is the task switcher ugly and very hard to use (very small icons), it uses a stacking order logic that I still haven't been able to completely figure out.
As far as I can tell, TaskSwitchXP is completely compatible with the default task switcher and it also adds interesting features like being able to switch only between the instances of your current window (for example, you are in a FireFox window and you want to switch to another FireFox windows). The default hotkey for this functionality is a bit awkward, so I 'll probaby want to change it (TaskSwitchXP is completely configurable), but once I have found one that I want, I will probably start using this feature a lot.
I'm curious to revisit this choice in a few weeks and find out if I have gotten hooked to it. In the meantime, try it, it's small, inconspicuous and completely free.