Wednesday, December 08, 2004

Reverse Search

I don't know if this has already been done. But wouldn't it be interesting if you could specify a few links and see what string search you would have had to do to get those links with reasonable ranks?

I think it would be cool. Can see how sites are similar, if they are at all. It could even be used to cluster links together with phrased based matching, I wonder if the solution to the reverse search problem could be done in a different way that data mining algs do phrase-based document clustering...

Monday, December 06, 2004

I HATE STL !!!

Friday, December 03, 2004

End Of An Era - IBM to sell its PC unit

Wow! IBM's PC production business has finally come to an end.
It comes as a shock, but I guess not too unexpected.

In the past, I have heard some great stories, in my Economics class, about the great success and business model of IBM at the time of early developments of the PC. They have conquered the market by lowering costs of the product faster than competitors could keep up with and driving their competitors to huge losses. Somewhere in between then and now they have lost the ability to do so and are now at the point of selling their PC unit.

Its amazing how some of the big companies do not take full advantage of globalization by manufacturing their products in countries where the costs to do so are significantly cheaper. If they had, maybe IBM would still have a healthy PC market. As it stands, the great company that won the PC world through cheap prices, has lost in part due to inability to keep up with the current prices.

What would you do in IBM's positions? Can you think of any way they could have saved their business today (other than mistakes they made in the 80s)?

Monday, November 29, 2004

Need For More Secure Software

It amazes me how insecure much of our software is today. Chances are that most of us run at least 2-3 different software programs, whose only purpose is to secure against unauthorized access, on our home PCs. If we don't, we end up with manifestation of popup adds, viruses, registry corruption or other unwanted problems.

All this makes using a computer more complicated and is one instance of the need for simplified technology that is more secure. I mean I find it unacceptable that I have to run a firewall and have to decide weather I want to allow access to the internet to particular applications as they need it. I should not have to scan my computer for processes and files that have malicious intent of spamming my computer every week. And I don't want to make sure that my virus program is running all the time and is always up to date. All this is done for security! It is time consuming and complicates my user experience!

We have to get to the bottom of this. Is it a problem with the way the network (internet) is structured; I mean would it be possible to redesign the network in a way that would prevent some of these attacks? At the moment it doesn't seem so and in any case it may be too late for that.
Is it a problem with the operating system (Windows); how can an external user be allowed to run things on your machine without your permission or how can he even be allowed to get to the point where he can trick you to grant him access? I find it astonishing how one of the only Windows machine at my current workplace has managed to infect most of the other Windows desktops/laptops on the network and when the files responsible for the attack were removed, they still kept coming back!
Or is it a problem with the web browser (Internet Explorer)? I have switched to Firefox a few months ago and I have to say it has been a much better experience: I love how it automatically blocks popup adds for me. However, a friend of mine wasn't as lucky. He had an attack on his computer through the IE browser that replaced his desktop with a blank page. Even after he managed to fix it, not before contemplating reinstalling Windows, he still has problems with popup adds appearing with Internet Explorer all the time. Not to mention, he has to scan his computer twice a week to remove the programs responsible for the adds.

When will companies learn to do better testing of their software, to make the user feel secure in using their product and to simplify their life with secure software that just works and doesn't require additional software to make sure that it works?

Sunday, November 28, 2004

Need for simplified technology

There is a great article I read the other day about a growing need for simplicity in computer technology: specifically making your computer easier to use.

As the article points out, there is a lot of unneeded complexity in today technology that makes our lives more complex rather than simplifying it.
"Today's technology is intrusive and overbearing. It leaves us with no moments of silence, with less time to ourselves, with a sense of diminished control over our lives ... People are analogue, not digital; biological, not mechanical. It is time for human-centered technology, a humane technology."

In addition the complexity of installing, managing and navigating today's software makes it difficult for new users to grasp the technology. "Today some 70% of the world's population are 'analogues', who are 'terrified by technology', and for whom the pain of technology 'is not just the time it takes to figure out new gadgets but the pain of feeling stupid at each moment along the way'”. I've observed these particular problems arise several times with my roommates, who can do the basics on computers, but found problem installing some software, network problems, etc and therefore I often had to help them.

There is also a common problem with things breaking, crashing and not working.
"15 years ago, they were spending 75% of their IT budget on new hardware and software and 25% on fixing the systems that they already had; now that ratio has been reversed—70-80% of IT spending goes on fixing things rather than buying new systems." If this statistic is correct, it seems rather difficult to see why software companies are allowed to keep releasing more and more complex software that fails and crashes more often. And why users buy into the promise of new software being more error-prone and less bugy.

Therefore it seems to me that we need better User Interfaces that incorporate research done on human and computer interaction. We need to do better testing of software, particularly having it run and be used for months by common users and fixing any problems that they could come across. And we need to be able to write more automated software that would not require unneeded input from users and would not be as intrusive in our lives as they are today.

What other ways or procedures can you suggest to simplify our technology?

Wednesday, November 24, 2004

User Comments in Online Documentation

If I was to give a prize for the best online documentation of a product, I would definitely give it to the documentation of MySQL. Not only is the documentation very informative, but MySQL guys also allow user comments in their documentation.

Just check this link out, and you'll see what I mean. I was running into a problem today - I was trying to drop a database, but MySQL complained about some foreign key contraints. So I check the documentation, and sure enough - other users had similar problem and posted the solution !

I wish all documentation was as great as MySQL's ! I'm writing some stuff in Python now, and documentation sucks. As a result my productivity, while writing this otherwise easy script, has been very very poor.

PS. Here is something ironic. Google created a special page for searching Microsoft specific documentation.

Monday, November 22, 2004

Ideal Distributed File System

At this day and age, we often access our data from a variety of devices, often from many different corners of the world. At the moment there is no easy way to synchronize that data across those devices. Here are the first two examples that come to mind.

1) I have MP3s stored on my computer and I also own an iPod. To transfer MP3s to iPod I need to connect my iPod to the computer using a wire, and then use some kind of application to transfer those MP3s. If I downloaded a few more MP3s and want them on the iPod, I need to repeat that process. Now say I left for a vacation to Europe, but forgot to add that awesome song to the iPod What do I do ? Well, there isn't much I can do.

2) I have an address book on my Gmail account, but I also have an address book in my cell phone. How do I synchronize the two? There isn't an easy way. Manual data entry is necessary.

Now consider something different. I'm using Gmail, but it only offers 1GB of storage. I'm also using a Photo Hosting Service, that only offers say 1GB of storage. I also have a web page, but my ISP only gives me 50MB for storage. See anything wrong with this picture? There are two problems that come my mind:

1) Inefficient utilization of space. If I'm only using 100MB of my GMail storage, but all 50MB for my web-page, 900MB that are reserved for me are essentially unused, and could be used for my web-page. I have to admit though that this isn't much of a problem, as space is becoming cheaper and cheaper, and I believe that within 5 years we'll completely stop worrying about space shortage.

2) There isn't an easy way to search for my data, since it's broken up across different vendors.

Now.. Here is my proposed solution the above problems.

All major players(MS, IBM, Google, Yahoo, etc) should come together and come up with a standard for a distributed file system. Vendors would then implement such a file system, and offer storage space to the users. The user can then instruct their PC, GMail, PhotoHosting Service, iPod, Cell Phone etc. to use that file system for storage(For example if a user uses Gmail, e-mails and other GMail generated data would be stored in the space that user bought from a Storage vendor).

Note that such storage space does not completely replace hard drive(or other type of local "slow" memory), as it's still necessary for bootstrapping and caching purposes. However; such service would allow me to install Windows, Linux etc, in my storage, so that I could then "boot up" my system with all my files from a library computer in Australia.

There are a number of serious issues with this approach, main of which is security, and obviously a constant connectivity to the storage vendor is necessary. However, I do think that this approach offers many benefits to the user, and hope that someday we will see something like this come into life.