Search This Blog

Saturday, August 30, 2008

An Introduction to Ruby - Technology

An Introduction to Ruby

Ruby is an object-oriented scripting language that combines the object-oriented programming (OOP) power of Smalltalk with the utility of Perl and the power of Python.

I can already hear you grumbling, "Oh, great, another language." Why should you care? You're already up to your elbows in technologies to learn, right? Well, call your significant other and tell him or her you're going to be late tonight. And go get another Jolt. You're going to be hooked on Ruby for the simple reason that Ruby makes programming fun again (and that's what really counts).

This article introduces Ruby by examining the high-level properties of the language as well as some important features that distinguish it from other languages. We'll compare Ruby with Perl and Python. Along the way, I'll provide my personal take on Ruby, and why I think you'll love it as much as I do.

Traits That Recommend Ruby

Looking down on Ruby from 50,000 feet, we see it has several qualities that recommend it as the next language you should learn, including its consistency and elegance, OOP features, ease of use, extensibility, and its applicability to rapid development.

But what exactly is Ruby? It's a weakly typed, interpreted, cross-platform language implemented in C, written from the ground up to be object-oriented. Ruby's been around since 1995, and has its largest following in Japan, the home of Ruby's author, Yukihiro Matsumoto, a.k.a. "Matz." Although Ruby is more popular in Japan than Python, you may not have heard much about it, yet. Or, if you have, you may have heard that it's a "better Perl than Perl."

I think there's a large measure of truth in that statement. Ruby somehow manages to combine some of the best features of Smalltalk, C, Perl, and Python in a package so elegant and natural that I found myself hooked after just one day.

Some of Ruby's strongest traits are:

  • Consistency. This is perhaps the single most important trait
    of Ruby. Like C, Ruby is a small language. It's a simple language,
    and Matz has made sure that a small set of rules govern its design. The result is Ruby stays out of your way; you don't have to build scaffolding to get it to actually work on the problem at hand.

  • Elegantly object oriented. Ruby fully supports object-oriented programming, with a from-the-ground-up, internally consistent and straightforward object model. Ruby has all the features you'd expect from an OOPL, including classes, methods, (single) inheritance, polymorphism, class methods, exceptions, and more. These features are designed from the beginning, not glued-on, which means Ruby doesn't have the little inconsistencies and gotchas you'll find elsewhere.

    For example, remember when you were learning C++ and the difference between pointer-to-function and pointer-to-member-function bit you on the butt? Or in Perl and Python, where the object (or reference, or string) is passed to your method as the first argument? Or the lack of access controls in Perl. Or.... Well, you get the idea.

  • Easy to use. Ruby's consistency and its object model make it easy to use. The syntax is simple, clean, and readable, with an expressiveness that gives your code a natural flow. Specific features of the language, such as the ability to pass code blocks on method invocations, make Ruby source wonderfully transparent. There's little of the "line noise" you find in other languages, and although there's also none of the bondage-and-discipline nature you'll find in other languages, Ruby seems to promote a sparse, readable, succinct coding style.

  • Easy to extend. Using its C-interface extension API, you can
    create interfaces from Ruby code to existing third-party commercial or
    noncommercial libraries, or selectively implement methods or classes in a lower-level programming language to improve performance.

  • Perfect for rapid development. Finally, because Ruby is an interpreted language, it is ideally suited to rapid application development. Write your code, run it, debug it, and run the modified code again--fast, simple, and fun. This low-torque, high-revolution
    implementation style lets you flow more easily from conception to incarnation as you code. The result can be a surprising increase in your productivity. Although Ruby can be used for large-scale, long-term projects, I now count it as my favorite language for prototyping and spike-solution development.

    These aspects of Ruby arise from the design of the language, its purpose, and its heritage. But aside from these more abstract positive qualities, there are several specific language features that you'll want to explore in Ruby. These include code blocks/closures, iterators, variable scoping by name, and its uniform object treatment

Sample Code and Output

Related Reference

Ruby in a Nutshell

By Yukihiro Matsumoto With translated text by David L. Reynolds Jr.

Table of Contents


Sample Excerpt

Full Description

In Ruby, a block is a group of statements appearing next to a method invocation; it is the last argument passed to the method. Sometimes this block is referred to as an "anonymous inline
callback." This code block isn't called in the lexical scope in
which it appears; rather, it can be called from the method that is being invoked (using 'yield'). It's a form of callback, but has greater power because it can be used as a closure. A closure is code that "closes off" or "packages up" references to variables outside
the lexical scope that exists at the time the code is
executed. In simpler terms, Ruby's blocks allow you to simply and expressively pass behavior as well as data in method invocations. A method invocation becomes a dialog between the caller and the callee.

def method_that_calls_a_block(arg)

puts "The argument to the method call was #{arg}."

# Here, the variable 'xyzzy' (which is used in the
# block below) is undefined; it's not in this lexical
# scope. But using a block, the code in the block
# can reference 'xyzzy'.

# Now we call the block using 'yield', passing it
# the square of the argument to this method.

yield arg * arg


# Our magic variable
xyzzy = 42

# Now we invoke method_that_calls_a_block, passing it
# 2 as an argument. The block is invoked from inside
# the method (above, using 'yield').

method_that_calls_a_block(2) { arg
puts "Hello from the block. Argument to the block is #{arg}."
puts "xyzzy is #{xyzzy}."
xyzzy += arg
puts "Hello again. Now xyzzy is #{xyzzy}."
puts "All done with the method. Now xyzzy is #{xyzzy}."

The output from this contrived little demonstration is:

The argument to the method call was 2.
Hello from the block. Argument to the block is 4.
xyzzy is 42.
Hello again. Now xyzzy is 46.
All done with the method. Now xyzzy is 46.

One of the most powerful, pervasive, and downright fun results of having blocks is Ruby's iterators. One of the nice things you'll find in most OOPLs is a set of classes for maintaining collections of objects. Yes, container classes certainly reduce drudgery, but there can be problems with them. Especially with designs that are a bit too "intimate." In Ruby, an iterator is a method implemented by a container using blocks as callbacks, which allows the iterator to
supply the knowledge about how to traverse the collection and the invoker to supply the knowledge about how to perform operations on elements in the collection. This simple abstraction allows an elegant decoupling of collections and their contents. For example, to sort an array of strings by length (instead of by alphabetical order):

goofyStuff = ["orange", "phase-plasma cannon", "epistle"]
p goofyStuff.sort # Default compare - alphabetical
p goofyStuff.sort { a,b a.length <=> b.length } # We specify compare

The results are:

["epistle", "orange", "phase-plasma cannon"]
["orange", "epistle", "phase-plasma cannon"]

In Ruby, variables are scoped by name:

  • Locals start with lowercase.
  • Instance variables are prefixed with '@'.
  • Class variables start with '@@'.
  • Constants start with an uppercase letter.
  • And finally, globals start with a dollar sign, '$'.

There is a certain resemblance to the "line noise" found in Perl, but in practice, the result is far more readable and intuitive. There's no variable declaration in Ruby, but with a glance, this scope-by-name feature allows you to tell what kind of variable you're looking at:


This lets you go a little crazy:

$xyzzy = @@xyzzy = @xyzzy = xyzzy = XYZZY

Lastly, in Ruby, everything is an object. The practical and positive results of this simple rule can't be overemphasized. There's a pure, intuitive joy to be found in calling methods on literals:

length = "Hello, world!".length
10.downto(1) { n puts n, "You're getting sleepier... " }

I can only look back and rue the days I spent writing Java code to flip-flop back and forth between the fundamental data type and the class for integers. Just say no, with Ruby.

Regarding Perl and Python

If you've gotten this far, Ruby probably sounds intriguing to you. But there's still that nagging question of "Is it better enough than Perl or Python to make it worth my while to learn it?" It's a valid question, and naturally, only you can answer it. But there are a few salient differences to consider.

Ruby owes much to Perl. It resembles Perl in many ways, sharing many shortcut globals (things like $0, $$, and so on), and it shares Perl's power to manipulate textual data. But Ruby is like a sleek, elegant Perl, with a fully integrated object model. It handles complex data structures better, and seems better suited to programming in the large. And, it's a heck of a lot easier to read.

My Perl background is quite a bit stronger than my experience with Python, and I found myself breathing an "Ahhhh" of relief with Ruby. There are some things that really bugged me about Perl. For instance, I have to agree with the sentiment that Perl seems to encourage a write-only coding style. It's just plain hard on the eyes. And there are some things that just make me shudder, like the lack of method access controls, and the lack of data inheritance.
But, these things seem to melt away with Ruby.

Ruby has similar goals to Python, but a significantly different approach to meeting those goals. Ruby differs in the unified nature of its object model; Python uses a procedural-and-object hybrid approach that at times feels a bit contrived. I find all those 'self' references tedious. In
Python, methods are objects, which they aren't in Ruby. Python supports multiple inheritance, which Ruby does not. On the other hand, Ruby also has much greater syntactic flexibility than Python. And Ruby makes superior use of blocks, closures, and iterators.

I think the biggest difference between Python and Ruby is philosophy. I suspect that folks will be drawn to one language or the other based on factors that are ineffable.

Remote E-Banking in India

Remote E-Banking in India
Villagers gain access through biometric verification and cell-phones.
Tuesday, August 12, 2008
By David Talbot
Kasaghatta, India: It's a 90-minute walk from this southern Indian village--one of 730,000 in India--to Doddabenavengala, the nearest town with a bank branch. Until a few months ago, Karehanumaiah, a 55-year-old agricultural laborer, had no bank account, which also meant he had no access to formal credit. (He would have to pay 10 percent monthly interest to informal lenders to, say, borrow $45 to buy a goat.) But that all changed in recent months.
Karehanumaiah uses a desktop terminal to deposit 150 rupees (about $3.50) into his new account at Corporation Bank, with help from Muniyamma Ramanjanappa, a village resident who conducts these transactions in her concrete house as a bank representative. First, a smart card and a thumbprint scan prove his identity. Next, Ramanjanappa updates the bank balance information on his smart card by connecting the terminal to the bank database with a cell phone. Finally, Karehanumaiah hands Ramanjanappa the cash and gets a receipt for his deposit (which brings his balance up to 160 rupees). To their left is Ram Sirupurapu, executive director of Integra Microsystems, the maker of the terminal. Ramanjanappa makes weekly trips to the Doddabenavengala branch with the cash. And now that Karehanumaiah has a bank account, he can borrow money from the bank at rates of between 8.5 and 13 percent annually--far less than in the informal system--and gain a toehold into the formal economy.
Ninety percent of India's rural residents lack bank accounts, and a variety of technologies are being applied to the problem. Other efforts include using cell phones to make payments and execute bank transactions in a nation that is enrolling a staggering eight million new cell-phone accounts monthly, many of them in rural areas.
Source: Technology Review

Using the Internet Anonymously - Web 3.0 Article

New open-source software by IBM could let people minimize their digital footprints, potentially curbing online fraud.
By Kate Greene

Think about the last time you bought a DVD, booked a flight, rented a car, or signed up for a service or newsletter on the Internet. At some point, you had to fill out a form that asked for a lot of personal information. While it's a hassle unto itself, filling out forms can lead to a bigger problem: each time you give out your information, you provide an opportunity for your information to be picked off by identity thieves.

As more services migrate online, and as tactics of identity thieves become more sophisticated, people will need better ways to manage their information, says Nataraj Nagaratnam, chief architect of identity management for IBM Tivoli.

Nagaratnam and other IBM researchers have developed open-source software that they think can help. Called Identity Mixer (Idemix), the digital identity management software lets people make online transactions--from filling out forms to purchasing plane tickets--without disclosing personal information. The software lets a person use artificial identity information, in the form of digital "tokens," to make online transactions. Using these encrypted tokens, which are issued by trusted sources such as the Department of Motor Vehicles (DMV) or a bank, a person can effectively be anonymous to Web services such as or Expedia, never giving out his or her information.

In a typical online purchase, Idemix could obviate the need for a person to fill out a form or reveal her credit-card number. Instead, she could use a token that vouches for her, verifying that she is who she says she is and that she has the appropriate funds and credit to make a purchase.

In addition, these tokens would provide only the information that is needed. For instance, if you're renting a car online and need to verify that you're older than 25, a token from the DMV could verify that you can legitimately rent without divulging your birth date, license number, or address. Otherwise, you reveal more than you need to about yourself, says John Clippinger, senior fellow at the Berkman Center for Internet and Society at Harvard Law School. "It's like using a passport when you buy a Coke."
To explain digital identity management, Clippinger draws from a real-world example: we have wallets that hold identifying cards such as a license or credit cards, he says, but we don't have an analogy in cyberspace. "It's hard to make people appreciate things like privacy and [online] identification," he says, "but I think these things are going to become much more critical."

People might start to pay attention soon, because an early identity management system is now commercially available through Microsoft Vista, the company's recently released operating system. Microsoft's technology is called CardSpace, and it also acts like a digital wallet, but it differs from Idemix in a couple of ways. One major difference is that Idemix is open-source software that can be used by any software developer to make applications for myriad technologies, from Web browsers to mobile phones.

Wednesday, August 20, 2008

Internet Advertising - Formats

Internet Advertising is of various formats:
These type of advertisements use text messages to convey the idea in a simple manner.
Static banners do not contain any animation, but rather consist of a single image. Even though these banners are not the most technologically advanced they still exist.
An animation created by combining multiple GIF images in one file. The result is multiple images, displayed one after another, that give the appearance of movement. An animated GIF can loop endlessly or it can display a few images and then stop the animation.Interactivity with the animated GIF banner is not possible. However, despite its limitations, this type of banner is the most common banner on the web as it offers a good compromise between technical prerequisites and focused attention.
An HTML banner contains graphics and additional HTML commands. These commands create interactive elements such as, drop - down menus, text boxes, check boxes, option buttons, submit buttons etc., which the users can use to make their selections or to fill in the text boxes and submit the data.
The addition of JavaScript allows the user's commands to be processed within the banner. Functionalities such as calculation of rates, search windows, capturing user details can also be performed within the banner.
The Flash banner contains sequences of animated images to be played within a time span. It contains vector graphic based animations with full navigation, graphic illustrations, interactivities and sound.
When a page is loaded, this type of banner expands initially, continues to play for some time and then shrinks back to its original dimensions. It contains a close button while the banner is in expandable form. It has a replay button while the banner is in its original form.
When a page is loaded, the rollout format continues to play with its original dimensions, expands automatically and shrinks back to its original dimensions without the intervention of the mouse pointer. It has no stop or replay button.
Rollover format enlarges, when the mouse pointer moves on the ad and shrinks back to the original form when the mouse pointer moves away. It does not have a close or replay button.
The shoshkele does its animation and settle exactly at a position on the web page. It has a prominent close button, which can be used to suspend the activity in order to prevent user’s irritation. These ads can animate across the page, which works well for drawing attention towards the ad. It is also known as floating ads and overlay ads
This type of banner stays along with the page, even when the page is scrolled. It appears with a close button which can be used to suspend the activity in order to prevent user's irritation.
This type of ad is displayed between page navigations. When a user wants to navigate to another page, the ad is displayed for a few seconds before proceeding to another page. This type of ad is usually large, and is also known as transition ads.
When a user clicks the play button, the video ad will initiate. It contains a play button, stop button, pause button, mute button and a volume bar. The video will not automatically replay, the user must click the play button to reinitiate the video and also the user can stop playing the video by clicking the stop button. The audio can be controlled by the volume bar.
The Site Take Over is a full page ad that moves within a transparent layer over a page and animates within a limited area which takes-over the primary web page and leaves the viewer with a creative experience. It is also known as full-page overlays, page overlays and takeover ads.
Peel off Ads are non intrusive Ads which use the simple factor of curiosity to convince the users to click. It reveals a glimpse of your Ad in a corner of the web page. When the viewer interacts, the rest of the Ad peels down to unveil your complete message. You can rotate multiple Ads with this format. It is also called as peel away ads, page peel ads, peel off, curl and dog ears.

Internet Advertising - Definition

Delivering ads to Internet users via Web sites, e-mail, ad-supported software and Internet-enabled cellphones. Also called an "ad network," Internet advertising organizations act as a middleman between the advertiser and the Web sites and software publishers that display the ads. They make a profit by selling the online campaign to the advertisers and paying the sites to distribute them. Such organizations may also provide software tools and/or adservers that enable an organization to deliver the ads it generates itself.

Tuesday, August 19, 2008

Data Mining - An Introduction


Generally, data mining (sometimes called data or knowledge discovery) is the process of analyzing data from different perspectives and summarizing it into useful information - information that can be used to increase revenue, cuts costs, or both. Data mining software is one of a number of analytical tools for analyzing data. It allows users to analyze data from many different dimensions or angles, categorize it, and summarize the relationships identified. Technically, data mining is the process of finding correlations or patterns among dozens of fields in large relational databases.

Continuous Innovation

Although data mining is a relatively new term, the technology is not. Companies have used powerful computers to sift through volumes of supermarket scanner data and analyze market research reports for years. However, continuous innovations in computer processing power, disk storage, and statistical software are dramatically increasing the accuracy of analysis while driving down the cost.


For example, one Midwest grocery chain used the data mining capacity of Oracle software to analyze local buying patterns. They discovered that when men bought diapers on Thursdays and Saturdays, they also tended to buy beer. Further analysis showed that these shoppers typically did their weekly grocery shopping on Saturdays. On Thursdays, however, they only bought a few items. The retailer concluded that they purchased the beer to have it available for the upcoming weekend. The grocery chain could use this newly discovered information in various ways to increase revenue. For example, they could move the beer display closer to the diaper display. And, they could make sure beer and diapers were sold at full price on Thursdays.

Data, Information, and Knowledge


Data are any facts, numbers, or text that can be processed by a computer. Today, organizations are accumulating vast and growing amounts of data in different formats and different databases. This includes:

  • operational or transactional data such as, sales, cost, inventory, payroll, and accounting

  • nonoperational data, such as industry sales, forecast data, and macro economic data

  • meta data - data about the data itself, such as logical database design or data dictionary definitions


The patterns, associations, or relationships among all this data can provide information. For example, analysis of retail point of sale transaction data can yield information on which products are selling and when.


Information can be converted into knowledge about historical patterns and future trends. For example, summary information on retail supermarket sales can be analyzed in light of promotional efforts to provide knowledge of consumer buying behavior. Thus, a manufacturer or retailer could determine which items are most susceptible to promotional efforts.

Data Warehouses

Dramatic advances in data capture, processing power, data transmission, and storage capabilities are enabling organizations to integrate their various databases into data warehouses. Data warehousing is defined as a process of centralized data management and retrieval. Data warehousing, like data mining, is a relatively new term although the concept itself has been around for years. Data warehousing represents an ideal vision of maintaining a central repository of all organizational data. Centralization of data is needed to maximize user access and analysis. Dramatic technological advances are making this vision a reality for many companies. And, equally dramatic advances in data analysis software are allowing users to access this data freely. The data analysis software is what supports data mining.

What can data mining do?

Data mining is primarily used today by companies with a strong consumer focus - retail, financial, communication, and marketing organizations. It enables these companies to determine relationships among "internal" factors such as price, product positioning, or staff skills, and "external" factors such as economic indicators, competition, and customer demographics. And, it enables them to determine the impact on sales, customer satisfaction, and corporate profits. Finally, it enables them to "drill down" into summary information to view detail transactional data.

With data mining, a retailer could use point-of-sale records of customer purchases to send targeted promotions based on an individual's purchase history. By mining demographic data from comment or warranty cards, the retailer could develop products and promotions to appeal to specific customer segments.

For example, Blockbuster Entertainment mines its video rental history database to recommend rentals to individual customers. American Express can suggest products to its cardholders based on analysis of their monthly expenditures.

WalMart is pioneering massive data mining to transform its supplier relationships. WalMart captures point-of-sale transactions from over 2,900 stores in 6 countries and continuously transmits this data to its massive 7.5 terabyte Teradata data warehouse. WalMart allows more than 3,500 suppliers, to access data on their products and perform data analyses. These suppliers use this data to identify customer buying patterns at the store display level. They use this information to manage local store inventory and identify new merchandising opportunities. In 1995, WalMart computers processed over 1 million complex data queries.

The National Basketball Association (NBA) is exploring a data mining application that can be used in conjunction with image recordings of basketball games. The Advanced Scout software analyzes the movements of players to help coaches orchestrate plays and strategies.

For example, an analysis of the play-by-play sheet of the game played between the New York Knicks and the Cleveland Cavaliers on January 6, 1995 reveals that when Mark Price played the Guard position, John Williams attempted four jump shots and made each one! Advanced Scout not only finds this pattern, but explains that it is interesting because it differs considerably from the average shooting percentage of 49.30% for the Cavaliers during that game.

By using the NBA universal clock, a coach can automatically bring up the video clips showing each of the jump shots attempted by
Williams with Price on the floor, without needing to comb through hours
of video footage. Those clips show a very successful pick-and-roll play
in which Price draws the Knick's defense and then finds Williams for an
open jump shot.

How does data mining work?

While large-scale information technology has been evolving separate transaction and analytical systems, data mining provides the link between the two. Data mining software analyzes relationships and patterns in stored transaction data based on open-ended user queries. Several types of analytical software are available: statistical, machine learning, and neural networks. Generally, any of four types of relationships are sought:

  • Classes: Stored data is used to locate data in predetermined groups. For example, a restaurant chain could mine customer purchase data to determine when customers visit and what they typically order. This information could be used to increase traffic by having daily specials.

  • Clusters: Data items are grouped according to logical relationships or consumer preferences. For example, data can be mined to identify market segments or consumer affinities.

  • Associations: Data can be mined to identify associations. The beer-diaper example is an example of associative mining.

  • Sequential patterns: Data is mined to anticipate behavior patterns and trends. For example, an outdoor equipment retailer could predict the likelihood of a backpack being purchased based on a consumer's purchase of sleeping bags and hiking shoes.

Data mining consists of five major elements:

  • Extract, transform, and load transaction data onto the data warehouse system.

  • Store and manage the data in a multidimensional database system.

  • Provide data access to business analysts and information technology professionals.

  • Analyze the data by application software.
  • Present the data in a useful format, such as a graph or table.

Different levels of analysis are available:

  • Artificial neural networks: Non-linear predictive models that learn through training and resemble biological neural networks in structure.

  • Genetic algorithms: Optimization techniques that use processes
    such as genetic combination, mutation, and natural selection in a design
    based on the concepts of natural evolution.

  • Decision trees: Tree-shaped structures that represent sets of
    decisions. These decisions generate rules for the classification of a dataset. Specific decision tree methods include Classification and Regression Trees (CART) and Chi Square Automatic Interaction Detection (CHAID) . CART and CHAID are decision tree techniques used for classification of a dataset. They provide a set of rules that you can apply to a new (unclassified) dataset to predict which records will have a given outcome. CART segments a dataset by creating 2-way splits while CHAID segments using chi square tests to create multi-way splits. CART typically requires less data preparation than CHAID.

  • Nearest neighbor method: A technique that classifies each record in a dataset based on a combination of the classes of the k record(s) most similar to it in a historical dataset (where k 1). Sometimes called the k-nearest neighbor technique.

  • Rule induction: The extraction of useful if-then rules from
    data based on statistical significance.

  • Data visualization: The visual interpretation of complex relationships in multidimensional data. Graphics tools are used to illustrate data relationships.

What technological infrastructure is required?

Today, data mining applications are available on all size systems for mainframe, client/server, and PC platforms. System prices range from several thousand dollars for the smallest applications up to $1 million a terabyte for the largest. Enterprise-wide applications generally range in size from 10 gigabytes to over 11 terabytes. NCR has the capacity to deliver applications exceeding 100 terabytes. There are two critical technological drivers:

  • Size of the database: the more data being processed and maintained, the more powerful the system required.
  • Query complexity: the more complex the queries and the greater the number of queries being processed, the more powerful the system required.

Relational database storage and management technology is adequate for many data mining applications less than 50 gigabytes. However, this infrastructure needs to be significantly enhanced to support larger applications. Some vendors have added extensive indexing capabilities to improve query performance. Others use new hardware architectures such as Massively Parallel Processors (MPP) to achieve order-of-magnitude improvements in query time. For example, MPP systems from NCR link hundreds of high-speed Pentium processors to achieve performance levels exceeding those of the largest supercomputers.

RDF Schema(RDFS) -Semantic Web enabling Technology

RDF Schema (RDFS)

RDFS is used to create vocabularies that describe groups of related RDF resources and the relationships between those resources. An RDFS vocabulary defines the allowable properties that can be assigned to RDF resources within a given domain. RDFS also allows you to create classes of resources that share common properties.
Using the same triples paradigm defined by RDF, RDFS triples consist of classes, class properties, and values that define the classes and relationships between the resources within a particular domain.
In an RDFS vocabulary, resources are defined as instances of classes. A class is a resource too, and any class can be a subclass of another. This hierarchical semantic information is what allows machines to determine the meanings of resources based on their properties and classes.
Below is a graphical example of an RDFS that shows a resource and its associated properties, values, and classes.
RDFS graph

Overall, RDFS is a simple vocabulary language for expressing the relationships between resources. Building upon RFDS is OWL, which is a much richer, more expressive vocabulary for defining Semantic Web ontologies.

Resource Description Framework (RDF) - Enabling technology for the Semantic Web

Resource Description Framework (RDF)

An official W3C recommendation, RDF is an XML-based standard for describing resources that exist on the Web, intranets, and extranets. RDF builds on existing XML and URI (Uniform Resource Identifier) technologies, using a URI to identify every resource, and using URIs to
make statements about resources. RDF statements describe a resource (identified by a URI), the resource’s properties, and the values of those properties. RDF statements are often referred to as “triples” that consist of a subject, predicate, and object, which correspond to a resource (subject) a property (predicate), and a property value (object). Below is an example of an RDF statement in plain English:

.The secret Devgood.

RDF triples can be written with XML tags, and they are often conceptualized graphically as shown below:

graphical triples representation

After creating this triple, we can go on to create other triples to associate the agent with an email address, image, etc.

graphical triples representation

Once triples are defined graphically, they can be coded in either RDF/XML or n-Triples formats to be accessed programmatically.
By creating triples with subjects, predicates, and objects, RDF allows machines to make logical assertions based on the associations between subjects and objects. And since RDF uses URIs to identify resources, each resource is tied to a unique definition available on the Web. However, while RDF provides a model and syntax (the rules that specify the elements of a sentence) for describing resources, it does not specify the semantics (the meaning) of the resources. To truly define semantics, we need RDFS and OWL.

The Semantic Web - An introduction

The Semantic Web is a web of data. There is lots of data we all use every day, and its not part of the web. I can see my bank statements on the web, and my photographs, and I can see my appointments in a calendar. But can I see my photos in a calendar to see what I was doing when I took them? Can I see bank statement lines in a calendar?
Why not? Because we don't have a web of data. Because data is controlled by applications, and each application keeps it to itself.

The Semantic Web is about two things.
* It is about common formats for integration and combination of data drawn from diverse sources, where on the original Web mainly concentrated on the interchange of documents.
* It is also about language for recording how the data relates to real world objects. That allows a person, or a machine, to start off in one database, and then move through an unending set of databases which are connected not by wires but by being about the same thing.

Tuesday, August 12, 2008

What is Cryptography


Cryptography is a centuries-old method of communicating sensitive information between two parties in such a way that a third party is restricted from obtaining it. For example, Rose and Fred need to communicate sensitive information. Rose uses an algorithm, called a cipher, to convert the message into unintelligible cipher text (encryption), which can then be sent through an open channel. Fred receives the message and must apply a matching cipher to convert the message back into plain text (decryption). The ciphers are controlled by a set of parameters, called a key. The key is a tool used to encrypt and decrypt. Both parties, Fred and Rose, must have a key.


There are two types of Cryptography, Public Key Cryptography and Private Key Cryptography. The method in which the keys are distributed is the differentiator. The simplest and the most ancient form of key sharing uses private keys. Private Key Cryptography uses identical keys for encryption and decryption. Rose takes a message, puts it in a safe box, locks it with a key, and ships the box to Fred. Fred uses the same key to unlock the message.

The issue is that two keys are needed in separate locations. Frequent and reliable key distribution is needed with this type of cryptography. If the key were compromised, it would be difficult to replace. Public Key Cryptography was ushered into existence by the computer age. With this method, different keys are used for encryption and decryption. Encryption is done with a publicly announced key, which encrypts with bits. Today, 128 bit encryption is being used. Decryption is completed using a private key, which is not shared. The idea is that individuals looking to receive encrypted messages send out encryption keys publicly, while keeping private keys for themselves. The secrecy of the keys relies on computational complexity of certain hard mathematical problems. However, mathematics is constantly advancing. Someone could develop an algorithm that could break or solve the current mathematical problem. In addition, eavesdropping on the key is currently not detectable. That means that users do not know if someone is tampering with their keys.


The Web is a big place, full of new and interesting things to discover. The problem is finding the good stuff and keeping track of it all. This is where Delicious can help.

Delicious is a Social Bookmarking service, which means one can save all of his or her bookmarks online, share them with other people, and see what other people are bookmarking. . In addition, the search and tagging tools helps the user keep track of the entire bookmark collection and find tasty new bookmarks from others.

How bookmarks are organized

Folders were the old way to organize your bookmarks. They were great if you only had a few bookmarks and a few folders, but as your collection grew, it became harder and harder to decide what goes where. Delicious has a new and better way: tags.

Tags are simply words you use to describe a bookmark. Unlike folders, you make up tags when you need them and you can use as many as you like. This means, for example, that all of the bookmarks you tag with funny and video will automatically be placed in the "funny" collection and the "video" collection. Since tags work the same way for everyone, you can also check out other people's "funny" or "video" bookmarks. You can even combine tags to see bookmarks with funny and video.

Saturday, August 9, 2008

About OpenDNS - Featured Product

OpenDNS is the world's largest and fastest-growing DNS service.
It helps make your network safer, faster, smarter and more reliable.
It's free.

  • Content Filtering
    Not everything on the Internet is welcome on your network. Decide what to block on your networks with easy-to-use, powerful content filtering options. Choose from dozens of categories, ranging from social networking to gambling to webmail and more.
  • Phishing Protection
    OpenDNS also operates, the world's most trusted source of phishing data. Data is integrated into an intelligence feed on OpenDNS servers to keep everyone on your network safe from phony sites trying to steal personal information.
  • Domain Blocking
    You want to secure your network and have control over what resolves. OpenDNS gives you that control by providing the tools to block any website or DNS zone on the Internet, all through an easy-to-use interface.
  • Adult Site Blocking
    Safeguard your kids, protect your students, or limit your corporate liability by blocking adult websites. The adult site blocking solution can be deployed in minutes and provides granular levels of blocking. Hundreds of school districts are already using OpenDNS to achieve CIPA compliance.
  • Web Proxy Blocking
    Prevent people on your network from bypassing the access restrictions you put in place. Blocking Web proxies helps ensure your network remains secure.
  • Domain Whitelisting
    OpenDNS provides a deep list of Web content filtering categories to block, but sometimes there is a domain you want to make sure is never blocked, even if it's listed in a feed. Have the final say with our Domain Whitelisting feature.
  • Large Cache
    OpenDNS operates the largest and most intelligent DNS caches in the world. As a result, when you ask a question, we almost always have the answer. This results in an overall faster way to navigate the Internet.
  • Ultra-Reliable Network
    The architecture was designed to withstand even the worst of network failures and still serve your DNS reliably. Feel free to dive in and learn more about our architecture and how we run a zero-downtime network.

What is SourceForge.Net?

What is is the world's largest Open Source software development web site, hosting more than 180,000 projects and more than 1.9 million registered users with a centralized resource for managing projects, issues, communications, and code. has the largest repository of Open Source code and applications available on the Internet, and hosts more Open Source development products than any other site or network worldwide. provides a wide variety of services to projects it hosts, and to the Open Source community.

Open Source software provides free hosting to Open Source software development projects. The essence of the Open Source development model is the rapid creation of solutions within an open, collaborative environment. Collaboration within the Open Source community (developers and end users) promotes a higher standard of quality, and helps to ensure the long-term viability of both data and applications.
Open Source software is also gaining increased momentum in the enterprise. Commonly cited reasons for the growing interest, acceptance, and even preference for Open Source products include low cost, high value, quality and reliability, security, increased freedom and flexibility (both hardware and software,) and adherence to open standards.

Microsoft Academic Licensing

If you are an
• Educational Institutions
• Administrative Offices & Boards of Education
• Teachers, Faculty and Staff
• Students
• Public Libraries
• Public Museums
• Home-School Programs
looking to buy Microsoft Products, do avail of the "Microsoft Volume Licensing for educational institutions" , popularly called as Academic Licensing. Microsoft offers its products at discounted rates.

For more details, visit

What is OpenSource?

Open source is a development method for software that harnesses the power of distributed peer review and transparency of process. The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in.

The Open Source Initiative (OSI) is a non-profit corporation formed to educate about and advocate for the benefits of open source and to build bridges among different constituencies in the open-source community.


Open source doesn't just mean access to the source code. The distribution terms of open-source software must comply with the following criteria:

1. Free Redistribution
The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.

2. Source Code

The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost preferably, downloading via the Internet without charge. The source code must be the preferred form in which a programmer would modify the program. Deliberately obfuscated source code is not allowed. Intermediate forms such as the output of a preprocessor or translator are not allowed.

3. Derived Works

The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.

4. Integrity of The Author's Source Code
The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.

5. No Discrimination Against Persons or Groups
The license must not discriminate against any person or group of persons.

6. No Discrimination Against Fields of Endeavor
The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

7. Distribution of License
The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

8. License Must Not Be Specific to a Product
The rights attached to the program must not depend on the program's being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program's license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.

9. License Must Not Restrict Other Software
The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.

10. License Must Be Technology-Neutral
No provision of the license may be predicated on any individual technology or style of interface. - Free Office automation tool

With Lotus Symphony, IBM offers its own take on for Linux and Windows users. While users have to pay hefty license fees to Microsoft for its Office tools, this offering from IBM is totally free.

IBM has released a suite of free software tools for creating and sharing documents, spreadsheets and presentations.

The company, based in Armonk, N.Y., announced Sept. 18 2007 the tool set, known as Lotus Symphony, at the IBM Collaboration Summit at the Hayden Planetarium in New York City.

IBM officials said there are three core applications that make up the Lotus Symphony tools: Lotus Symphony Documents; Lotus Symphony Spreadsheets; and Lotus Symphony Presentations.

The tools support Windows and Linux desktops and are designed to handle the majority of office productivity tasks that workers typically perform.Lotus Symphony supports multiple file formats including Microsoft Office and ODF (Open Document Format), and can also output content in PDF format.

J2EE- An introduction

J2EE is Java, optimized for enterprise computing. Officially J2EE stands for Java 2 Platform, Enterprise Edition. Unlike the traditional Java, which is often used to build client enhancements, J2EE is designed to build server applications. Officially, the J2EE platform is "a set of coordinated specifications and practices that together enable solutions for developing, deploying, and managing" such server applications.

As an enterprise platform, the J2EE environment extends basic Java with tools that "provide a complete, stable, secure, and fast Java platform to the enterprise level."

One goal often stated by developers is that by using J2EE, they're reducing the cost and complexity of creating large-scale solutions. Because Java is a strongly typed language (meaning that it requires data types to be used as specified), use of the language is often inherently more secure in Web applications than Web applications built with less strong typing (such as C or even PHP and Perl).

According to Sun, the gurus of Java, there are four main benefits to working with J2EE-

Complete Web services support
J2EE supports SOAP (Simple Object Access Protocol), a form of RPC between applications. The Java version of this is called JAX-RPC, which is the Java API for XML-based RPC. The idea with SOAP, JAX-RPC, and XML-RPC (one of the fore-runners of SOAP and still very actively in use today -- including here at ZATZ) is that applications on the Web and on servers can communicate easily across the network and between applications, regardless of what the originating and receiving environments may be. This means, for example, that a J2EE application might talk to a Domino application, which could talk to a Frontier application, which could talk to a PHP application, all seamlessly.
Faster solutions delivery time to market
Sun claims faster time to market, but my experience over the last 20+ years of dealing with development environments that every new environment claims the same thing. That said, J2EE does have some cool structural tools to make development more effective.One area is the use of what the Java world calls "containers." According to Sun, "J2EE containers provide for the separation of business logic from resource and lifecycle management, which means that developers can focus on writing business logic -- their value add -- rather than writing enterprise infrastructure."
One example often cited is the Enterprise JavaBeans container, which can handle (when implemented correctly) distributed communication, threading, scaling, transaction management, and so on.
Freedom of choice
Because J2EE is a published standard, many vendors (such as IBM) are implementing to that standard. That said, your freedom begins and ends with your platform choice. Like all development environments, once you've chosen one and built into it sufficiently, you're in, dude. You're in.
The key to getting certified by Sun as compatible is that vendors can build whatever implementation (the internal guts) they want, but the standards and the APIs must remain absolute. This, of course, is where Microsoft is managing to regularly tick off the Java community, and where many other vendors find themselves trying to keep standard, while supporting diverging implementations.
To be sure, true, standard J2EE is a locked-in spec. So if you're building to J2EE, theoretically, your code can be moved from any one J2EE implementation to any other. This is theory, however, because once you start knitting in other custom implementations, systems, add-ons, hacks, and what-not, you're staying pretty much on platform.
Simplified connectivity
SOAP, JAX-RPC, and XML-RPC notwithstanding, J2EE has a pile of services for talking to other systems, such as Web clients, cell phones, PDAs, and other devices. I'm still not sure there's a future for the Java ring, and Java apps running on my Tungsten T3 are spectacularly crappy, but there is something to be said for solid, spec'd out connectivity to other systems.
Here's what Sun says:
J2EE offers Java Message Service for integrating diverse applications in a loosely coupled, asynchronous way. The J2EE platform also offers CORBA support for tightly linking systems through remote method calls. In addition, the J2EE platform has J2EE Connectors for linking to enterprise information systems such as ERP systems, packaged financial applications, and CRM applications.

What is BIOMETRICS - Tech Focus

Biometrics refers to the automatic identification of human beings based on their physical and/or behavioral characteristics (Bio = life + Metrics = measurement).These characteristics present some specific properties such as, uniqueness and persistency, making them suitable for this kind of task.

Examples of physical characteristics include among others: fingerprints, face, iris, retina, and hand geometry. On the other hand, examples of behavioral characteristics include: signature, voice, keystroke dynamics, etc.

Traditionally, authentication methods are divided into three main groups:
1. Tokens (What You Have)
The user possesses a physical and portable device which contains the users identity. Examples of such devices include bankcards, driver's licenses, passports, etc.

2. Passwords (What You Know)
These methods are based on a user's knowledge characterized by its secrecy. Examples include passwords, PINs, etc.

3. Biometrics (What You Are)
The user submits to the system his physical and/or behavioral characteristics. As a result, the individual is either accepted as a valid user or is rejected.Furthermore, an automated biometric system may opperate in two different modes: recognition and identification. In the former mode, the system authenticates a claimed identity by comparing an input biometric characteristic with its theoretical corresponding template. In the latter, the system does not receive a claimed identity and searches therefore an entire database for a match.

Advantages & Disadvantages

Since biometric characteristics cannot be guessed or stolen, biometric systems offer a higher degree of security than typical authentication methods (passwords or tokens).Efficient passwords are traditionally characterized by a long and alternated sequence of numbers and symbols. Therefore, they are sometimes difficult to remember.

Tokens, on their hand, may be stolen or loosed. Regardless of their authentication type, passwords or tokens can be shared. In this sense, there is no certainty of who is the actual user. Since biometric characteristics are not shared, this shortcoming is almost solved.

One important benefit of using biometric-based authentication systems is that they are able to keep track of the user's activities, e.g. it is possible to know who has been doing what at a given time (when). These benefits are not available in traditional authentication systems, since users may share their identification cues, being not possible, for example, to know who is the actual user.

Biometrics systems are convenient in environments where access privileges are necessary. Traditionally, in many authentication environments, a user may have different tokens or passwords. In these cases, biometrics can be used to simplify the authentication process since the multiple passwords or tokens can be replaced by a single biometric characteristics.Furthermore, another benefit is that biometric systems are easily scalable. Depending on the security level desired, more sophisticated biometric characteristics could be used. At a bottom level, one could use for example, characteristics that are not very discriminative. If more discriminable properties are desired in the system, biometric characteristics with higher distinctive properties may be used.

Hybrid Authentication
By considering that each biometric characteristic presents its own limitations, there have been some efforts to deal with these shortcomings. Multimodal biometric systems appear in this sense as an attractive solution. In this kind of systems, some biometric characteristics are used together to either verify or identify an individual. Therefore, multimodal biometric systems are expected to be more reliable than biometric systems based on just one single biometric characteristic.

JAVA SDK for BIOMETRICS - Developer Tips

Griaule Biometrics ( is providing downloadable SDKs to perform the following biometric tasks:
  1. Fingerprint SDK - Enabling a wide range of applications to use fingerprint recognition.
  2. AFIS Sdk - to build Automatic Fingerprint Identification System
  3. WSQ SDK - Fingerprint image compression, decompression and exchange capabilities integrated into your software.
  4. ICAO Face SDK- Your photos fitting international standards.


Microsoft Excel (Microsoft Office Excel) is a proprietary spreadsheet application written and distributed by Microsoft for Microsoft Windows and Mac OS X.

It features calculation, graphing tools, pivot tables and, except for Excel 2008 for Mac OS X, a macro programming language called VBA (Visual Basic for Applications).

It is overwhelmingly the dominant spreadsheet application available for these platforms and has been so since version 5 in 1993, and is bundled as part of Microsoft Office. Excel is one of the most popular microcomputer applications to date.

VERSION: The latest Version Excel 2007 (version 12) is included in Office 2007 .

Excel Spreadsheets have a file extension of .xls

Tuesday, August 5, 2008

SCOUR - Social Search Engine - Featured Product/ Application

SCOUR - The Social Search Engine -

This innovative search engine helps you:
  • Search Google, Yahoo and MSN from one singe page

While Google, Yahoo, and MSN are incredible search engines, Scour brings all of their greatness together! With Scour, all three engines are searched all at once for you, with the results returned quickly on one page. Every Scour member is able to vote each listing up or down based on its relevance to their keyword as well as comment on their experiences with the site. By blending user feedback with proven search algorithms the Scour community helps shapes the Scour brand of results.

  • Vote and comment on any search result!

Ever spend time searching only to find that the results you need are buried under irrelevant ones? With the Scour voting and comment system, our goal is to introduce the human element of searching allowing you and all other Scour members to speak up and help shape the results with every search. See a result that doesn't match your search? Vote it down? See a site that is exactly what you wanted? Vote it up and tell us all why you liked it. After enough votes, the listings will move down in rank, placing the relevant ones where they should be, at the top! When using Scour you can read user reviews about websites based on your keyword taking a lot of the guesswork out of searching and getting to you destination quicker.

  • Gives you rewards for your searches, comments and votes.

The top search engines make billions of dollars a year in advertising revenue, wouldn't it be cool if the users got a piece of that too? Enter Scour Points! Every member is awarded one point for every search, two for a vote and three for a comment with a maximum of 4 points a search. Once you aggregate at least 6,500 points you can cash them out for a $25 Visa gift card... it's more than you currently make from searching, right? On top of that, we offer referral points for the friends you introduce to Scour where you can earn 25% of the points they make. So if you invited 25 friends that used scour regularly in addition to yourself, that's an easy $125 in your pocket for a year of what you already do! Check out how much you could earn with the Scour Points Calculator. This isn't a pyramid scheme and we're not trying to get you rich quick, we just think it's a good idea to share our success with those who help make it possible.
Play a part in the Scour community and get rewarded for what you already do!

AJAX - Introduction

Prerequisites: Javascript, HTML and basic knowledge of how HTTP Works

AJAX stands for Asynchronous JavaScript And XML.

AJAX is a type of programming made popular in 2005 by Google (with Google Suggest).

AJAX is not a new programming language, but a new way to use existing standards.

With AJAX you can create better, faster, and more user-friendly web applications.

AJAX is based on JavaScript and HTTP requests.

In detail:
AJAX is not a new programming language, but a technique for creating better, faster, and more interactive web applications.
With AJAX, your JavaScript can communicate directly with the server, using the JavaScript XMLHttpRequest object. With this object, your JavaScript can trade data with a web server, without reloading the page.
AJAX uses asynchronous data transfer (HTTP requests) between the browser and the web server, allowing web pages to request small bits of information from the server instead of whole pages.
The AJAX technique makes Internet applications smaller, faster and more user-friendly.
AJAX is a browser technology independent of web server software.

AJAX is Based on Web Standards
AJAX is based on the following web standards:

> JavaScript
The web standards used in AJAX are well defined, and supported by all major browsers. AJAX applications are browser and platform independent.

AJAX is About Better Internet Applications

Web applications have many benefits over desktop applications; they can reach a larger audience, they are easier to install and support, and easier to develop.
However, Internet applications are not always as "rich" and user-friendly as traditional desktop applications.
With AJAX, Internet applications can be made richer and more user-friendly.

Monday, August 4, 2008

XML - Introduction

Prerequisites: You must know HTML (and preferably Javascript) before you can learn XML.

What is XML?
XML stands for EXtensible Markup Language
XML is a markup language much like HTML
XML was designed to carry data, not to display data
XML tags are not predefined. You must define your own tags
XML is designed to be self-descriptive
XML is a W3C Recommendation

The Difference Between XML and HTML
XML is not a replacement for HTML.XML and HTML were designed with different goals:
XML was designed to transport and store data, with focus on what data is.HTML was designed to display data, with focus on how data looks.
HTML is about displaying information, while XML is about carrying information.

XML Does not DO Anything
Maybe it is a little hard to understand, but XML does not DO anything. XML was created to structure, store, and transport information.

XML is used to wrap information in tags. Someone must write a piece of software to send, receive or display it.

XML is Just Plain Text
XML is nothing special. It is just plain text. Software that can handle plain text can also handle XML.
However, XML-aware applications can handle the XML tags specially. The functional meaning of the tags depends on the nature of the application.

With XML You Invent Your Own Tags
The tags in the example above (like and ) are not defined in any XML standard. These tags are "invented" by the author of the XML document.
That is because the XML language has no predefined tags.
The tags used in HTML (and the structure of HTML) are predefined. HTML documents can only use tags defined in the HTML standard (
XML allows the author to define his own tags and his own document structure.

Service Oriented Architecture(SOA) - Definition

Service-oriented architecture (SOA) is a software architecture where functionality is grouped around business processes and packaged as interoperable services. SOA also describes IT infrastructure which allows different applications to exchange data with one another as they participate in business processes.
The aim is a loose coupling of services with operating systems, programming languages and other technologies which underlie applications.
SOA separates functions into distinct units, or services, which are made accessible over a network in order that they can be combined and reused in the production of business applications.
These services communicate with each other by passing data from one service to another, or by coordinating an activity between two or more services. SOA concepts are often seen as built upon, and evolving from older concepts of distributed computing and modular programming.

Featured IT Jargon - PLOG

Plog - A "plog" is a password-protected, Web-based project log that lets team members share progress and updates on group projects.
Sometimes, it is also used to refer to personalized log.

FEATURED IT JARGON - MDM: Master Data Management

MDM: master data management - The notion of understanding where your data is stored and managing the potential conflicts that arise when you get copies of that data out of line with one another is what MDM is all about.

We have seen some staggering benefits from it and we have seen some things fail. An increasing number of companies have taken notice of MDM recently because of its potential for delivering the benefits of greater data consistency, which can include more accurate reporting and data analysis, a reduction in errors and an enhanced bottom line.

MDM combines middleware with data governance in an effort to solve the problem of getting source data and all of the copies of that data which tend to multiply throughout an organization to sync up.

About this blog

The aim of this blog is to serve as a repository for all my tech related readings as well as writings. I hope this will be useful for all techies. While the primary area will be information technology, other tech related happenings and developments will also be featured.