Thursday, March 31, 2005

Work Desk Competitor - Windows

Today I read a good article from Fred Langa, about features built in Windows that could compete with Work Desk, in solving the many problem of maintaining files from different computers in sync: the briefcase and the offline files.

Read the article: Little-Known Options For Syncing Files In Windows

The opening of his article, "Reader W.R. Clark had a problem common to millions of us who carry work from the office to our homes, or vice versa;" make me feel even more confident that there is a niche for Abassis Work Desk. The "connection break" when you change computers and need to continue working is a real issue. Some people solved this problem using only one computer, a notebook with support for a base station. But for people working on two or three computers (at work, at home and notebook), Work Desk could create a mobile working environment, independent of the computer currently in use.

The only thing I have mixed feelings about is Offline Files. It seems nice, but I can't right know envision how to implement this feature in Work Desk seamlessly. But I do agree that there is a need to access a file on a file server, and have access to a copy of this file when you do not have access to the file server for some reason.

Funny how something quite advanced available in Windows is almost never used. I think this feature lacked some publicity, besides it could have an easier interface. So, I've found another competitor, Windows. This is bad because the features are there and free. Luckily their interface lacks ease of use, and after so many years I don't see people using it, but a competitor there s nonetheless.

(0) comments

Friday, March 18, 2005

Working on Work Desk - Tab Design

Let's discuss a bit of interface design. It's almost taken as common wisdom that programmers should not design program interfaces. And this is mostly true. Not because programmers are dumb or lack some sort of design gene, it's just that they aren't use to think about the user. Even programmers working on software that will be used for dozens or even millions of people quite often have NO IDEA of how all this people will be using their program! What do they do then? Simple, they take the easy way and design the program for themselves!

Programmers are so used to think that all the billions of people in the world will act and think like they do that it’s quite amusing to watch programmers discussing. For example, if in a programmer’s forum someone posted the message "Hey, what do you think about such a business: bottling pure water and selling it?" he would be bombarded with messages of the like: "Bullshit, I would never buy water in a bottle and doubt anyone would. The water flowing off the tap is treated and drinkable, in case you don't know." Mind you that the later poster is right to a certain point, his single error was assuming that billions of people would share his same point of view. Tell that to Madonna.

Well, enough with programmer bashing. Let's do a simple exercise, try to think about the plan for a house, for another person. You don't know this person, but try to think about how a house for this person should be like. Just try to design the main room, bathroom and bedroom. No easy job, right? Although you know this person will watch television, take a shower, and get some sleep, there are specific needs that you just don't know, and if you do not spend some time figuring out that other people have different needs than you, you never will. Suddenly you discover that is much easier to design the house for your own needs, and just hope that others' needs are the same as yours. And this is what most programmers do.

When we talk about computer programs, the house plan is the interface, and when you download a program that can not be used without a mouse, that's because the programmer who wrote it always have a hand over the mouse, or if the program does not show completely on your 14" monitor with 640x480 resolution, it is because the programmer is busy working at 1024x768 resolution on his 17" monitor. So, as Joel Spolsky said way better than I ever will, the secret to good interface design is to just recognize that the programmer will not be the only user of the application, and other people have different needs than him, even if they are generally equal.

Work Desk will be based on tabs, or pages, or worksheets if you are a heavy Excel user. Each tab will represent a different project that the user is working on. So I must decide how the user will create, rename, reorganize and delete these tabs. What will the visual of such tabs look like and what functions it will have.

For a lesson of what is right and wrong, let's analyze how Excel 2000 implements worksheets. Although my needs for Work Desk are a little different, this will be a nice example of doing things right and wrong.

Excel worksheets: things done right

1. Positioning
Someone must have studied and discovered that most users do not use multiple worksheets. So the worksheet information is at the bottom of the screen, reduced to the actual sheet and navigation buttons

2. Mouse Access
With the click of a button, the user has access to all functions related to worksheets, effectively managing them.

3. Advanced Mouse Access
Expert users can use the mouse to move (click and move) worksheets and rename them (click and hold)

Excel worksheets: things done wrong

1. Insertion at the Start
We are used to insert new things at the end of a list of existing things. Excel chooses to insert new worksheets as the first item. This is a design decision, but I doubt that it was based on studying user behavior

2. Menu Maze
If an Excel programmer were forced to manage sheets for an entire day using only the keyboard, I bet that soon he would discover that may be distributing worksheets commands between three different menus and a submenu was not the wisest choice.

3. Keyboard Only Access Unless the user know how to look the Shortcut keys on the help and learn that Ctrl-Page Down and Ctrl-Page Up keys are used to navigate between worksheets, we will never be able to navigate between the sheets without a mouse.

4. Naming InconsistencyIs it "worksheet" or simply "sheet"? Even the menu items got a little confused on deciding the right term. The help file refers to worksheets, as do the Insert menu, but the rest of the interface refers to sheets. Consistency in such little details is important for novice users.

Before I develop the tab functionality for Work Desk, I must first raise all requirements for such feature:

Next, I must define the profile of the user base for the program, which will profoundly impact the interface design. Decisions made for business users could be very different if the target was teenagers or even little kids.

Finally, I must define the most used actions related to tabs, in order of importance:

Navigation - Paramount to Work Desk, the tab shows in what project the user is working on, and the user must have easy access to the other project (tabs). Even is the user have 10 different project, access for all of them should be as easy as one mouse click

Inserting and Reorganizing - The user will add new tabs, and reorganize them according to criteria like most relevant, alphabetical order, or even group projects according to a theme.

Archiving - The system may have some sort of tab deprecation, were tabs that are not used anymore are stored. This is not necessary immediately, and requires more thought in order to avoid confusion

Deleting Tabs - as the user deletes a project and all of its data, the tab also must go.

So, in Work Desk's case, tab navigation is primordial, closed followed by inserting new tabs and repositioning them. The interface should be easily accessible by the keyboard, and shortcuts are welcome. I must have this in mind when choosing the objects for Work Desk. I will update this article once I find the solution.

(0) comments

Monday, March 14, 2005

Abassis 1.3 Freeware Edition

I've made it. This past weekend was spent on polishing up the freeware version of Abassis Finance Manager and putting it online, besides updating the website. This is just the first step, now I need to update all the listings for Abassis in dozens of download sites.
Talking about that, there are some whacky download sites out there. Some do not let you update the information about your own product, some have very restrictive author access controls, meanwhile others have none. Because it is so easy to put up a website online, every guy who dream of becoming the next have his own ghost ship download site. Although you want to list your product there, you never know if it is worth the effort. This remembers me that for each drummed story of success on the internet there are hundreds of unspoken failures.

I really should start to write about all the difficulties to put up a software online and support it. Hopefully Work Desk's story will extend so far. The last 20 hours working on Abassis Finance Manager were spent in everything but coding.

(0) comments

Friday, March 11, 2005

New Version of Abassis Soon

I've finished setting up a work environment on my new machine, and returned to work on Abassis Finance Manager. Yesterday I removed all shareware mentions and locks in the program, effectively turning it into a freeware. Now I must change some other files and documents and make version 1.03, Freeware Edition. Finally, to launch the new version I need to edit the website, remove all mentions and links about paying for the software, and inform of the new version. I expect that a new version and refreshed website will be online by the 14th or 15th of March.

To improve Abassis Finance Manager, I must overcome the procrastination start using it on a daily basis, a.k.a. eating my own dog food. Now is a good time to start, I can easily input all data for January and february of 2005, and do a parallel use of my trusty old Excel spreadsheet and Abassis Finance Manager, annotating ways to make Abassis easier to use and making sure it is doing all the calculations accordingly I'm pretty sure it is indeed, after all my tests, but it would be nice to make sure with all my own financial data.

(0) comments

Wednesday, March 02, 2005

Abassis Work Desk - Design Decisions Part 1

I'm still configuring my development environment, both for Abassis Work Desk and Abassis Finance Manager, mainly downloading and installing sets of components in Delphi that I will use in the programs.

These components are responsible for most of the things a program is able to do, like show an animated icon on the tray bar, beside the operating system clock, or write data in XML format. Delphi comes with a default set of components, but not enough to cover everything.

I've been putting off start working on Abassis Work Desk, because I have to make some major design decisions before starting, and whatever I decide will define the components that I will need and the features or limitations of the application.

The main decision that I need to make is if so and how much Abassis Work Desk will be integrated to the operating system. I can aim at full integration, half assed integration or no integration. A full or half integration have the benefit of making use of the resources available in the OS, besides allowing some of the information to be shared between applications. A no integration strategy has the advantage of portability and guaranteed integrity of the information.

As an example, Abassis Work Desk will have a little address book, with the name, e-mail and phone numbers of the people related to a given project. Integrating the software with the address book that exists on the operating system has the following advantages:

- the user could use the known interface to add contacts in the new software
- instead of relying on a simpler address book, the software will have a full featured address book available
- the user will be able to use the address book entries with his e-mail program
- the user can manage the address book entries outside of our application

The last advantage is the root of the problems when integrating with public resources, accessible between different applications. You can’t rely on their existence:
- what would the application do if some address book entries just disappear, because the user deleted then using other application
- when restoring an existing project, if the application inputs the entries on the address book, it’s automatically inserting data in a user area, which would bring problems, like what to do if an entry already exists, or if the application is being used on a public/friend’s machine
- if the user logs in the system with another login, he won’t see the complete data of the application, for example he may see data files but not contacts. Should all data be user dependant?

I had some problems of this sort with MSN Messenger. This is a instant message software, and for some reason someone working at Microsoft decided that if would be a great idea to integrate the contact list of MSN Messenger with the address book. If you want to send them messages, why not e-mails also, don’t you think? When I installed this software and added my friends, my manually edited address book suddenly got lots of entries due to MSN Messenger. As people need a dotNet Passport to use it, most of them create Hotmail accounts to just that. Now, I have two entries for each of my friends. One edited by me, with their correct e-mail address, and other created by MSN Messenger, with a token e-mail address used only casually. Had I not taken the care of editing the MSN Messenger entries, when I used features like send e-mail just entering the name of a friend in the To box, I wouldn’t know for sure to which address the e-mail would be sent. This is one of the problems of integrating applications. If I erase an address book entry, does that mean that I don’t want to contact that person anymore in MSN Messenger? I didn’t try to do that, but the answer is pretty ambiguous.

I am normally against mixing up user entered and application data, but I have to agree that there are advantages on this strategy. Which path should I follow? Which path should Abassis Work Desk follow? What worries me is that as the sole developer, I must make a decision that will affect thousands of other people. So I’m giving it a good thought, to not feel sorry later on.

(0) comments

This page is powered by Blogger. Isn't yours?