Wednesday, March 14, 2007
With mashups, webapps becoming legacy
If its for legacy systems, then why its being applied to web sites these days. With the fast of growth in application development scenario, the web applications become legacy!
Web scrapping, could be termed as process of extracting a piece of information of your interest from a webpage online. Recently there have been significant work is going on the things that would require taking the webapps to the next level.
Web scrapping is lot easier than screen scrapping of legacy systems. The output of web apps is being a HTML code, which could be represented as an DOM tree, and could be navigated easily by machines/bots.
Yes its easier to navigate, but is it easier to locate an item of interest? Not actually. HTML code is mostly about styling, to say how the date may appear to the user. Usually a page will contain less data, and more styling demarcations added for proper presentations; like: <b> - for bold data, <u> - for underline. Other than these there is also lot of styling code is mixed with the potent data that webpage is showing up. So it's tougher for a machine to separate data, from style information.
GreaseMonkey might be the first tool released, which help people to customize the webpage on the client side. Like the next time you wont like the blue background on the MSN home page, you can change it before the website loads on your browser. It's simple in functionality, but you need to know DOM Structure (tree representation of the web page). Later people started posting their script on the web (http://userscripts.org/).
Chickenfoot is another recent tool on the rise. Writing script here doesn't need knowledge of DOM representation. Read my earlier post on this. I too had my hands on trying out these two, sometime back.
These are just the start of the road that reaches to our dream (Semantic Web). The Semantic Web is all about adding meaning to data, which is mingled with style information in various web sites. If a consultant puts his appointment list online. Then web crawler scanning it should make sense of it rather just seeing it as numbers and text; that it's a calendar data and it belongs to him.
A webpage is seen as propriety information of the owner of the website. Extracting a part of it, and using it elsewhere is a copyright or legal issue. But lately this kind of outlook is changing, atleast they are willing to share even if not giving it free. Some websites like Google Maps, Flickr, del.icio.us, Amazon are providing an alternative API that fetches the information, which you usually get only through browsing their web pages.
These alternate API are the way for bots, to extract the data they wanted out of the website. This is one step towards semantic web, where the data is presented in web as directly machine readable form. Here alternate via for reading the data is provided as API service. These API calls are generally SOAP calls, as part of web service. Even debate about using REST architecture/SOAP RPC architecture goes on. These API kind of interaction within an enterprise system, is called SOA (Service Oriented Architecture) when rightly modeled and built.
As more number of websites expose there data a webservice via API, the re-mix style of applications came online. They were called as mashups. Mashups is/are applications that are formed from mix-up of data from various other applications. They generally don't have data of their own; they rather mix up and form a complete view from others.
With API's it easier to extract data, than previously used method web scrapping, which heavily dependent on the current structure of the site. It breaks even for minor changes in layout or style change.
The mashups are extremely grown now. You could see almost new mashups forming every day. See this page, the programmable web. According to this source, right now there are 1668 mashup applications, 395 services are available as API, and almost 3 Mashups are constructed everyday.
Most of these API's are free, but some needs paid license. Amazon requires a special license if you need to use their book search API. But still if you could invite reasonable revenue to amazon via orders placed through your site, then you could make some money too.
On the marketing front, exposing your site data as API services definitely increases your chance of higher revenue than selling all of it by yourself. Say a local chinese portal gets your global data and show translated versions to their users. This increases your global reach. A popular site for classical music discussions, selling related artists' tracks right there have higher chance of getting sold than that of a show-case site of the record company.
A site that shows books listed by user personal interest, is rather lucrative than huge common-to-all showcase site. This kind of site is now easier to form, with two API services. One from the site maintaining user's personal interests, maybe manually collected preferences or even collected automatically by the users web browsing tastes. And other API calls to amazon books store.
If you planning to launch a GPS website, that pin points you position on this globe. Then you don't need to build the map of the world all by yourself, of course very tedious work. Alternate would be borrowing the map service from Google, and then overlapping your positions on the map.
So mashups are fun, faster, and fruitful too. :)
Monday, March 12, 2007
Blink!
Blink is about "power of thinking without thinking"
It's a book about rapid cognition, about the kind of thinking that happens in a blink of an eye. When you meet someone for the first time, or walk into a house you are thinking of buying, or read the first few sentences of a book, your mind takes about two seconds to jump to a series of conclusions. Well, "Blink" is a book about those two seconds, because I think those instant conclusions that we reach are really powerful and really important and, occasionally, really good.
How our brain without much conscious effort, rapidly analyzes the information, and favors some decision. This is the reason, we judge people by their look. Sometimes what we judge is right, and at sometimes is wrong. We are mostly unable to explain why we had a gut feeling like that.
Believe it or not, it's because I decided, a few years ago, to grow my hair long. If you look at the author photo on my last book, "The Tipping Point," you'll see that it used to be cut very short and conservatively. But, on a whim, I let it grow wild, as it had been when I was teenager. Immediately, in very small but significant ways, my life changed. I started getting speeding tickets all the time--and I had never gotten any before. I started getting pulled out of airport security lines for special attention.
- Author
After reading this book, you may have clear view of when to use this blink positively.
Tipping Point - is a previous book by the author. That's too a wonderful book about social interactions, and how a news becomes hit or miss. Who makes it hit? How it transcends. Tipping Point is basically the point at which if the influences are with right person, it will become hit, if it were under the other it goes to the other end.
Both the books are full of real and much happened social situations, and analysis of reasons behind them. That makes reading this book interesting, like: What made crime-rate increase or decrease? How graffiti on the trains influences mugging? The theory of broken window. How the not most obvious things play a greater role in the result?
Finally, before finishing this note, I just remember how I started reading the books of this author. It's started from the forward of this article - The Art of Failure (Why some people choke and others panic), from a friend.
Thursday, February 22, 2007
Net Neutrality
Today the Internet is an information highway where anybody – no matter how large or small, how traditional or unconventional – has equal access. But the phone and cable monopolies, who control almost all Internet access, want the power to choose who gets access to high-speed lanes and whose content gets seen first and fastest. They want to build a two-tiered system and block the on-ramps for those who can't pay.
Eric Schmidt (Google)
Many industry leaders including Tim Berners Lee, had spoken on this.
So far only some of the states USA have approved this bill. (Maryland, California, etc.,)
Monday, December 18, 2006
transliteration - writing in tamil
http://www.quillpad.com/tamil/
this is a site from tachyon technologies is a excellant tool, for transliteration to many indian languages (tamil, telugu, malayalam, hindi, marathi, kannada).
it easier than never before..
It just took me 10 seconds to type this, and I got it right on the first time!!!
anbum aranum udaithayin ilvalkai
panbum payanum athu
அன்பும் அறனும் உடைத்தாயின் இல்வாழ்க்கை
பண்பும் பயனும் அது
Saturday, November 11, 2006
UI Designing Links
1) joel book on ui design - http://www.joelonsoftware.com/uibook/fog0000000249.html
2) A Pattern Language for Human-Computer Interface Design http://www.mit.edu/~jtidwell/common_ground_onefile.html
3) http://designinginterfaces.com/
Will add more as i find some more...
4) http://www.useit.com/alertbox/
Sunday, October 22, 2006
making readable urls
A site best feature would be recall ability. i.e. u navigate, and go thru all the site and u locate an resource or link, then again u losing it is pain.
Most of the site url which shows a catalog for example, will have an url like
catalog.jsp?pageno=5
What you see in page no 5 won't be there when you visit again. This kind of url is not sharable.
A longer url is also tough to share with others, or remember then even.
REST (Representational State Transfer) is a kind of architecture, which has stress on simple url schemes, which takes actions as part of url than part of request parameter. REST has various other aspects to it, so its simply wrong to just mentioning abt its url scheme here.
http://countme.wordpress.com/2006/10/04/affordability-pricing/
This above url speaks for itself, and most could understand when it was written, and how its organised.
Tuesday, October 03, 2006
Affordability pricing
Sometimes the cost of softwares, in Indian rupees is even higher that the converted rate from USD. :(
With increased internet presence, and high cost of original books, and very late publishing of Indian reprint (even takes 3-4 years or never after that) most of us are forced to get a pirated PDF version.
There should be some measures to make books available at cheaper rates only would avoid the loss by the pirated copies.
Availability and affordability is the key to success of any product.
Often working out the spending ability of the targeted audience and pricing them will lead to higher number of purchases, more profit and product visibility.
Google TechTalks, where are they?
Till then, watching them is my favorite past time for me in office.
But since August 25, 2006 there were no updates in the tech talk section in Google videos.
I had waited over month now; still there aren’t any signs of new videos... :( It’s quite a loss.
Hoping to see them back soon...
----------------------------------------
Extensive list of google tech videos...
http://video.google.com/videosearch?q=Google+engEDU
http://video.google.com/googleplex.html
Friday, September 15, 2006
email address validation
Gmail has an interesting quirk where you can add a plus sign (+) after your Gmail address, and it’ll still get to your inbox. It’s called plus-addressing, and it essentially gives you an unlimited number of e-mail addresses to play with.
My immediate thought for me is: Does most sites allow ‘+’ as a valid character to appear in email address? Most sites will reject this email address. If this is a standard then this breaks our application, not able to accept valid email address.
Other mail server like “Fastmail” also claims to have this feature.
Somebody opposed that this not a feature at all, its part of standard RFC 2822 for email. This is a way to send comments in-line with the email address.
So what would be regular expression to validate email address as per RFC 2822 standards? Not sure, but though according to this page, a regular expression for validation according a previous RFC (822) for email addressing is
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
The grammar described in RFC 822 is suprisingly complex. Implementing validation with regular expressions somewhat pushes the limits of what it is sensible to do with regular expressions, although Perl copes well:
(?:(?:rn)?[ t])*(?:(?:(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t] )+|Z|(?=[["()
<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*
(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|
(?:(?:rn)?[t]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:
(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?
:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))
|[([^[]r]|.)*](?:(?:rn)?[ t])*))*|(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z
|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)*<(?:(?:rn)
?[ t])*(?:@(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".
[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]
+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*
(?:,@(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>
@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[
] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?
[ t])*))*)*:(?:(?:rn)?[ t])*)?(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[
t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])
*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["(
)<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[
t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([
^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?
:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*>(?:(?:r
n)?[ t])*)|(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]
]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)*:(?:(?:rn)?[ t])*(?:(?:(?:
[^()<>@,;:\".[]00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|
(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 0
0-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t
]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)
?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn
)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[
]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*|(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn
)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?
[ t])*)*<(?:(?:rn)?[ t])*(?:@(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=
[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<
>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](
?:(?:rn)?[ t])*))*(?:,@(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)
?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)
?[ t])*(?:[^()<>@,;:\".[]00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))
|[([^[]r]|.)*](?:(?:rn)?[ t])*))*)*:(?:(?:rn)?[ t])*)?(?:[^()<>@,;:\".[]00-31
]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[
t]))*"(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?
:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(
?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])
+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])
*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]
r]|.)*](?:(?:rn)?[ t])*))*>(?:(?:rn)?[ t])*)(?:,s*(?:(?:[^()<>@,;:\".[] 00-31]+
(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:
rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(
?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn
)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|
[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:
(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*|(?:[^(
)<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^\"r]|.|(
?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)*<(?:(?:rn)?[ t])*(?:@(?:[^()<>@,;:\".[] 00-
31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])
*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["(
)<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*(?:,@(?:(?:rn)?[ t])*(?:[^()<
>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*]
?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?
[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*)*:(?:(?:rn)
?[ t])*)?(?:[^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]
]))|"(?:[^\"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[
^()<>@,;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|"(?:[^
"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()<>@,
;:\".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.
)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:\".[] 00-31]+(?:(
?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:\".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*
))*>(?:(?:rn)?[ t])*))*)?;s*)
This regular expression will only validate addresses that have had any comments stripped and replaced with whitespace (this is done by the module).
There could be ways of breaking this single expression into smaller modules, but still this is the one :-o
Wednesday, September 06, 2006
Friday, August 18, 2006
unit testing xslts
XSLTUnit
http://xsltunit.org
Outdated
Tough to setup the testing environment
Tennison’s testing framework
http://tennison-tests.sourceforge.net/
http://www.jenitennison.com/xslt/utilities/unit-testing/
Test cases could be written in xml itself
Easy to write test cases
Supports xpath based expressions testing of nodes and values
Tests are more readable than XSLT unit
Don’t support global variable and params setting properly
UTF-X
(http://utf-x.sourceforge.net/)
Test cases could be written in xml itself
Supports template generation for writing test cases
Support for ant tasks to run test while executing builds
Needs java 1.5
Supports Junit
Don’t support advanced xslt testing needs
Juxy
(http://juxy.tigris.org/)
Java Based
Needs to have knowledge of java programming
Could be integrated with JUnit
Support param set-up for xslt and global variable setup and other options for xslt testing
Drawback: need knowledge of java to write test cases.
Recommendations:
If you are okie to write xslt test cases in java, then Juxy will provide us with much flexible framework.
Or else if you need to stick with XML based test case building (which can be written just with knowledge of xml/xslt alone), then we could use the Tennison Testing framework.
Wednesday, August 09, 2006
Customizing the web - chickenfoot
Though we have concept of services, and portal yet the flexibility is restricted by service provider. The end user doesn’t have real control to customize the site as per his needs both in look and content.
Now-a-days the web is just display of HTML tags interpreted by browsers. Nobody can sense out of data with the markup tags in the HTML. The mark-up are for visual clues, no markup for the meaning of the data. RDF is a proposed technology to describe your web document and resources much better. If the markup gives you the meaning and context of the data out there in the web, then the search can be most accurate as possible. The search query more specific like this, even will lead you the exact result right away.
“Show the theaters running ‘MI-3’ where tickets are available for tonight”
But there is long way to achieve this, as it takes time to implement this for most sites.
Monday, July 31, 2006
Pattern Infected :-(
--------------------------------------------------------------------------------
interface MessageStrategy {
public void sendMessage();
}
--------------------------------------------------------------------------------
abstract class AbstractStrategyFactory {
public abstract MessageStrategy createStrategy(MessageBody mb);
}
class MessageBody {
Object payload;
public Object getPayload() { return payload; }
public void configure(Object obj) { payload = obj; }
public void send(MessageStrategy ms) { ms.sendMessage(); }
}
--------------------------------------------------------------------------------
class DefaultFactory extends AbstractStrategyFactory {
private DefaultFactory() {
;
}
static DefaultFactory instance;
public static AbstractStrategyFactory getInstance() {
if (instance == null)
instance = new DefaultFactory();
return instance;
}
public MessageStrategy createStrategy(final MessageBody mb) {
return new MessageStrategy() {
MessageBody body = mb;
public void sendMessage() {
Object obj = body.getPayload();
System.out.println((String) obj);
}
};
}
}
--------------------------------------------------------------------------------
class DefaultFactory extends AbstractStrategyFactory {
private DefaultFactory() {
;
}
static DefaultFactory instance;
public static AbstractStrategyFactory getInstance() {
if (instance == null)
instance = new DefaultFactory();
return instance;
}
public MessageStrategy createStrategy(final MessageBody mb) {
return new MessageStrategy() {
MessageBody body = mb;
public void sendMessage() {
Object obj = body.getPayload();
System.out.println((String) obj);
}
};
}
}
--------------------------------------------------------------------------------
Could you figure out what is the function of the above program? It's just a program to print a "hello world" to the console. Looking weird? This is what a pattern infected person can do, using them wrongly
Read the full thread of from the slashdot.org forum, over here.
Tuesday, July 04, 2006
Live CDs - Cool !!
From the Wikipedia http://en.wikipedia.org/wiki/Live_CD
LiveDistro is a generic term for an operating system distribution that is executed upon boot, without installation on a hard drive.
The term "live" derives from the fact that it does not reside on a hard drive. Rather, it is "brought to life" upon boot without having to being physically installed onto a hard drive.
It is often said LiveDistros are a good way to demo or preview an operating system without having to install it to a hard drive.
Suppose your Windows crashed. And there is lot of information left in you c: drive, so you want to retrieve them before you re-install Windows. How to do it? All you can do earlier is to remove your harddisk, and connect to your friend's machine, then copy the data.
But after Live CDs, there is a easy way to do it.
Monday, June 19, 2006
'Google techtalks' Videos
The presentations are really both interesting and diverse on topics. It includes presentation on languages (lisp, aspectj), on information management, on branding, or even on leveraging IT techniques for social welfare.
http://video.google.com/videosearch?q=Google+techtalks
Click on the above link or search 'Google techtalks' under google videos (http://video.google.com).
Or rather extensive list of videos from Google Production
http://video.google.com/googleplex.html
Thanks, Google! For making this presentations public.
Wednesday, June 14, 2006
How Google hires...
Any small technical startup, blows in terms of number of employees working, as it becomes successful as a market leader. How to keep the intelligent quotient of an company high, still recruiting in hundreds?
This blog explains the google's strategy to hire people, at the same time keeping the cumulative intelligent quotient of the people in the company as high as possible.
Monday, June 05, 2006
Improve ur presentation
http://lessig.org
Who is lessig? He is one who fights against copyright in creative works. He created this kind of style presentations.
Follow this blog http://presentationzen.blogs.com/presentationzen/ to learn yourself how u can impove your professional presentation, for effectiveness.
A lessig's presentation http://lessig.org/freeculture/free.html
Also must to watch this presentation: http://www.identity20.com/media/OSCON2005/
Monday, May 29, 2006
Wednesday, April 26, 2006
Over Engineering/Under Engineering
In most design discussions, anybody who knows some design patterns immediately peep up and relate the pattern they know to current problem. And suggest using them, even if your requirement is so simple. They say using design patterns will make your design extensible for future. Is this a healthy sign? Not really!
Maybe good when considering the developers in the team had learnt about the design patterns, which help them to make good design or even to implement a good design correctly. But putting the patterns up-front in the design phase often causes over engineering.
Avoid using patterns unless you really need them. KISS. Keeping things simple will help even a newbie to understand your code. If a person is not comfortable with your code, he will start modifying the code in isolation (i.e. modify only the parts he is comfortable to change, and add utility classes / separate functions to do his job, rather understanding the whole piece and adding the code at right place).
Throwing in design patterns early is a costly solution to a non-existent problem. By doing so you waste your resources to implement the pattern with complex code, than concentrating on you business requirement. As an XP practice, always remember don’t do more than what it requires. Don’t spend time in solving anticipated problems of future rather keep the code clean, so it can be implemented if required in future.
Are patterns to be avoided then? No. They have to be used with care and consideration. Similarly patterns examples shown in the books are just reference implementations, we should be comfortable to modify it as we need to keep the design simple at the same time keeping the grammar of the pattern unchanged (to avoid confusion in pattern vocabulary).
Some designers count the number of design patterns used to show the quality of their design! That’s the worst way to measure the quality of design. So beware, over-engineering is an equally dangerous as under-engineering.
Under-engineering is another problem with software development. This happens usually when the developer has no intent to organize his code, or to improve design. All he writes is code, which claims to work right, but still can’t be proven. Working with this code is a nightmare. Enhancement or even maintenance is almost impossible.
No special knowledge or attention is needed to write this kind of code. It happens automatically as your program evolves. Under-engineering is most commonly seen in practice. This type of code finally becomes a Big Ball of Mud as described by Brain Foote.
Starting with simple design, and re-factoring continuously to improve design & readability of the code helps to achieve a best possible design for a given requirement.
Refactoring to Patterns is a good book to start learning about this paradigm. This book is specially published under signature series signed by Kent Beck, and Martin Fowler
Home Page of the Book: http://www.industriallogic.com/xp/refactoring/
Martin Fowlers link: http://www.martinfowler.com/books.html#r2p
Tuesday, April 25, 2006
Common Programmer Types
http://www.hacknot.info/hacknot/action/showEntry?eid=81