Search This Blog

Showing posts with label Software. Show all posts
Showing posts with label Software. Show all posts

Wednesday, January 21, 2009

Windows 7 Rocks!!!

Now, that I have made it clear from the title of the post itself, that I am a big supporter of Windows 7 let me follow up this post with my own experiences with Windows 7. You can yourself download Windows 7 beta version here and test it out.

Capture

  The screenshot shows Windows 7 installed with AERO on my laptop. Now let me give some background of my laptop: it is a dual core machine with 1 Gig of RAM and had Windows Vista installed previously on it. It used to be painstakingly slow.

After doing a clean install of Windows 7, I could see a tremendous increase in speed. You might say that it is a clean version, which has no Visual Studios, thousands of media players and chat clients, Office and other crap in it. Yes, I agree, but still it is faster than a clean install of Windows Vista. Might be even faster than XP, though I can’t guarantee that!

So, the first thing I noticed was the speed and responsiveness and not the UI Improvements like better explorer, calculator, word pad, paint, libraries, taskbar, action center, notifications, UAC, icons, control panel etc etc etc. I came to notice all these improvements later on in due course.

Now after the install, it did not have the correct drivers for Video Graphics card of ATI Radeon, so my screen resolution was less. But still it did a decent job of detecting my Wifi, bluetooth, audio drivers. But it did not give me Aero and other decent UI Features. So, I got down to the job(which I did horribly): I installed all the drivers in XP compatibility mode and my machine complained. It now had good screen resolution, but had no audio, still no AERO, and was giving me the Blue screen of Death every time I shut down the machine. Then I uninstalled all the drivers and my machine came in 640 * 480 resolution with 256 colors. I could do nothing much with it. So, I decided to connect the machine to the internet. And whoa! it detects all the correct drivers and installs them out of the box. And it was fast, took me less than 5 minutes to get it all working once it was connected to Internet. Moral of the story: Don’t be a smart-ass, just connect your machine to the internet, and let it do the job. 

The software for this windows was made with one thing in mind: it should be stable, fast and “it should just work”. This is a better version of Windows Vista, with not much changes in the kernel. Infact, if you see the details, it has nearly the same number of services and processes as Windows Vista. The focus has been on making the computing experience better.

And I think, they have succeeded. World has never seen a more stable beta in the history of Software Releases. I think Windows 7 will be released before August since this beta expires on 1st August 2009. So, be ready for a release of Windows 7 before that.

Although, I am all praise for Windows 7, I still should say that I have managed to crash it five times now (but that was when I did not have the correct drivers). This is one Windows which you won’t be disappointed by… 

I have attached some screenshots to motivate you to try the beta :

 

Saturday, September 13, 2008

The most amazing thing about computers

What is the most amazing thing about computers? There can be many answers like getting to play games, watch movies, play music, read emails, do word-processing, crunch numbers, do predictions, book tickets, research for assignments, find information, store data etc. given by different people finding uses of computers in different domains.

But if you go to see the fundamental nature of computers: What is the one thing which makes it different from us? Or in short, what is the one thing, which makes it so amazing!

It is the ability of computers to do "manual labour". As a programmer, have you ever wondered, when you do recursion/looping, the computer executes the same statement thousands of times without ever complaining about it. That is what makes it different from us.

We will complain if we are asked to do the same things even thrice. Why? Because we are so damn intelligent, we learn from the stuff we do, and get bored when there is nothing left to learn in it. This is one of the reasons why, in any factory, the highest number of leaves are taken by the employees in the assembly department. Another thing that proves this point is the saying: "Practice makes a man perfect". Yes, we are a self-learning computer, we learn when we repeat stuff, and we get bored from it when there is nothing substantial left in it to learn.

On the other hand, a computer never gets tired, never learns anything and does the same task again and again with a reliability often lost in a self-learning system like ours. It is said that: "To err is human". Why? Because, we experiment. Most of us, have experimented thinking about other things, while doing manual work like shaving, cooking food etc and have experienced cuts and burnt hands while doing this.

Thus, essential by-products of a self-learning and adaptive system like a human brain are unreliability and non-predictiveness which are borne out of a constant need to experiment. Thus, while we consider ourselves superior and possessors of intelligence, we could never have done what computers have done. They are the exact opposite of us. They never experiment and never learn anything from what they have done in the past. That is why, any computer system is reliable and predictive (except for the unfound bugs due to human-errors in software). That is one of the most amazing thing about a computer system, which can never be matched by any human brain.

I would love to hear more comments on this philosophy. Also I won't be writing any more posts for another 7 days, due to up-coming mid-semester examinations.

Friday, August 15, 2008

Discover Windows Vista: 100 Reasons You will be Speechless!!

I don't know what kind of marketing department Microsoft has, but it is certainly not a very good one. Considering the Discover Windows Vista: 100 Reasons you will be speechless!! Page, I really found myself speechless, but not the way I had hoped I would be!

3. It's the safest version of Windows ever: User Account Control is a pain to every computer user. Here is how to turn it off. Goto http://www.petri.co.il/disable_uac_in_windows_vista.htm to know how to turn the nuisance off!!



5. It can find your stuff: Use Windows Desktop Search, but who the heck wants it when they have got Google Desktop. Right? Wrong! Well, apparently there used to an internal tool in Microsoft namely FindMyStuff which spawned off the first version of MSN Desktop Search 1.0 . This tool used to have a cool functionality i.e. Natural Language Search. Apparently, that feature is still there in Windows Desktop Search installed with Vista, you only need to know how to enable it.
Press Alt in Windows explorer. Go to Tools->Folder Options. Click on Search tab and in that, check natural language checkbox as shown in the screenshot.



70. 3000% Speed Benefit: There is an ultra-cool feature in Vista: Sleep mode. What this allows is to shut down and turn on your computer within 2 seconds. A laptop in a sleep mode uses less than 1 watt of energy. Microsoft documentation tells us that you should never use turn-off in Windows Vista and always use the sleep mode. For the technically inclined, sleep mode saves your computer state in your main memory/RAM rather than saving it on the hard disk as hibernate used to do.


But apparently, Microsoft only puts it at number: 70 on its list of top 100 reasons to upgrade to Vista!! An upgrade of startup and shutdown times from 60 seconds to 2 seconds i.e. 3000% increase is just the 70th reason to upgrade!!.


Another downside, while resuming from Sleep mode, your computer greets you with a black screen, so you don't know if your computer is broken or is it resuming. If they had just gone through the pain of displaying their logo with a simple running bar, they would have hit the home run with this feature too.


And this one apparently failed to even make it to the list!!


Sidebar Gadgets: They could have revolutionized the world of Desktop Computing with Sidebar Gadgets. Some things they should have done and they did not:

  1. Integrate Gadget Development Environment in Visual Studio 2008 and provide a new project type: Windows Gadget.
  2. Enable Silverlight with Sidebar Gadgets
  3. Hold annual or bi-annual global competitions with amazing prize money to develop gadgets for Windows Vista Sidebar.
  4. Integrate Office, messenger, Windows Desktop Search etc with Sidebar Gadgets by publishing their own gadgets.
  5. Publicize Office and Windows live services by providing gadgets.
  6. Integration of Sidebar Gadgets into Windows Update Services.

There were more reasons in my mind, but since the post has gone long enough, I will stop the ranting with just one more! If you ever want to undersell your products, do it like Vista. It is a great product with excellent technology and great business potential, but somehow it's just not there.

Tuesday, August 12, 2008

Electrical Switches and the power of Defaults

Ever noticed a peculiar property of an electrical switch! It is always made like this:

Always when you click ON, the circuit gets completed and the electricity flows. Imagine if it was the other way round i.e. when you put the switch to off position, it inserts an insulator in the circuit and the circuit breaks. In that case, if a switch gets old, imagine switching off and then also the fan keeps running.

So, why did the electrical designers choose the first design over the second one. I think they did because of two reasons:

  1. Most of the times, any electrical appliance is in the off state and the circuit is broken, so it makes sense to do this.
  2. It is much safer and cheaper to implement. Imagine, how would you implement inserting an insulator and think of different approaches to do that, to get the meaning of this.

Although, the second reason would have been the driving force in the case of switch designers rather than the first. But, software engineers often do not get the same luxury. They do not have the second reason to help them decide their defaults because coding wise, often the two options take the same time. So, a software engineer must always keep in mind, what option will be in use most of the time.

Default options are always there to take care of the 80-20 rule. 80% of the users of your product will want a certain functionality more often, you need to know what they need the most and make it available as a default or as near to the user as possible.
A case in point: Office 2007. It does not add any new functionalities over Office 2003; but it changes its default options very beautifully. It makes all the often used options available and displayed in a ribbon, instead of hiding them in multiple menus. Another great idea has been to change the defaults according to the action you are doing. So for instance, when you are writing, you are on Home tab, when you have selected a picture, you are on picture tools in Word 2007.

Another case in point: The difference between Nokia N70 and Nokia 6500. The most striking difference to an end user are the default options. It's a pain to navigate into multiple menus to get to one of the oft-used options in N70, while a newer model understands this pain of the user and makes the most default options available at a single click. The defaults are one of the reasons why Sony Ericcson phones made a huge market in India. They did it because they provided dedicated keys for music, Bluetooth and camera options. I do not mean to take the credit away from their superior camera and music quality, but just another factor contributing to their popularity.


So, the point is, how do I, as a software developer decide, where to keep my default options. Most of the times, the cost or the effort will be the same for implementing any of the options as default ones. The answer is: you do it the hard way. You do it by understanding the needs of your user, you do it by dogfooding your own code zillions of times, and be aware of where you can make it better.


Identify, the oft-used features and make them the defaults.

Sunday, August 03, 2008

KISS

Today I am writing about the art of applying KISS to our products. The acronym and its full form are both interesting – it just means "Keep It Simple Stupid!". You might say – " Hey, I know that". But actually do we?

Consider this: I need to play music:








Both of these devices do the same job, but you can see the difference between the two. The designer on the left obviously did not keep it simple. As a result, the designer on the right, is making billions, while the left, I don't know, but are they actually sold?

It applies to everything, there is a very good phrase in Harry Potter books about the Giants – "You load the Giants with information and they will actually kill you for doing that". A normal user for your product is no different. He might not kill you, but he will stop using your product. One of the biggest mistakes any company could do is to think that the users care for you. Users Don't Care About You.

So, what are the two simple steps you can follow to make sure your product is a run-away success:

  1. Be Humble: Don't think you are making a SpaceShip while you might be working on any other business app. Humility and understanding your user's needs are important.
  2. Be Interesting: Don't bore your users with the same old stuff. Nobody is interested in a plain old cow, but everybody will be interested in a purple cow.

That's what Google did, and that is what you can do too.
Below, is a picture comparing the homepage of Google and Yahoo over the years. As you can see, while Yahoo's homepage grew complex, Google's remained the same as ever.

You Decide, if you want to Kiss KISS like Google, or say it GoodBye like Yahoo

Saturday, December 15, 2007

A Typical Conversation

 

Hi,

We all studied programming on blue-screens with 17 year old compiler namely turbo C in our school days. What happens when you meet someone who tells you to change. Here is the sample conversation -

Q. Why not to use TC for Programming

Ans. Here are the reasons:

1. Less Horsepower: Seriously guys, 16 bit programming is out of the Window. An integer of 16 bits, even when I do some calculation that involves a multiplication, I do not use int for the fear of overflow. Then comes the problem of the so less the amount of stack space. Try running a recursive program with a large data input set and you will know what I am talking about. I once made a brute force algorithm for a problem which I wasn’t able to solve (I am not very good at solving problems) and was out of stack space in TC, went to Linux, ran gcc and got my answer. In those days, I did not have the luxury of a Visual C++ compiler.

2. Where are the graphics mate? : Yeah there are no graphics. You are stuck to the some 640*480 resolution on a widescreen 1200*800 laptop receiving flattened and coarse graphics. Then to add to it, only 16 colors, and don’t even think of making a windows or a menu bar. The effort will kill you. Had to learn the assembly programming and INT21H routine just to control the mouse.

3. Ok What about the data structures : Sorry no strings, no bools, no object conversions, no complex data structures like trees, hash-tables etc. Also, you have to be a math genie to do all the mathematical functions coz it provides a bare minimum library of functions.

4. I once scratched my head out thinking how I can run two tasks side-by-side at the same time. Like if I make a DOS game and want to put up a clock for timing you, I have to resort to the crude method of using delays and all to move the clock hand. No events, no timers for me. Also, I run my clock first and then the game and the game gets all freezed up when you repeatedly redraw the screen a 100 times a second. Ofcourse, I dint know about threads or event-based processing instead of the sequential processing of DOS.

5. Grand Old Man: Turbo is too old to get hold of new ideas like music or web. So, comes the problem of no integrity with web, music, other processes etc.etc. etc.

Q. Surely, I can do something with it, I mean I have spent all my life programming in it?

Ans. Oh yes you can. You have achieved quite a lot in it. Tell me all about what you did and how many lines of code it took you.

Q. I made a ummmm ….. a tic-tac-toe game in TC J and it was just a 1000 line code.

Ans. Make a similar code in Visual C++ or GTK with GCC in just 500 lines.

Q. Ok I agree it is a horrible compiler, but I still love the way it displays help and helps me write my code.

Ans. That’s just because you have still not seen the world of IDEs .Modern IDEs have code-folding, auto-indentation, paranthesis checks, TODO Lists, Documentation features, online help, code-completion and better debugging support.

Q. But won’t so many features bog a beginner like me down?

Ans. No they won’t. First of all the first time you bought a computer, did you start hacking into its registries and making changes like minimizing delay times on menu items. But you still found windows interesting enough even though every menu item took 200 ms more to open than it does now. Same are these features, they will only help you save those 200 ms if you look for them. Otherwise they are just there.

Q. But I have heard MSDN help is bad for a beginner. Linux Man Pages are tough to read.

Ans. Yes they are. But Turbo help too was difficult to read at one time. Wasn’t it. Give it some time and you ll catch on.

Q. Even though I am using TC what harm am I doing to myself? I am just not gaining benefit from features as you said earlier.

Ans. What I said earlier was different. You were not using the features that were available. You would have caught on at some point of time. Here there is no hope!

So, you are harming yourself. With each passing day of working on TC, you are forming opinions about your capabilities in programming on the basis of the capabilities of TC. You are re-inventing the wheel everytime and getting more frustrated by programming by the moment.

You fell yourself not capable enough to do the things these professionals do. Why? Just coz you don’t have the right tools.

Q. So, what’s the bottomline?

Ans. If you are using TC today also, please dump it and move on.

Thursday, November 08, 2007

Why Should You Stay Away From Vista?

 

Let us start with a small fairy tale. Once upon a time, (alhough not a very long time ago) I had a dual-boot system with Windows Vista and Ubuntu installed side-by-side. I was happy with my Ubuntu but had to resort to using the bulky Vista from time-to-time. Everytime I opened my laptop in class with Vista, my friends like Abhishek used to cry out - "Bad Vista, Bad Vista" while geek friends like Asiem used to quietly disapprove my system. I used to envy the celeron users, who inspite of half my system capabilities with Windows XP were faster than my bulky Vista. In the home however, I was always in the dilemma, should I vent my frustration on the 50K laptop or not for the crimes of Vista.

I never understood the need for a 15 GB Operating System which in the name of security will kill you with pop-up boxes for every small task you dare perform. An OS which is doing nothing more than eating up RAM and processor cycles yet you see no improvements. An over-hyped UI with transparency which is now found at low costs in its predecessors too. Not to mention the fact that Free OS like Linux have been using the same for the past 8 years.

But I could always tolerate these nuisances of Vista, as I have a high-end system I argued. But then there was always the problem of non-working or in-compatible applications and games. Not to mention all my cherished arcade games which used to run in 16 bit emulation mode were rendered non-working by this system.

I do not understand the software guys at Microsoft, first they make up such a good OS as XP which is so successful world-wide and then how can they take such a drastic decision as to rewrite all their previous code. How could an experienced company like Microsoft forget the most basic rule in Software Engineering - Working code is the best code. With this single wrong decision, Microsoft lost billions of dollars in terms of delays, not to mention the loss of face in public and hardware firms but also the loss of experience of 20 years of writing Operating System codes by abandoning the previous codes.

They had to do all the testing and debugging again. I can imagine that XP's code would have had many hacks(or jugaar as we say in Hindi) over they years with the zillions of bug-fixes. But atleast, it was working. For a user, whether a code looks beautiful or not, it doesn't matter, as long as it works. But as a user, Vista doesn't work even though its code may be much more readable than its predecessor. I do not have any advantage of that as it is not even open-source.

So, in short, the moral of the story is : Stay Away From Vista.... (if you did not know it before-hand).