Thursday, February 16, 2006

Speed is the unstated requirement

I hate unreadable code. So, whenever I see developers doing things like using StringBuffers instead of plain vanilla strings to make a couple of concatenations and tell me it’s to make the code run faster, I start to get nervous.

And very ugly problems have been caused in the name of speed and scalability. Remember when everyone was high about distributed objects? The fever is back again with xml web services in service oriented architectures. You wouldn’t believe the amount of useless serialization and deserialization I’ve seen in some systems.


But speed is one requirement that users will not state explicitly (like easy of use). If they do, it’s because the problem has already reached scary dimensions. And we need to understand that speed will play a major role in the likeability of our applications.

So optimize often. Optimize well. Be fanatic about speed.

Thursday, February 09, 2006

A day in the life...

This morning at work we discussed and sketched a class diagram and an entity diagram on the whiteboard. With hibernate we tend to think just on the class diagram, but some of us still need to think in tables.

After we started implementing it, we remembered that the information would have to be remoted across to the client. We would also need to create the admin interface to manage this and some db script to provision default values.

We used the eraser on the whiteboard and decided that we would implement those collections as hard coded enumerations and let our code generator handle the conversion from Java to ActionScript.

We will only have one early adopter client for the next few months and there were no real requirements to make this easily configurable yet.

A comment from a colleague of mine:


- In uni I would never have imagined that I would have a nice class diagram and entity diagram defined and that then I would want to dumb it down to an hard coded enumeration!


Hard coded values are not bad: hard coded unorganised values are bad.

Also if we had used word or visio to create the diagrams we would have felt that we needed to implement it the way it was first drawn. Whiteboards rule!

BTW all the logic and most of the complex UI has been successfully pair programmed today based on the specs that we had discussed yesterday with the client. Agile methodologies rule!

Saturday, January 07, 2006

The "new" Small Business Server 2003

Today I've received an email from Microsoft about the new Small Business Server 2003.

Have they noticed it's 2006 already?

This naming strategy worked when they were a fast company and wanted to make us feel we needed to upgrade.

Now it just shows how slow and bloated they have become.

Wednesday, January 04, 2006

Tuesday, December 06, 2005

A good IDE is worth a 1000 praise words

But if good documentation and images are provided I can spare you and just point you to those:
If you use VS.net 2003 download Eclipse and see what you are missing. Or upgrade to VS.2005 that must have copied most of this stuff.

In the confusion of java web frameworks I think I would miss ASP.net, but with Flex I'm playing with a more powerfull markup language than HTML anyway.

And I miss C# property getters and setters. But hibernate and eclipse are cool.

Wednesday, November 16, 2005

2 cool tips

These ones are not new, but I've seen far too many people not knowing about them.

1 - With any message box in windows


You can use Ctrl+ C and you'll get this in the clipboard

---------------------------
Save As

---------------------------
C:\test.txt already exists.

Do you want to replace it?

---------------------------

Yes No
---------------------------


Great for support or for gogling catastrophic error messages.

2 - The best blog reader out there is called firefox. Just use the button in the bottom right corner of the browser (In the address bar if you are already using 1.5).

Tuesday, November 01, 2005

Ajax usability: it's not just the back button

Why do grandpas feel web applications easier to use than desktop applications?
  • No dbl-click
  • No right click
  • No save/open
  • No menus
  • Left click hover feedback (hand cursor)
  • Back button
So now that we can create more powerful web applications with Ajax let'’s see if we can remember this and keep them simple.

Wednesday, October 26, 2005

Little signs of cool

Often you find them where they are least expected. As in the automated build procedure of a big dull financial corporation. It sends emails using this address: mrbuild@dullcompany.com

Sunday, October 09, 2005

Good Marketing


The New Zealand CanTeen foundation, that helps teenagers with cancer, has a bandanna week where they sell those bandannas in a lot of supermarkets. It's a great idea.

But the best part is that this year they had the approval from Disney to use the muppets manha manha (bandanana) clip in the tv ads.

Brilliant!

Tuesday, October 04, 2005

Office interface

Today one of the most recognized UI's with buttons (after the remote control up/down volume and telephone numbers layout) must be MS Office's.



If you change the money making mammoth you will upset a lot of people for sure.

So why do it?

1 - because it's bad and new users don't get it
2 - because someone could do it better and cheaper (as with gmail, StarOffice)
3 - because people are thinking what they have is good enough and they are stopping the upgrade cycle


Despite always being accused of being only a copier, there are actually some good UI tidbits from this company (the spell-checker underline from word6, the smart after paste drop down from XP). They just don't seem enough to justify so much money and mistakes like the office assistant. But probably nothing will ever be.

But it is nice to follow
http://blogs.msdn.com/jensenh/default.aspx
for some insight on history of the interface and to understand the reasons for the coming changes.

Sunday, October 02, 2005

Public property. Keep out!

We've been taught for years to do this:

private string _name;
public string Name
{
get {

return _name;
}
set {

_name = value;
}
}

But now that we know about agile and refactoring doesn't it sound like over-engineering? Shouldn't we simply say?

public string Name;


It's easier to read, uses less screen real estate and we can always change it to the former when we need.

Thursday, September 15, 2005

The return of the hourglass

One of the best tricks to improve usability in AJAX web applications is to use the hourglass
document.body.style.cursor = "wait";

And this has the side-effect of "fixing" a lot of asynchronous problems.

Saturday, August 27, 2005

How to be open without being open-source

Joel has been teaching us how to do that for years. Now he even publishes internal product specs on the web. Interesting read.

Unlike most, this software project does not have a lot of UI, actually it is a kind of simpler Remote Desktop, so it "borrows" all of it from the OS. But in regular projects I think that software specifications should be mostly UI mock screenshots. Images are really worth a thousand words.

Wednesday, August 24, 2005

The gadget I'm going to buy

The next gadget I'm going to buy is a cellphone+ipod+blackberry+>3mpx camera. I'm not going to buy anything else that can become obsolete when this arrives. The technology is there, so why is it taking so long? Oh, and make it cheap too, please.

I'm in NY for the first time

  • It smells like trash.
  • The temperature is on the 90F (38o).
  • It's noisy.
  • I'm away from Joana and working long hours to keep up with my team back in NZ.

But I can't help it, I Love NY

It is the most amazing city in the world.

Why the PC platform beat Apple

There are more theories for this than for the disappearing of dinosaurs. Here's mine: Piracy. Back in the mid, early 90's you could get any software (and games) easily for PC. You needed stupid serial # for Mac. So everyone bought PC because the software was "cheaper".

Hardcore User Interface expert

Today I was called an "Hardcore UI Expert". I liked the sound of that, maybe I'll make a t-shirt. But it also kind of reminds me of the joke about architects, not man enough to be civil engineers, not gay enough to be interior decorators.

Gmail invitations are the best anti-spam technology

If you're on gmail someone knows that you are not a dog.

Functional Test First

Developers should only interact with their applications in 2 modes:
Record Mode & Playback Mode
This would speed up development and provide valuable functional tests.
As every rule there is an exception: There is also the Flawless Demo Mode when you are showing it to the client.
Functional tests are stronger, provide more code coverage, and are more refactoring-proof than unit tests. But it should be the role of developers to do them, not of a different QA team that sits on the 2nd floor.
They are also recorded in a language you should understand: the end user language (write text, click button, assert result...).