Thursday, January 8, 2009

WWW: Denominator for you, me and 1,463,632,359 other people

On December 25, 1990 Tim Berners-Lee established the first successful communication between an HTTP client and server via the Internet with the help of Robert Cailliau and a young student staff at CERN which have led to the world wide web. It is a common misconseption that they have invented the internet.

Well, they did not (see Vint Cerf and Robert Kahn).

The internet and all tools they needed to initially create the idea was already there.

The missing piece (or habitat actually) was the absence of a denominator for people to meet. Berners-Lee describes the inefficiency of information transfer while working at CERN as"it was just easier to go and ask people when they were having coffee".

"Well, I found it frustrating that in those days, there was different information on different computers, but you had to log on to different computers to get at it. Also, sometimes you had to learn a different program on each computer. So finding out how things worked was really difficult. Often it was just easier to go and ask people when they were having coffee.

Because people at CERN came from universities all over the world, they brought with them all types of computers. Not just Unix, Mac and PC: there were all kinds of big mainframe computer and medium sized computers running all sorts of software.

I actually wrote some programs to take information from one system and convert it so it could be inserted into another system. More than once. And when you are a programmer, and you solve one problem and then you solve one that's very similar, you often think, "Isn't there a better way? Can't we just fix this problem for good?" That became "Can't we convert every information system so that it looks like part of some imaginary information system which everyone can read?" And that became the WWW."



World's first server

What he basically did was, accumulating the info he had with years of experience, observed and analysed the situation, thought about a more convenient way to use a variety of tools and here you go you just connected HTTP, IP, DNS, TCP/IP and ended up creating something 1,463,632,361 people use: WorldWideWeb.

"I want you to know that you too can make new programs which create new fun ways of using computers and using the Internet.

I want you to realize that, if you can imagine a computer doing something, you can program a computer to do that.

Unbounded opportunity... limited only by your imagination.

And a couple of laws of physics.

Of course, what happens with computers is that you have a basic simple idea and then you have to add things on to it for practical reasons. So real-world computer programs can end up with a lot of stuff in them. If they are good, they are still simple inside."

It actually is simple if you are proficient with the tools you use as they were parts of your body. The important part is getting there, which requires years of patience, resilience and devotion.

Basic example on login sequence and carrying data between forms: Welcome Marty McFly

Let's give a simple example on carrying data between forms by saying hi to our guest login star "mmcfly".

Let's micro manage for a second:
We have 1 user: "Marty McFly", who has the properties: "id, name, password" to login. So we need a database to keep his info and a class to define this info on our program.

We name the database: "myDatabase", name the table: "user" and columns:"userId, userName, userPassword".

Back to the code side, our "login" class keeps definitons:

private int userId;

public int UserId
{
get { return userId; }
set { userId = value; }
}
private string userName;

public string UserName
{
get { return userName; }
set { userName = value; }
}
private string userPassword;

public string UserPassword
{
get { return userPassword; }
set { userPassword = value; }
}


It's time to log Marty in.

We create an instance of the login class and fill it with Marty's information.

login logg= null;

private void button1_Click(object sender, EventArgs e)
{

SqlConnection con = new SqlConnection("server=.;database=myDatabase;uid=userId;pwd=password");

SqlCommand com = new SqlCommand("select userName, userPassword from login where userName=@userName and userPassword=@userPassword",con);

com.Parameters.AddWithValue("@userName", textBox1.Text);
com.Parameters.AddWithValue("@userPassword", textBox2.Text);

con.Open();

SqlDataReader dr = com.ExecuteReader();

while(dr.Read())
{
logg=new login();
logg.UserName = dr["userName"].ToString();
logg.UserPassword = dr["userPassword"].ToString();
}

con.Close();


We have just called the login information from database, matched it and wrote it on our instance of login class so we can use it anywhere we want.
If the info we have entered is true we can now use the information on another form:

private void frmChangePw_Load(object sender, EventArgs e)

{

label3.Text = (frmLogin.logg as login).userName;

}

which means in literal words: when loading this form, take the value of our "logg" instance from login class and use the "userName" property for the label's value.


You can carry any data you would need for your own scenario. In this one, Marty clicked on "mmcfly logged in" link and now he can change his password if he thinks "einstein" is too predictable for Doctor Brown.

Tuesday, January 6, 2009

New Feature! No need to ring anymore, you can Google search it in case you lose your cellphone




Consider that you are living in a county and you will drive to a friend in another county nearby. Would you go to downtown first and then go to the address, or would you go directly to the address you want? I was more than surprised to see how many people have gotten the habit of surfing the net by google searching the addresses they already know. Maybe they don't use favorites/bookmarks feature, or maybe the net got so fast, it is easier to google search it without thinking about it. One thing is for sure, Google has reinvented the idea of a search engine more than a decade ago and people have changed their surfing habbits accordingly over years. Maybe they didn't have to analyse things in depth too.
  • First years of internet era genius webmasters or advertisers had thought that it would be a good idea to choke the internet user with overwhelming amount of ads on their sites and expect the recently dazed to click on their links by accident or just popping it up their face automatically. However Google designed all of their services as lean as possible, even their ads which were not randomly appearing to the user, but appearing regarding the user's keywords so it would be relevant the the person itself.
  • Primary search engines would only search the keywords typed in and return results in random order or maybe with an algorithm obviously didn't work, since users had to go further to tenth page and still may not find what they would look for. Google collected statistics of people who searched the same or similar keywords and have developed an algorithm returning the results mostly clicked on.
  • While major e-mail providers still were very non user friendly and would provide only 10 MB's of storage, Google offered 1 GB of storage on March, 2004, to it's Gmail users with the service of being free of ads, able to transfer larger files, revolutionary chat-like automatic mail categorization feature.

With the fact that internet users around the world are enjoying Google's services, it is always good to have competition for both consumers and competitors. Google had the idea of simplicity to get where they are. Maybe it's time to actualize that bright idea dwell in mind but never got the motive to do so.

Monday, January 5, 2009

Internet Explorer: Time to go open source?

Unfortunately Internet Explorer still continues to be the worst nightmare when experienced users for any reason had to deal with/use regular users' internet browsing. Being bundled to undeniably the largest spread operating system Windows OS, regular users don't tend to look for any other web browser since they do not feel the lack of user friendly usage or speed with the couple of minutes they spend online surfing the net, or hours spent on only on a couple of popular websites.

Therefore worst nightmare for an experienced user starts when there is no other web browser icon visible on the computer when they are asked to fix something or help with some content on a website. Despite the fact that it may only be a loss of total 20 seconds, it still is like feeling bad for your friend when they still keep their two word reminders in a huge Word document instead of a .txt.


Blue :Internet Explorer (68.15%)

Orange :Mozilla Firefox (21.34%)

Gray :Safari (7.93%)

Yellow :Google Chrome (1.04%)

Red : Opera (0.71%)

Green :Netscape (0.57%)

Aqua :Other (0.24%)



Source:Wikipedia

United States Department of Justice (DOJ) and 20 U.S. states have opened a lawsuit against Microsoft on May 18, 1998, for using it's monopoly power to force users to use it's own browser and win the browser wars since it was obvious to people then, browsers were going to be extremely important with the following years to come.

However despite more than a decade being passed after browser wars, Microsoft failed to create a better surfing experience for Internet Explorer users, being slower comparing to it's competitors and having a non user-friendly interface with a lot of irrelevant popups, information and crashes for it's users' to deal with.

Site Layout: Floating elements gone missing

While designing your website if you would want to use floating elements and place other elements under it, all browsers except Internet Explorer ignore the floating elements and resolve as if they don't exist. This is not because Internet Explorer has an extended technology the others lack to comprehend, quite the contrary, IE is being proactive for you and resolving something that you haven't indicated yet.
Whenever you would want to place for instance a footer under your floating content you would have to clear the floating elements by adding the following div:



right before the element you are placing beneath.
If you want to clear only left or right floating elements, you can change clear:both accordingly.