Friday, October 21, 2005

Importance of One Set of Words

I was going to make a post about my debate competition today. However, I do not have nearly enough time for an extensive post. Instead I want to talk about the speech round and in particular the comments of one of my friends and judges. I was feeling kind of down after a below-mediocre performance team wise in debate and was not personally impressed with my individual impromptu speech afterwards. However, a judge of mine gave such a huge compliment about it afterwards and I was very much flattered. The event raised an interesting topic for me: “the importance of approval of the people you admire”. I think general approval is good and general praise is good, but nothing is better than the praise of someone who is either better that you or someone you look up to, or both. I think the best kind of praise you can receive is true genuine praise from someone you look up to. Today really highlighted that issue for me and I felt obliged to post on the importance of praise from your role models.


Thursday, October 20, 2005

Destructive Behavior

Today the blog will see a concise post. I am swamped with debate research and have to make my words short. Today Oliver and I released the first versions of “ProMessenger” on our schools U: drive. When we released the tool and it was rather effective. However, we found a problem with people (our own acquaintances/friends) indulging in excessive spamming. The issued raised a concern for me: why do people involve themselves in destructive behavior? There are many cases when people do things that do not benefit them just to be destructive. This destruction applies to anything from society to them. I would like to hear some feedback on the issue. Is there a reason for being destructive without benefits? Or are there always benefits?

Labels: ,

Wednesday, October 19, 2005

IP Chat

Today during our time in the drafting lab, my friends and I tried to establish a way to chat with each other without talking. Dave and Oliver lead the initiative and quickly discovered that most of the standard chat programs (Google Talk, MSN, etc.) were blocked. They tried Web MSN, but that was blocked as well. We found a LAN based service and started using that after a while. However the user interface was horrible and we decided the tool was too much of a pain to use. Oliver and I instantly started working on ways to make our own service. We both came to the decision of using the shared directory on our LAN network (the “drop box”) to make a text based chatting service. Oliver started working on it right away, I decided I would have a look at the DLL for the LAN service and see if I could savage something more advanced. Through more thought I was able to come up with an elaborate new way of establishing a chat service. After thinking for five periods I came up with an idea of a service based on many different IPs.

The basic idea behind my service is making it virtually independent from one main server. Through independence it becomes impossible to block by organizations and does not require one server being put under strain. The system depends on many separate nexuses hosted by different people with the guidelines of one main server. The program would consist of two parts: a chat client and a hosting client. Through chat anyone would be able to connect and through hosting anyone would be able to become a nexus.
Chat client:
The chat client and chat part of the system would still be based on log on. “Key nexuses” would hold the usernames and passwords of different people. Their profile itself (showing personal information, friend’s lists and all the other nexuses the person is connected to) would be essential but could be hosted from anywhere (even the person’s own C: drive). To make naming easier, you could register your own computer with a “key nexuses” and it would attribute a name to your machine (since most home users have varying IP addresses). In other words you could register with someone like “” or you could make your own domain name like: “”. This way of making your own domain name would allow for more names as well as keeping password information on a trusted computer.
Each chat client and their profile (which could consist of more than one account) will communicate to other users through direct IP links. When you click on a user’s name a message will be sent to one of the nexuses you share in common and you will be provided with the users current IP (it will be hidden deep inside the client so it is not too easy to retrieve). When you type up a message and send it, it will go straight to that person’s computer without having to take a detour to servers like or something. This direct link would make the connection slightly faster and much more efficient for such VoIP and Video conferencing. When several users are online each client decides which way of sending information will be more effective (through Nexus or to each individual IP directly) and takes the best course of action.
Hosting Client:
The hosting client will allow any individual to make their personal computer or server into a nexus. If a person has a server with a static IP, then they can become a full fledges nexus that can give out its own usernames (although people with usernames from other servers will still be able to connect). If the host-to-be does not have their own domain name, then they will have to find a nexuses that can provide them with a name of sorts. This local and easy to set up server system, will allow groups of friends to have their own chat server and for sites to host effective chat rooms. This might seem a lot like IRC, but the big difference is that there is no site that you have to send all information through; you just need a site to get other people’s IPs from. Each hosting client will also allow the option of being free-access or password protected.

String Connecting
With all these servers being around it could become easy to get lost and confused. A special system is included in my plan to account for confusion. If you want to find some nexuses, (lets say if your profile got lost) you just call a friend by their IP and you will be automatically given every nexus connection they have and allow others to view. The same will happen whenever you engage in a chat. For every nexuses on your list of connections you will be given an option of making it viewable by others or not. Whenever you connect to someone their client will automatically tell your client all the other viewable nexuses they are connected to. This system will allow you to stay connected to someone even one (or more) servers go down. As long as you can find one server in common you can connect (or as long as you do not close the window and keep a direct link). You will also be able to block users or nexuses or disconnect from nexuses as you please. If you decide a certain server is giving out your IP to people that really should not have it then you just disconnect from it and your client will not send your IP to them anymore.

The biggest thing going for my system is that it is completely decentralized. Decentralization makes the system almost impossible to shut down. Instead of running through one server like we do now a more internet type system is applied. My IP Chat program follows the philosophy that founded the internet: a serious of separate networks (nexuses) interconnected between each other. I will start preliminary work on this project sometime next week and see how far I can get before I hit a dead end. If you have any questions, advice or other comments, feel free to post them.

Labels: ,

Tuesday, October 18, 2005

Lecture vs. Trial

In the past three days, you might have noticed a lot of changes to the layout of this blog. I am fooling around with html and learning it in the process. There are many things I still want to change but I am getting to where I want to be. The trial process and reading of my template has got me wondering. What is a better form of education, being told how to do something or learning by trial and error?

The obvious benefit of a lecture style of learning is security. When you are being told how to do something before you ever try it, you are for less likely to make a mistake and damage something. I am not being advised by anyone as to how I should work with HTML, so if I make a big mistake and somehow republish my site with the mistake, I will be stuck with it. If I am explained something I will hopefully not make the mistake in the first place.
Being taught first also helps to pass on the wisdom of elders and warn you about bad habits. I learnt guitar by myself, without an instructor. Since I learn by trial and error and kind of doing things myself, I developed several bad habits. I do such things as strum away from the strings (which is technically more demanding than strumming with the strings) and I adopted many alternative grips with my left hand. With proper mentorship such mistakes could be avoided and no bad habit would be formed. I learn how to do everything with my habits and I am used to them, and they are very hard to change even though I know they are improper. A lecture approach to learning would allow you to avoid the pitfalls in the first place and do things in a proven way.
The lecture style does not leave any major points without discussion. Since the people who are teaching you already know all the big skill in what you are learning, they can cover all the bases. When I learnt guitar, I did not get big into theory and rhythm. Thankfully to my analytical background I naturally picked up more than enough theory while I learnt everything else. However, I still have troubles with rhythm. If you give me a drum, you will have to wait until a cold day in hell before I make a steady beat.

Trial is my preferred method of learning. I learn programming, video editing, guitar, biking, courting and more through trial and error. Surely the experience has not been without its hazards, but I found it more enjoyable. Like in my previous post I am mentioning where I am coming from to get my bias out there so you can analyze my information to a better degree.
Trial leads to more skill development. When you are being taught something, you are told to assume certain things so that the lecture process can be streamlined. With trial you have to prove everything yourself. The process of proving everything involved to do what you want develops a good learning skill as well as giving you a strong grasp over the information. Through out my education in the United States and Canada I have been dismayed many times by how students might know a certain rule or law but not know how to prove it. Without the knowledge of how the rules they use are proven the students are hampered to using it only in certain cases that have been taught to them and outside of that.
Trial is much better at tailoring to your learning style. Since you are the one responsible for what you try and what you are trying to achieve, you become in full control of your learning. I teacher can do their best to try and tailor a program to you as an individual, but since they never know what you are really thinking they can not do it to the extent you can yourself. This tailoring does not always get you to your final destination faster but it usually makes you a much better learner. I learnt programming and guitar much faster through trial and error and self-teaching than I ever would have if I followed the route of some of my more conservative counterparts.

I try to encompass both trial and lecture in my learning, but I find trial to be a much more advanced form of learning. I find that fewer people have mastery of trial than over lecture. A lot of people just go around asking questions hoping someone will answer them instead of really putting their noggin to work. Asking questions is not a bad thing, but I find using your head more rewarding. In the end, learning styles depend on the individual. Jobs are split among both trial based learners and lecture learners. The lecture students can make good factory workers, doctors, standard lawyers and other jobs that follow certain strict and often repetitive guidelines. They are an essential and biggest part of society. Trial learners are more suited towards innovation and hence fit better in science, corporate management, music, art and other fields that depend on new ideas and ways of doing things. To bring this back to my bias and to summarize in general. Lecture learners are the majority of society and make sure that everything that we have works like it suppose to. Trial learners are the minority and they are the ones that develop new things and move society forwards. I find moving something forwards or making something new more interesting than maintenance and therefore prefer trial learning.


Monday, October 17, 2005

Silly vs. Serious and White Lies vs. Dignity

Today some facts came to my attention. Of course I will not mention details because I am hoping to not make this blog into a work of angst. I also do not want to offend any people directly. The issue I was faced with today razed two very important questions for me, and I am not able to effectively substantiate myself for either side. I can only provide my personal opinion, and if you want to add to it, then please comment. If your comments are well articulated I will add them to this entry. The first issue is what is better being silly or being serious. I am not implying to take the extremes of the spectrum, but rather what is better to be naturally silly with the ability to turn serious or naturally serious with the ability to turn silly. The second issue is distinguishing between white lies and their infringement of dignity. White lies apply to small lies that (to the person making them) seem to not be a big deal and are meant to comfort a person. Dignity or the recognition of it: is the realization that people should be told things upfront instead of beating around the bush or being lied to.

Silly vs. Serious
I find myself to be a rather silly or light-hearted person that can lean towards being serious. How well I am at being serious various depending as to who you ask. Some people think I am very much capable of switching easily to a serious mode when the time is right. Others on the other hand believe I am completely unmannered and have no sense of when fun stops and soberness should begin. I like to believe I am the first, but since the ladder exists, that is impossible. However, I also doubt I am the second extreme of the spectrum. Most likely I am somewhere in-between, or my change to seriousness is drastically different with different people. I can not be an accurate judge of such a matter; however I can defiantly say I am silly first. This bend towards lightheartedness makes me naturally biased toward the silly side and I will need all the help I can get to raise points for the serious side of the issue.
Two days ago I was discussing movie selections with my dad and wondering what kind of movie he wants me to go rent. He said he would prefer a comedy and substantiated it with word that (roughly translated from Russian) shape the main case for vivacity very well:

“I would much rather laugh, than cry at a movie. I don’t understand all the people that pay money just to go and have a cry. Why would I want to be sad when I can laugh? Drama’s are always good, but they are nothing compared to some lighthearted comedy”

Being silly is essential to happiness, and happiness is essential to a fulfilling life. It is important to have the skill to be serious in urgent situations, but being exuberant at all the other times is essential. There is no meaning in all the things seriousness can achieve if you can not be happy about it. Being serious most of the time does allow you to be silly sometimes. All that means is that you can achieve more in your life and then enjoy it less.
Like I mentioned earlier I have a preformed biased against being predominantly serious. I understand that being serious makes it much easier to concentrate at the task at hand. The next step to that is that you can accomplish more than a silly person in the same amount of time. This could leave you more leisure time to enjoy what you worked towards, but I do not think that case is always true. I think the whole debate comes down to which is more important; what you have or how you use it. To dumb it down (and make much more sexual): “is it the size, or how you use it?” Of course it is easy to say that what you achieved is more important, but you need to remember that all men end six feet below the ground. Of course you can say that being silly is selfish that you only make yourself happy, while if you were serious you could leave more to your children and make their lives better.

White Lies vs. Dignity
As a person, I try my best to give everyone dignity and avoid white lies as much as possible. If you ask me something like “do I look fat in this dress” and you actually look fat I will state it. I do this for two reasons. One is to because I prefer to not have people blind me with their blind eyes and hence I try not to do the same to them. The second is because I am a very blunt person. I believe bluntness and frequent justified criticism is the only way to bring meaning to my praise. In my opinion praise is nearly worthless from someone who praises everybody. As you can see, I am very much biased towards the dignity side. I do not believe in lying to people just because I think it will not harm them and it will just make them feel better. Of course there are always exceptions in my mind, but that is my general ideal and way of displaying my bias on this issue.
White lies
The benefit of white lies is that they can be used to make people feel better or to avoid hurting them. However, in the end they are still lies, just not serious ones. I understand the benefit of giving people compliments through white lies or avoiding hurting them, but I think those only provide surface happiness.
Treating people with dignity I think is essential. You have to avoid using white lies at all costs, because I think being direct and upfront is more rewarding in the end. You do not have to be extremely blunt but direction is essential. It will not give people a quick fix of happiness like white lies could, but I think in the long run treating people with dignity and being upfront is more rewarding. Plus, I find that a friend that can be completely honest with you is a much better friend then one that says lies as compliments.

As I outlined, I am a silly person that tries to treat people with blunt dignity. I believe the debate between silly and serious is not resolved in my mind. Even with my silly bias I can see a lot merit in both arguments. My arguments for white lies are fewer and in that case I think dignity wins. I will be happy to reevaluate my decision as time passes. I will update this post with any significant comments and maybe eventually write a follow with better formed opinions.

Labels: ,

Sunday, October 16, 2005

Google OS

For a while now, I have been talking to people like Kumaran and posting on forums about my ideas for Google OS. I am not a big fan of some of the big ideas out their regarding Google running a supper cluster OS and you having an account on it. Some people such as Skrenta phrase their arguments well:

Google is a company that has built a single very large, custom computer. It's running their own cluster operating system. They make their big computer even bigger and faster each month, while lowering the cost of CPU cycles. It's looking more like a general purpose platform than a cluster optimized for a single application.
While competitors are targeting the individual applications Google has deployed, Google is building a massive, general purpose computing platform for web-scale programming.

However, I still disagree. I believe Google will create a free, single PC based system that is linked to their servers. Centralization does not float my boat, and in my opinion it does not float Google’s boat either. So far everything I have seen from Google has been very much decentralized. They run approximately 0.1 million servers in different parts of the world in small server farms to optimize searching and keep themselves decentralized. I understand the basing for using all the Google servers as one super computer:

The Google server farm constitutes one of the most powerful supercomputers in the world. At 126-316 teraflops, it can perform at over one third the speed of the Blue Gene supercomputer, which is the most powerful computing machine available to humanity. (source)

This does lend itself toward creating some sort of centralized system. But when you think about all the people that would be part of the system and all the process running on the system, such a thing does not seem feasible. In my opinion it is more plausible to have each computer run a Google OS and be connected to the internet and the special Google Network. Each computer will be responsible for its standardized functions, but all the leftover processing power would be given over to Google to with as they please (much like the program Folding@Home). The connection to a single network or Google users would also allow Google to study their surfing patters (as they already do with their net mapping), but since they would control the Google OS network, they would be able to alter the connections to optimize the speed. Google would be able to become a road planner for its own pseudo-net.

Google would have to make its Google OS free because they have to, and because they can.
Have to:
Google would have to provide a free OS in order to compete well on the personal OS market. Right now there are only two major providers of paid-for-OS on the market and only one of them can boast that it makes money from its OS. Both Microsoft and Apple provide their own priced OS, however only Microsoft provides it successfully. Apple OS only exists because that is the only OS available on the computers Apple makes. Microsoft on the other hand, does not manufacture computers and manages to make money on the OS alone. Microsoft’s monopoly over the market, forces other operating systems (such as Linux) to be free or not exist at all. Google OS would need to be much like Linux and MacOS to be successful. However, unlike Linux, Google would have no need to be open source, since they already has a wonderful team of computer scientists working for them. Unlike Apple, Google would have to be non-proprietary and compatible.
I have no clue how much Microsoft has patent, but Google would have to take as much as possible and function as much like Microsoft as possible. If Google makes an incompatible OS (even if it is a good operating system) they would not be able to hold more success than something like Linux. Instead Google would have to find a way to run on the same computers as Windows, and use the same software as Windows. Like I mentioned, I have no clue how much Google could steal, but I am sure it could design some sort of operating system that could run all the basic 3rd party software for windows.
The reason Google OS can be free is because the company is an advertisement giant, not a software company. Google will be able to benefit from discreet ads it implants in its OS and from the spare processing power it would take from its users. The Google ads would have to be convenient and customizable enough so that the system users would not find it a hassle or bother. The spare CPU usage would have to be efficient enough so that the person using the system does not notice it at all. With a good way or providing ads and linking all that spare processing power, Google could easily make enough money to cover its development, maintenance and upgrading costs for the system, as well as make some extra money to throw elsewhere.

Single PC based
The argument for having each operating system being a single entity is simple. The amount of bandwidth and processing power on Google’s part to keep all the users running would be too great to handle effectively. Even with estimates of 126-316 Teraflops in processing power, the Google super-cluster would not be able to keep everyone satisfied. To show how this works with basic math lets take the upper part of that range 316 Teraflops and do our calculations for that. A standard PC runs in excess of 2 GHz or a few Gigaflops. The PlayStation 3 is rated at 2.005 Teraflops (200th fastest in the world) and the Xbox at half that, due to consoles’ graphics processors, but we only want to deal with CPU speeds. Hence we can say that our average PC runs at about 3.16 Gigaflops (to make our calculations easier). Now we need an estimate for user base. Currently Linux has an estimated 29 million users. Let us say that Google OS does not do as great and only makes 1/3 of what Linux has for a user base, or 10 million people. 3.16*10^14 (316 Teraflops) divided by 1*10^7 (10 million people) comes out to 3.16*10^7 flops. If we compare the 31.6 megaflops we got for an answer to the 3.16 gigaflops that our computers run at, we can see the impossibility of the matter.

Linked to Google servers
The link to the Google servers is to allow Google to access users’ spare resources, to make a pseudo internet and tailor advertisments.
Spare resources:
The spare resource use would work much like Folding@Home or the one that started it: SETI@Home. Most computers run at around 50% power. My computer right now, while running Google Desktop, Mozilla Firefox, MSN, Word, Winamp, XFire and an assortment of other programs, is averaging around 20% of its CPU usage and 41% of my RAM. But we should stick with 50% just to be safe. Now if we come back to the same numbers: 10 million 3.16 gigaflop processors. Lets take half of 3.16*10^9 and multiply that by 1*10^7 and we come out with 1.58*10^16 Flops. That is 15800 teraflops, which is 50 times more than the high end of what Google has already. Of course we can not expect 100% efficiency and have to account for computers not always being on. So let us say the transfer is about 50% effective and that a standard computer is on for 1/5th of the day (less than 5 hours) and that we split each flops across 5 computers. Calculate 1.58*10^16 * 0.5 * 0.2 * 0.2 and we get 3.16^14 or 316 Teraflops. In other words by getting 10 million people to use their OS, Google could double its operating speed.
Pseudo internet:
With complete knowledge of people’s surfing Google would be able to customize its own internet (Let us call it GoogleNet for now). With knowledge of what sites each individual wants to access and with a couple of servers running a server version of Google OS they could devise their own map of how to more effectively link all the Google OS users and all the Google OS servers. If you are trying to contact another person running Google OS directly, or are contacting a Google OS server, instead of going through the internet you would go through the Google sub-network. Since Google can customize how your packets fly around in their sub network they can optimize it for quicker speed. If you are trying to contact a non Google computer, then Google can take you to one of its own computers virtually near the one you are trying to contact and then let your packets fly out onto the internet, thus optimizing speed.
To keep this sort of subnet active and efficient Google would need a lot of power. They would need to devise new software to make fast net mapping and to evaluate peoples surfing. For that task they can use the same PhDs they hired already. The power for the processing would come from the spare resources Google could draw from the users of its system.

In my mind there is no debate as to if Google OS will come out. The only debate is when the operating system will arrive, what features it will have, and how everyone will react. What I am perplexed about is if the alleged Google Grid will come before or after Google operating system. The Grid and OS have wide discussion across the internet but there are no real comments from Google itself. I guess we will all just have to sit around and hope that Google does not get sidetracked or Netscaped.

Labels: , ,