Archive for March, 2006

New Screenshots of Office 2007

Jensen Harris has posted on his blog new screenshots of Office 2007. I like what I see so far. They have redone the colour scheme to a shinier shade of blue, but the changes to the UI are a definite improvement. I am really excited about what Microsoft is doing with this new version of Office. I never thought I would say that about a Microsoft product, but this version really does look inovative.

My favorite part of the interface is the live update. As an example, if you have some text selected and you want to change the font, all you need to do is mouse over the fonts in the font list and the text on the page will automatically update itself. This allows you to see the result of applying that font on the text and on the page. This is how computer programs should work. In addition, the UI updates itself depending on what you are doing, so if you are working in a table, it will show you the operations relevant to a table. Yet another thing that an interface should be able to do.

Quake 3 on 24 monitors

I have got to get me this computer setup, this is just incredible. Imagine playing Quake 3 on 24 monitors controlled by 12 linux server!

ars technica: MacBook Pro Review

ars technica has posted a MacBook Pro review that is excellent and once again, the new Duo Core processors and the computer overall is fast. If these things hold up over the next few revisions, I may dump my desktop computer and go with a notebook as my fulltime computer. I would just need to get a second monitor for it. Although, there is still a big part of me that wants the quad G5 still.

EclipseZone – Generating good hashCode() and …

EclipseZone has an interesting thread going about generating good hashCode() and equals(Object) methods. The article starts off showcasing a new feature in Eclipse 3.2M5 which autogenerates the two methods based on the fields in the class. The interesting part though is in the comments and centres around the validity of using classA instanceof classB versus classA.getClass() == classB.getClass().

This is something I had never really though about, but apparently the former is just plain wrong and the latter is the correct implementation within an equals(Object) method. The reason has to do with class heirarchies and the math behind the equals method. The Javadocs for equals() states that it should be:

  • Reflexive – so for any non-null reference x, x.equals(x) should return true
  • Symmetric – so for any non-null references x & y, x.equals(y) should return true if and only if y.equals(x) returns true
  • Transitive – so for non-null references x, y & z, if x.equals(y) returns true and y.equals(z) returns true, then x,equals(z) should return true

However, instanceof violates these rules due to inheritance. Specifically, it is non-symmetric. Whereas x.getClass() == y.getClass() maintains the mathematical relationships between references by ensuring that the classes are the same.

This is something I never knew before. I had always been taught to just use the instanceof operator to short circuit the test and ensure that both classes were the same before making any cast. I think I have a few classes to rewrite in my TeamDocs application.

I strongly suggest that any Java developers read through the entire thread. It does degrade a little in the middle, but the arguments on all sides are worth following. Overall, it is one of the best discussions on this topic that I have ever seen.

What a beta software error should look like

I have been playing around with the new Democracy Player which is in Beta currently (for good reason, it is far from stable) and it threw an error. This is what came up:

Democracy Player error dialogue

This is an excellent example of what an error message should look like for a beta product, in my opinion at least. It provides all the information that the developers need to diagnose what happened and it provides the user with the information that they need as well.

I tried another beta out once and it crashed. I submitted a bug and, as a reply, got an email that told me that my bug report was pretty much useless and could I please recompile the software using such and such flags, try what I did again, and please email them the complete stack trace. No way. I uninstalled the program.

The developers of Democracy Player though provide the stack trace, the log file, everything in the little window frame along with the web address to submit a bug and a humourous error message at the top of the dialogue box to reassure the user.

As for the Democracy Player, it looks like it should be excellent once they have all the bugs squashed. However, till then, I would advice people not give it a try. In my opinion, it should not have been released, even as a beta. It feels more like a pre-alpha release. Although, it is a very cool idea and I look forward to watching it evolve.

Apple – Mac mini

The whole world probably knows by now that Apple released two new versions of the Mac mini today. These look like really cool computers. Although, if memory serves me correctly, aren’t these a touch bit more expensive then the G4 versions?

The Duo Core version would be nice to have, although, I think the price is a little steep for a computer that does not come with a monitor or a keyboard/mouse. In addition, the top level one only comes with 512 megs of RAM. If I am going to pay $949 CAD, I want at least a gig of RAM. But, with that said, I am most likely going to be buying one to act as a media center. Even though I have to purchase the video adapter separately.

Time to pay another visit to the Apple store.