Monday, March 31, 2008

IM versus Phone

I enjoy IM much more than phone. Of course phone is best at times.

However, mostly, I really enjoy IM
  • IM doesn't have the "urgency" attached to it - I can solve a request on my own time
  • IM is logged by default (while phone is not recorded by default)
  • sometimes you forget things over the phone, while with an IM, you can later remember them
What do you enjoy?

Saturday, March 22, 2008

Thy Visual search... - update

After a few more clicks, I found out there's another 3d search engine:

First of all, this works now. I downloaded it, it's really really cool. I did find a few bugs, but it's understandable. So, prepare for the next era of browsing...

Thy Visual search...

I've just seen it -

It shows you search results, visually.

It's quite amazing, not sure if others had the same idea before, but I think this one came at the right time:
  • a lot of people have broadband (which you need in order for the search results to be visual)
I do believe it can improve your searches, but I need to check it out live, before making further comments. Take a look!

Thursday, March 20, 2008

Email: Check for messages when?

Yup, most (if not all) email readers have a "feature" : Check for email messages every X minutes.

That's a misfeature:
  • if you check it too often (like every 10 mins), you get bugged too many times (usually you hear a sound and some message near the system tray)
  • if you check it too seldom (like, every 2-3 hours), you could find out about stuff too late; things could get worse if the email server is down exactly when you check it (happened to me a few times)
  • the program should alert you only when emails that interest you arrive (see below)
Email checking should be done every 5 minutes (this is a reasonable default, you should be able to customize it).

However, alerting you when new messages arrive, that's a completely different matter (in other words, the mail reader can check and download new messages every minute if it wants to, but it can tell me about new messages every hour).

New email messages can be split into 2 categories:
  1. message from someone you already know, related to some matter you probably know
  2. message from someone you don't know yet (so you don't yet know how you should react)
In the first case, you'll have your filters (don't you use filters? you'd better learn how to use them fast!) sort the email and put it into some folder.

In the latter case, new email will just go into the root folder, which is usually ok anyway.

Having that, here's what should happen:
  1. For certain folders, you can have an alert (when a message gets routed to a folder, play a sound).
  2. Otherwise, let the program alert you every hour or so (of new mail)
Now this is a huge advantage over what's happening today. Imagine this: you can instruct your colleagues, partners, etc. to include '[critical]' in the email subject to let you know of something that is indeed critical. Then, when something really urgent hits, you'll know in 2-3 minutes, helping you deal with it ASAP. And you know that the earlier you solve a critical issue, the less damage it does - every minute could count!

What is achievable now:
  1. there's an extension for Thunderbird: "Mailbox Alert" which can trigger an action when a new email arrives into a certain folder (the case 1 above)
  2. anyway, every hour or so, I read new mail (the case 2 above)
Well, it's as close as I could get to perfection ;)

Wednesday, March 19, 2008

We're gonna implement that cool feature! Great, but who's gonna use it?

Assume you're a programmer, part of team A to develop product B. You have release X.Y.Z coming up in 2 months, and there's plenty of features to develop. So, lets make up the list of features to develop, for release X.Y.Z.

A lot of companies these days are democratic - they will create some great meeting(s), involving all the team, and then deciding what (features) to implement next. Then, go ahead and do them, and as release approaches, well, just drop some features (those too hard to implement).

Sounds (too) familiar?
Well, I'm here to tell you - it's wrong!

No matter how democratic a company is, when deciding the features to implement, this should be up to the User Experience department.

Why? Because programmers will just choose the features that sound coolest for them to implement, not with the benefit to the user in mind. It's very hard for a programmer to think like a user, and even if you think you do, you're too close to the code.

The features should be in line with your customers' needs, and the priority of the features should always match those needs.

The challenge for you, the programmer, is to make it happen. It's good to be under a bit of pressure, so that
  • you'll talk to the User Experience department to understand what this feature offers the user, to implement it right
  • you can focus on using the best tools (as opposed to subjective thoughts like, I'm not using Language X because it lacks A,B,C)
  • you can shift focus on getting things done. We programmers tend to spend a lot of time blabbering about which technology is cooler/better/etc. - but it doesn't matter. You first need to understand the problem, and then choose the technology you'll use to solve it (not the other way around)

Thursday, March 13, 2008

Directories - a flawed concept...

Yes, I'm talking about thy usual directory. Or folder, if you wish. What your OS provides you with. And you explore with "Windows Explorer", or some clone, or some *nix tools.

It's a concept invented by a programmer, long long time ago, and I'm sure it seemed a very nice idea at the time - a way to structure files. And to us, the programmers, folders are 2nd nature - it's so much in our blood, that we never question it.

It's a flawed concept!


Because finding a file is just too hard:

  • the user needs to know too much about the file's location - basically, he needs to know all the path leading up to it
  • or, he needs to search for it (which takes CPU time, he could be searching in the wrong place, etc)
  • when dealing with multiple files/ locations, there's too much burden - on where which file/folder is

But now, the root problem: an item (i.e., file) can and usually belongs to more than one place.

The examples are endless:

  • that Excel report you just made for HR, belongs to at least 2 categories: HR and Reports
  • that cool header file you just added to your project, belongs to at least 2 categories: Headers and [ModuleName] (the module it's for)
  • that movie you just saw belongs to lots of categories: Movies, SF, Thriller, Kevin Spacey, etc
  • just rethink a bit about some of your files: you'll find at least one more category than the one they're in

Directories just show a too-limited view of the world...

Workaround #1: Shortcuts, Hard Links, Soft Links

... are just a workaround for a flawed way of storing information. Each file that is somewhat important to you would need a few shortcuts. You’d end up having hundreds or thousands of shortcuts. But who has the time to create them? And then, when you move/rename a file, then what?

Workaround #2: Virtual Folders

... same thing (virtual folder = the results of a search, shown as a folder). This is not what you want. It’s not as if every movie name has “movie” as its prefix so that a search for “movie” will return all movies...

The solution: Categories and Aliases

As I already pointed out, categories are a much more meaningful way of storing information. Most information belongs to more than one category.

Aren’t familiar with the term categories? Maybe you’re more familiar with other terms: labels, tags:

  • when you write a blog entry, you can specify multiple labels: it’s the same thing – an entry can have multiple labels; a user can select a label, and see all entries that have that label
  • when using digg, you use tags, with the same meaning: a certain site can belong to multiple tags
  • Google Reader uses the term “folder”; however, when you subscribe to a feed, the subscription can be placed into multiple folders.

All the above show how easily you can structure information into categories.

But how do I browse?

Having this hierarchy-based thinking so built into us, you’ll definitely ask that. Browsing can still happen in an Explorer like fashion:

  • assume you have a root. Lets call it “/”
  • expanding the root will show some aliases; I’ll explain them in a moment (for now, just think of them as some very clever shortcuts)
  • expanding an alias will show categories, other possible aliases, and files
  • there will be an alias called “Everything” – expanding it will show all categories and all files
  • expanding a category will show
    • all the files that are in all categories expanded so far (including the now expanded category) and
    • all the other categories that share files with all expanded categories

The last one is a bit tricky, so I’ll give you a short example.

What’s an alias?

An alias is similar to a shortcut, but in the context of categories. An alias is:

  • a union of one or more categories
  • you can treat it exactly like a category

An alias is just a better name, suited for you - the user, one that names what you want in a simpler way. For instance, you could call the group of categories [“Incoming" and "Document" and "Resumes”] as “Incoming CVs”.

There’s a fundamental difference between an alias and what you currently know as a shortcut. But it’s not very relevant here, and I’ll let the diligent readers find it.


The benefits are too many, here are just a few:

  • straightforward storage: the storage is made with the you – the user – in mind; information is organized into categories, matching the user’s thinking; when a file logically belongs to a category, just add it there – simple, straightforward, and easy
  • easier search: finding information that belongs to several categories is as easy as expanding those categories, and seeing what’s there. Just think how easy it can be to find all movies that are SF and comedy. How about cartoons that are SF?
  • no unneeded duplication: if you want to add the file to a category, just do it – you don’t need to copy or move it; it will then belong to one more category
  • easy to personalize: you can easily select groups of categories which you use often, and create aliases for them; this beats shortcuts by far. Imagine an alias to My Last 3 projects, or Anything with Kevin Spacey.

Other things you can do:

  • History: can be a category; some program can update this by keeping a history of, lets say, last 100 opened files. Each opened file is automatically added to “History” category
  • Favorites: (have a category called “Favorites”) anything can be added to Favorites, not just URLs
  • Last Searches: the Explorer program can remember the last 20 searches. After a search is run, an automatic category is created, called “Searching ... on ”, and the files that match the search will automatically be added there
  • Visited Web Pages: pages that are viewed, can be placed into aliases called “Today”, “Yesterday”... Assuming today is 12 March 2008, I’ll have a category called “12 March 2008”, and “Today” will be an alias to it. When the day becomes 13 March 2008, the “Today” alias will point to “13 March 2008”, and “Yesterday” will point to “12 March 2008”. This way, you can keep a more detailed history with pages visited each day, for the last, lets say 50 days.

What next?

Using categories instead of folders should have happened long time ago. WinFS had some intent of implementing something similar.

All the above is doable – on Windows, simply have a virtual drive on which you implement “Categories”. I’m not saying it’s easy, but it’ll be:

  • cool to implement
  • challenging
  • a real benefit for the users

Sounds like an excellent job for me! I’ll talk to Microsoft, Google and other companies, to see who wants me to implement this for them.

And I’ll be the first user of Category Explorer!

Wednesday, March 12, 2008

Directories - a flawed concept... - Example of aliases

Say I have 4 categories: HR, Document, Resume, Report.

  • I have the following files:
    • My Test Doc, belonging to Document
    • John’s Report, belonging to Document, Report
    • Yearly Report, belonging to Document, Report
    • My Recruiting Report, belonging to HR, Document, Report
    • Victor’s Resume, belonging to HR, Document, Resume
    • HR Evaluation, belonging to HR, Document, Report

Browsing away:

  • I’m in “/Everything”. I see all 6 files and 4 categories
    • I expand to “Document
      • I’m in “/Everything/Document
      • I see HR, Resume, Report categories
      • I see all 6 files
    • I expand to “HR
      • I’m in “/Everything/Document/HR
      • I see Resume, Report categories
      • I see 3 files: My Recruiting Report, Victor’s Resume, HR evaluation
    • I expand to “Report
      • I’m in “/Everything/Document/HR/Report
      • I don’t see any more categories
      • I see 2 files: My Recruiting Report, HR evaluation
Browsing away, take 2:

  • I’m in “/Everything”. I see 6 files and 4 categories
    • I expand to “Report
      • I’m in “/Everything/Report
      • I see Document, HR categories
      • Note: here I don’t see Resume category, since there aren’t any files that belong to both Report and Resume
      • I see 4 files: John’s report, Yearly Report, My Recruiting Report, HR Evaluation
    • I expand to “HR
      • I’m in “/Everything/Report/HR
      • I see Document category
      • I see 2 files: My Recruiting Report, HR Evaluation
    • I expand to “Document
      • I’m in “/Everything/Report/HR/Document
      • I don’t see any more categories
      • I see 2 files: My Recruiting Report, HR Evaluation

This is just one way to explore categories. There can be other ways - I'm all for diversity...

Tuesday, March 11, 2008

Thy virtual office...

... do you have one? You'd better!

What I'm saying below is Sales 101, but still a lot of store owners ignore them...

More and more people try to find you online these days... When someone wants to buy something from you, he has 2 choices:
  • see the merchandise face-to-face
  • see and order it online
Sure, seeing it face-to-face rules, but, once the customer has seen what he wants, he's tested it, he'll most likely want it again. And again...

And then, "online ordering" comes very much in handy. Why? Because coming to your office is quite a lot of bother. Lets just mention traffic and parking - need I say more?

The physical office is a lot of bother :
  • For your customers
    • it can be hard to find
    • parking
    • standing in line
    • it has a time-table (opens at time X and closes at time Y)
    • can be hard to search
    • for asking detailed information, he might have to wait inline, until some clerk becomes available
  • For you
    • rent - this is volatile, it can go (usually) higher
    • you might need to move to a new office (this is the worst, especially if you've built a customer base)
The Virtual Office has none of the above problems:
  • virtual office = online store
  • easily searcheable
  • customers can access it anytime
  • customers can order online
  • customers can ask queries in a simple manner, and you can answer them effectively
  • rent is way cheaper
  • moving to a new office - will never happen
As long as you have your store online also, you've simply boost your sales and your customer base... What more can you ask for?

Sunday, March 2, 2008

Think, before doing like the crowd!

It's funny how people do some stuff, just because most others do them. Yes, I'm talking about IT.

Case 1

When developing a site, make sure you do a "captcha", wherever.

For Night Buyers, I've added captcha, only at login, and only after about 1.5 months since we've started it. Why? It wasn't on my top priorities. Captcha is good to forbid bots to register. But that happens only when you have lots and lots of users. Which is certainly not when you start the site!

Case 2

Validating the user's email. To do that, you send an email to the user, with an activation code. The user opens his email, clicks the activation code, and there you go.

First, this is a lot of code from your part. Then, it puts a burden on the user - he's using your site because he needs something. All this mambo jambo, and he can lose 10 minutes to one hour or so. Not to say that he might just dump your site and go elsewhere.

On Night Buyers, we don't have email validation. We trust the user to provide us with a valid email when he registers - we send him confirmation of his order via email. If he doesn't need confirmation, fine, let him provide a dummy email address.

But, when you develop your site you need to answer 2 questions:
  • Do I need email confirmation? Why do I need the user's email? To send him what?
  • Do I need email confirmation now?
To the latter question, what if you can wait, lets say, one week, for the user to confirm his email address? If so, you can allow the user to use your site right now, and if he finds the information there worthwhile, trust me, he'll be more than glad to register.

Saturday, March 1, 2008

Paying your people

It's no secret that people go from one company to the next, to the next, and so on. This is even more common in the IT industry.

Most people leave because of the following:
  1. the company is on shaky ground
  2. bad management (stressing the employees, giving them too much work, overtime, and so on)
  3. treating them like average
If you're in case 1. or 2., you're company is hopeless. However, most companies (especially outsourcing companies) are in case 3.

You're in a company of type 3. if
  • you don't have a bonus system
  • you don't get paid overtime more than usual hours or you don't get paid overtime at all
  • if you perform good or very good, there's no message from above; only when your work is less than average, then you're marked as "bad employee"
In such companies, people learn to just do what's expected of them (enough not to get fired). Quality then tends to be average.

These companies are setting themselves for disaster - it might take 10 or more years, but it'll happen. They'll make room for the new companies - where people are rewarded for doing good work. And this will actually make people be more responsible.

When doing a project, a good company will think and plan for bonuses from the start. This sends an amazing message: you do great work, you get rewarded.

Of course, not everybody is fit for such a company. But if you're in charge of one, you'll also be able to filter out the average. And more to the point, your people will stop leaving.