rei's Laws of Computing/Computers

1. The keyboard is mightier than the mouse. - There is a reason why the keyboard came before the mouse. This is among them. There are plenty of shortcuts involving the keyboard. The main reason they are called shortcuts is because it saves you the trouble of moving the mouse to access them. There are things at which the mouse is better, but in many cases, mastery of the keyboard will lead to a most comfortable computing experience.

2. Have the emergency key shortcuts at your disposal.

- All operating systems usually have a shortcut to save the operating system from crashing completely in the case of some awful program or some terrrible execution somewhere. In Windows, this is usually the ever popular Control+Alt+Delete. In Mac OS X, it's usually Command(Apple)+Option+Esc. In Linux, I think most desktops use Control+Escape.

3. Computers can fail, and probably eventually will.

- Computers have a lifespan of about 5 years before becoming impossibly obsolete to some people. I myself have survived with a computer for a number far surpassing that, and I have no intention to ever let it happen again. That computer didn't fail during my active usage, but it soon did after about a year or two after I finally got an up-to-date computer.

4. Since computers will fail, backup often.

- The part with the longest warranty after RAM is probably either your processor or your hard drive. Chances are however that your hard drive will fail eventually after the warranty period. I have not seen a hard drive last more than 10 years in my home, and many have failed within the warranty period itself. I carry out a pretty thorough backup regime, although it has become patchy with the advent of more reliable hard drives. There is now about three copies of each of my university work and notes which are stored electronically, all up-to-date. It will not be long before I make a fourth into a piece of significantly more reliable storage media.

5. The essentials of computing: monitor, keyboard, mouse, Internet.

- Every basic computer should have a monitor, keyboard and a mouse. Internet access isn't vital yet, but without it, your computer's potential is wasted. Heck, even my PSP can get Internet access. It is not vital, but if you have it, the whole world is there. :D

The Level of Difference

I've been pretty interested in what the difference is between me and those higher up in the academic department (as in studying, not as in teaching). :D This are the people whose academic results are like an age above mine. You've probably seen this post before somewhere when I was reflecting upon the difference. I think since I'm a little more mature now, I see it in a clearer light, so to speak.

These people are quite the talented people. They are gifted with what I would call the will to achieve. They have ambitions and aspirations and they hunt them down. While I should envy this will, this is what makes them them and this difference will make me to be me. Hence, I couldn't care less. :D

I'm a lot more aimless. I didn't know that I would go to HELP Institute for my studies. I didn't quite grasp that actuarial science was probably what I wanted to do. I took up programming because I thought it was fun. (It still is.) I loved mathematics because I thought it was one of the few things that seemed to challenge me in the right way. (Complex yet simple, amusing when you realise how careless you were.)

In the few months I gathered more knowledge about this field, the more I liked it. We were talking about a field with need for strong maths (check), probability (even better still), and some programming knowledge (you've got to be kidding right?). Am I taking this subject because I thought it would be fun? No. I took it because I liked the field - and I like the challenge too.

I believe firmly in doing what you like for a living. I rarely considered programming as a career because I probably would be sleeping through most of the course. That was certainly not something I wanted to study, although it was not entirely nonviable as a career. I like programming a lot, but not enough to tread through what I already knew like the back of my hand (honestly speaking, I probably know programming better than the back of my hand. I mean, how many of you count the number of hairs on the back of your hand?).

It was probably between business and computer science for me. I never did truly like the pure sciences (biology, chemistry, and physics) although some readers of this blog might remember me for my insane chemistry marks. I probably could do medicine, but I probably wouldn't make a good doctor, and it doesn't make much sense to me to do what I essentially didn't like.

It never occured to me I would be doing some form of applied maths (which is probably some kind of pure science). The goal didn't come until I learned of it. I was essentially aimless for a while, and settled into this. I've received a hell of a lot of warnings about my maths needing to be strong and so on and so forth. What a lot of people don't realise is that programming isn't for everyone.

I believe programming can be quite abstract for some people, and for some people, it just plain clicks perfectly. You can see immediately in class who are the ones who are struggling and the ones who are breezing along. What is the level of difference? It's probably some kind of level of thinking, some kind of madness which never made it through correctly.

Everyone has a certain pathway of thinking. I would think the best among the human race have already identified what they want to do, and will do anything in their power to get it. Some of us know what we want to do, but cannot tell that it is not what we really want. As for the rest of us? We just follow the flow. Sometimes, this flow will lead us to greatness. Other times, it will lead us into a steady line. At worst, a descent into oblivion.

We are who we are for a reason, and we all serve a purpose in this world of chaos. There will always be levels of difference, glass ceilings and floors. However, we should never forget, the levels are not necessarily above each other. :D

May you find... umm... your destiny. Maybe. LOL.

Convert into Algorithm

How do you convert a simple looking formula and turn it into an algorithm? It's simple. Break stuff down into steps. That's what you're always told. There are actually a few more things to do.

1. If there are any constants in your program, declare them as such. This will make your life easier when you want to alter it slightly to produce different output.

2. If you can put together an operation on one line, chances are that you should. A single line operation is usually easier to debug also, since you don't have to go hunting for what does what in the long chain of operations.

3. If you can't seem to find a way to do what you want to do, it means your algorithm isn't simple enough.

How to Look at Things from the Programmer's Point of View

To do programming, you often have to think out of the box. Most people don't describe it as much out of the box. People say it's simple, it's this and it's that. I'll give you the grain of truth. It involves making an extension outside your ordinary box. People don't think of much when their computer just runs. They see this box pop up, they click it. They see that, click it. Programmers look at it differently. When you see that Welcome screen for Windows XP, what do you think?

You will think that you just have to move your mouse, click on it, type in your username and password, and all is fine and dandy. What would a programmer have to do before you can do that?

First, the programmers have to load up all the nice images. Then, they will have to render the screen with all this nice images. After that, they will have to render your accounts' names on the screen. Following that, it is a simple matter of drawing your mouse cursor on the screen. Then, they have to make sure that when you click this button on a name/picture, it will do something. I could go on like this forever, but I think you've gotten the point.

The premise is to break down the steps into smaller, easier, simpler steps. The tricky part is that you have to break them down small enough so that you can express it in the programming language of your choice. A computer doesn't know how to understand 2x². You have to break it down: 2 * x ^ 2.

It is easy to underestimate the difficulty of getting the computer to return the third decimal place in 2.704932. Sure, our human minds immediately point out the 4. In some programming languages, treating it as a string like our minds do (that is counting 3 characters after the dot) will do it. Imagine doing it with merely mathematics. It's extremely difficult to break it down with our brains because we can do it so easily, but in truth, it might be difficult to get a computer to do it.

Imagine what you'd have to do? Even programming students might take a minute or two to figure it out. The concept can be so far out because you have to take this even smaller box and think within it. How is this out of the box? You have to know how to abuse the effect of the smaller box. (to be continued later)