Tuesday, November 13, 2007

Yet another loss for client-side Sun

I've been doing a lot of reading about Android and all the hoopla. The first thing that confused me was the fact that the sample Android code looks exactly like Java, yet they don't call it Java. Here's why.

Let's examine how much Android completely effs Sun. Android uses the Java language, but not the Java VM. So technically it's not Java. In the mad rush to profit from the impending mobile Internet platform, Sun has placed it's bets on JavaFX to strengthen Java ME and Java SE on mobile gadgets. Unfortunately for them, the problem wasn't the difficulty of the programming language, but the fragmentation and incompatibilities between VM's which has hurt mobile Java. Android is designed from the ground up to create compatibility first, and that's a major factor in the success that it will enjoy. And since it all runs on the Dalvik virtual machine instead of the official Java VM, Sun gets a solid zero dollars out of it.

Monday, November 12, 2007

Today, Google released their Android SDK amidst massive hoopla. I was pretty excited about this too, but after reading some tutorials, it just looks like a slightly beefed-up Java ME. I guess the intent is to create better compatibility among different phones, but frankly, I don't see what all the hoopla is about, other than the fact that Google is behind it. What am I missing?

Update:
After more reading I've changed my mind. It seems to me that the iPhone is still way "cooler" than any gPhone (it better be for how much it costs), but I can see how much value the top-to-bottom stack of software that Android offers can really help compatibility between different phones.

Saturday, November 10, 2007

A Tale of Default Behavior

I built a new computer a couple months ago and, naturally enough, installed Windows XP (for games). Since XP comes with Internet Explorer 7 and I have only used Firefox for years, I figured I'd try IE7 just to see what it was like. The things I immediately noticed were that if IE7 is closed with multiple tabs open, when it is reopened, it will reopen all these tabs. I had never seen this feature before in Firefox and I really liked it. The second thing I noticed was IE7's a lack of "Undo Close Tab" like in Firefox, which I really miss. To make a long story short, IE7 started crashing fairly frequently, while Firefox never crashed - ever - so I switched back. But I missed the reopening of tabs when starting Firefox that I made the effort to see if it could be done (the effort turned out to be about 5 seconds of Googling it). Turns out there is an option to reopen tabs from the previous session under Tools->Options->When Firefox starts. Ahhhh, that's the ticket. I guess that just goes to show how important the default behavior for an application is, even it can be configured to behave differently.

Anyhoo, here is an in-depth analysis of the Excel floating point rendering bug.

Tuesday, November 6, 2007

Mainstream Consumer Linux?

Many have been claiming that "desktop Linux" is going to break into the mainstream this year (for the past decade). Until now, I would have say that has proved to be bunk. But in light of this and this, and other developments, it seems as if Linux is finally breaking through in the consumer market. At last!

Wednesday, October 31, 2007

I just can't miss an opportunity to promote Ron Paul:

Java Serialization Debugging

Today I had a fight with Java as I was inadvertently trying to serialize something that was not serializable. The object being serialized had a crapload of fields, which in turn, all had craploads of other fields so I pretty much had no idea what was causing the incredibly uninformative "Exception in thread "main" java.io.NotSerializableException." So after spending an hour trying to write a function to reflectively traverse the object tree in search of non-serializable fields, I found this helpful piece. The DebuggingObjectOutputStream is nice, but the comments have something even more simple and helpful: set the vm parameter sun.io.serialization.extendedDebugInfo=true, and voila, helpful stack traces to find what object is actually causing the serialization errors!

Monday, October 29, 2007

I apologize to all my die-hard readers out there yearning for my every word, as I was on vacation last week and was unable to post. To summarize: Washington DC is cool. You should go. In the meantime, I still have nothing meaningful to say, so a link to someone who does will do.

This is really only going to make any sense if you have done any programming, but if you have, it's hilarious.