Showing posts with label Technical Articles. Show all posts
Showing posts with label Technical Articles. Show all posts

Wednesday, June 4, 2008

Technical Articles - 3: Web 2.0

Web2.0. We come across this word now and then in the Internet. When ever a CTO or some big head gives a talk, at least once he/she will use this word. What is Web 2.0?. Do we have any thing like Web1.0 and web 3.0?

The term Web2.0 became notable after the first O'Reilly Media Web 2.0 conference in 2004. According to them web2.0 stands for ,
"Web 2.0 is the business revolution in the computer industry caused by the move to the Internet as platform, and an attempt to understand the rules for success on that new platform".

Here is an another definition for web 2.0 from First Monday.
"Web 2.0 represents a blurring of the boundaries between Web users and producers, consumption and participation, authority and amateurism, play and work, data and the network, reality and virtuality. "

So, Web 2.0 is a not a technology but a way of designing applications. We cannot even call it as a way of programming.

Returning back to O'Reillys statement,
Mr. O’Reilly characterized Web 1.0 through a set of static, one–way browser–based applications like personal Web sites and the encyclopedia Britannica Online, publishing, content management systems, and taxonomies. Subsequently, he distinguished Web 2.0 by associating it with the “new participatory architectures of the Web” that allow for online services such as the photo sharing site Flickr, blogs, the peer–to–peer file sharing standard BitTorrent, Wikipedia, event sites like Upcoming.org, the file–sharing service Napster, wikis (collaborative Web sites that allow for real–time editing), folksonomies (user–generated taxonomies), and the aggregation of online content through Web feeds.

The definition morphed considerably over time. Late in 2005 O’Reilly wrote that:
"Web 2.0 is the network as platform, spanning all connected devices; Web 2.0 applications & [are] delivering software as a continually–updated service that gets better the more people use it, consuming and remixing data from multiple sources, including individual users, while providing their own data and services in a form that allows remixing by others, creating network effects through an ‘architecture of participation,’ and & deliver rich user experiences."


According to MichelZimmer's article in First Monday,
"Which technologies are commonly collected under the Web 2.0 umbrella? Evangelists of the phrase huddle technologies like the Web development technique Ajax , the Ruby programming language, CSS, RSS, OpenAPIs, wikis, blogs, mashups (digital media works that draw from already existing texts or audio), and podcasts (media files that are distributed over the Internet to be played back on portable media players) under its roof. They highlight user–friendly interfaces, activities like tagging, social networking and microformats as Web 2.0 descriptors"

To put it in my words, there is no restriction that only a particular set of technology can be used for web2.0.

(To be Continued)

Saturday, May 24, 2008

Technical Articles - 2 :Coupling

Coupling:
Interfacing of 2 systems is called as coupling. Coupling is of 2 types
1 Tight Coupling
2 Loose Coupling


Tight Coupling:
In Tight Coupling, Computers are connected to each other through strictures of Custom made interface. In Distributed environment, it is not wrong. How ever, if you want to make any change in the interface it is either costly or too difficult.
Lets consider our previous case (Notes <-> LEI <-> DB2).

The user also has a SAP application. If he wants that integrate with the above, the he need to develop or procure some other interface which connects both DB2 and SAP with Lotus notes.

To put it in simple words, In Tight Coupling Change is expensive and time consuming.
In the below figure, we have interface (in dark blue color) which connects with all the 3 system. The interface converts each request in such a way that other systems can understand it.




Before talking about Loose Coupling, we can discuss why change is difficult in tight coupling.
Let’s take a real time example:
Currently I’m living at Bangalore, India. The official language here is Kannada, which I don’t know. If I go to a barbershop, I need to explain the barber about my hair style, so that he can continue in the same pattern.

I don’t know Kannada, and the barber knew only Kannada. He cannot understand what I try to convey. So I need to have a translator with me who can translate Tamil, the language that I speak, into Kannada, so that the barber can understand. Or I should learn to speak Kannada.

When I’m in Karnataka, I can use this translator. Consider if I have move to some other part where the people speak Marathi. The entire process repeats. Either I have to learn Marathi or I need to have a translator.

The same thing applies to the software too. Every OS/Software has its own set of standards, which need not to be compatible with other OS/Software. More clearly 2 different softwares cannot directly communicate with each other.

Learning a new language is some thing like developing a custom interface and having a translator is like buying some software from the market.



Loose Coupling:
In loose coupling, we can add any number of computers to the given network with minor/no modification.
As I said previously, each system has its own standard. But the problem with the tight coupling made the manufactures to think in a different way. Each system may have different standards but for communication all of the use the same standard.
Let’s have a real time example here for a better understanding:
My mother tongue is Tamil. I’m at barber shop. The barber’s mother tongue is Kannada. How can we communicate each other? Both of us know English. I would explain my requirements in English and as he too knows English he can understand what I want. So I no need to Learn Kannada or need not have Translator.
Following the same, all applications can do all their work in their own standard, but when they need to communicate with some other system, all the applications will/should follow a common standard/protocal.

Saturday, May 17, 2008

Technical Articles - 1

I have been working in IT industry for almost 3 years. I did my graduation in Electrical and Electronics Engineering. Of the 45 + papers that I had in my under graduation, only 3 papers were related to IT. They are Programming in C & UNIX (No practical or lab classes. Only theory classes), Object Oriented Programming (No practical or lab classes. Only theory classes) and Software Engineering. And during my college days the only paper that I failed to pass at the first attempt is Object Oriented Programming. Failing in a paper doesn’t mean that I don’t have any knowledge about that paper. I have written the exam well and I don’t know why I couldn’t clear. After a short stint in construction industry I joined the IT industry.



I started my IT carrier with a startup organization. The advantage working in startup organization is we had the chance to work on several emerging technologies. Often my boss would insist us to learn/practice some new technology. At times, what he speaks would be like a Greek and Latin to me. And my boss, when talking to us, he often use the words SOAP, Ajax, Web services, SOA, XML, DXL XSLT, Web2.0 etc. In free time I will search in Google / wikipedia for the terms that my boss used. If I search for some terms, it will lead me to some other term. If I search for the other term it will lead to some other term. It will be an infinite loop. It took several days for me to understand what each term means. How can we use it in our day to day programming.



For guys like me, without the basic functional knowledge, I would like to share what I know. The basics of computer, Internet and some other programming practices. I cannot assure that what ever I write is correct. It’s just my understanding. Since I work mostly on collaboration and internet technologies, most of the articles will be related to that. In this post I will write some thing about Distributed Computing and Interfaces.



1. Distributed Computing:
A software/hardware architecture where more than 1 computer is involved in completion of a task.
Let’s have a simple example:
A food processing company has a DB2 database to store the stock details. And a Lotus notes application to handle the order. When there is new order, the lotus notes application needs to check the DB2 for the available stocks and process the order. So we have 2 different systems, interacting with each other and complete the task. This is called distributed computing



2. Interface :
Interface is hardware/software component which is used to connect to 2 or more computers.
Let’s consider the previous case.
Lotus notes and Db2 needs to work in sync for successful completion of the task. As Lotus notes and DB2 has different architecture they cannot be directly connected. Instead we need a middle man who takes the responsibility of connecting the different system. The middle man understands the query from the lotus notes application and translates it into such a manner that the DB2 can understand. And vice versa. The middle man is considered as the interface. In our case we used Lotus Enterprise Integrator (LEI) as the middle man (Interface)
I hope the above is clear.