tag:blogger.com,1999:blog-80495309930338833762024-03-13T16:27:50.139-07:00Infinite DimensionsImagination beyond 3rd dimension.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-8049530993033883376.post-79882902707252693052008-03-22T21:22:00.000-07:002008-12-10T16:39:52.695-08:00Javascript Snake Game<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://aka-fotos.de/snake/"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaO6GyozpJnl-FvleOs8ic3Fcubj1mFZVwxAgNzxBz7kj6WPSc1evKxgeYa5a0vBUXPOHSzEQeoQz7rljqs1sqj1Yh25Ii3b6KU7pJLTTLSl3IyqMuer5H0LMl9QAL-ElfJhdFdm0b1FM/s400/sake.jpg" alt="" id="BLOGGER_PHOTO_ID_5180788211079551474" border="0" /></a>Andreas Kalsch has created a simple version of <a target="_blank" href="http://aka-fotos.de/snake/">Snake</a> in JavaScript that eats your feeds instead of food.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com1tag:blogger.com,1999:blog-8049530993033883376.post-14273623701612613902008-03-22T20:56:00.000-07:002008-03-22T21:13:13.956-07:00Google AJAX Language APIGoogle has announced their <a href="http://googleajaxsearchapi.blogspot.com/2008/03/introducing-ajax-language-api-tools-for.html">AJAX Language API</a> on 20th March at thier <a href="http://googleajaxsearchapi.blogspot.com/">AJAX Search API</a> blog. This new API provides two functions for developers - language translation and detection. Language translation and detection support for <a href="http://code.google.com/apis/ajaxlanguage/documentation/#SupportedLanguages">13 languages</a> and <a href="http://code.google.com/apis/ajaxlanguage/documentation/#SupportedPairs">29 translation</a> pairs.<br /><br /><span style="font-weight: bold;">To simply translate word in one language to the other:</span><br /><pre class="code">google.language.translate('Gato', 'es', 'en', function(result) {<br />alert(result.translation);<br />});<br /></pre><br /><span style="font-weight: bold;">To simply detect the language:</span><br /><pre class="code">google.language.detect('Questa linea di rilevare che questa è la lingua.',<br />function(result) {<br />alert(result.language);<br />});<br /></pre><br />The language detector not only tell you the results, it also tells you how reliable the results are.<br />To get started with it,<br /><ul><li>Read the <a href="http://code.google.com/apis/ajaxlanguage/documentation/"> Developer Documentation</a></li></ul><ul><li>Look at <a href="http://code.google.com/apis/ajaxlanguage/documentation/#Examples">Examples</a></li></ul>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-21328439273282229672008-03-12T06:26:00.000-07:002008-12-10T16:39:53.876-08:00Hulu.com open to public but not for us :(<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP3to7Rsu-wmcb9FG2tsSHGGSQMAL0IWuO7o6w1BVI7b48oudIkKVPCedMGqcVZfu4KMNi08ixOpfPl7Le9IidVAZgHUOHMbJ9EV9SaYJTkTt_3wJBjqPkusIj900QdKu5PeMmnqM5bWw/s1600-h/Screenshot-2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP3to7Rsu-wmcb9FG2tsSHGGSQMAL0IWuO7o6w1BVI7b48oudIkKVPCedMGqcVZfu4KMNi08ixOpfPl7Le9IidVAZgHUOHMbJ9EV9SaYJTkTt_3wJBjqPkusIj900QdKu5PeMmnqM5bWw/s400/Screenshot-2.png" alt="" id="BLOGGER_PHOTO_ID_5176846883299275458" border="0" /></a>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-79653878369960882352008-03-08T07:15:00.000-08:002008-03-08T08:37:13.093-08:00Build Incomin Links and Inrease Your Link PopularityDo you ever think from where your web site or blog visitors come from. They have to come through the search engine results or links put in other sites. They can't directly come from nowhere, but if someone mistakenly type your address in his address bar that visitor come from nowhere. Most of the times visitor come to your site through search engines or sites that link to your site. So if you want to increase daily visitors to your sites you have to increase incoming links to your site and increase your rank in search engine somehow (SEO).<br /><br />In this post I will describe what are incoming links and how you can increase number of incoming links to your site, blog posts, and etc. Also in this article I'll use Backlinks as alternative to Incoming Links. Both these word refer same thing.<br /><span style="font-size:130%;"><br />Wikipedia Definition Backlink<br /></span><br /><blockquote>Backlinks (or back-links (UK)) are incoming links to a website or web page. The number of backlinks is an indication of the popularity or importance of that website or page. In basic link terminology, a backlink is any link received by a web node (web page, directory, website, or top level domain) from another web node (Björneborn and Ingwersen, 2004). Backlinks are also known as incoming links, inbound links, inlinks, and inward links.<br /></blockquote><br /><span style="font-size:130%;">Why Backlinks are that much important?<br /></span><br />In the past search engine optimizers and web site owners encouraged the idea of reciprocal linking as technique to improve search engine ranking. The idea was to exchange link between each other. This technique worked well for many years, but recent past search engines give more priority to one way incoming links than they give to "exchanged links" reciprocal links.<br /><br />Since one-way links appear to be more valuable when considering search bots, that makes one-way links more valuable to your search marketing effort.<br /><br />In the following section I'll introduce you some techniques that can use to increase one-way links as well as reciprocal links for most types of web sites.<br /><br /><span style="font-size:130%;">Tips to increase Incoming Links</span><br /><br /><span style="font-weight: bold;">Valuable Content & Articles</span><br />One of the most common and proven way to solicit one way links these days is to provide interesting and valuable articles or blog posts in your web sites. New bloggers and new sites born in every day, if one of them find your article is interesting and place link to it in his site, this will start a snowball effect that leads to dozens or even hundreds of blogs pointing a nice link at your site. Syndication of your content can be an excellent way to not only boost your name recognition online, but to gather one-way incoming links to your Web site.<br /><br /><span style="font-weight: bold;">Leave Comments on other blogs and sites</span><br />Most blogs and sites give visitors the opportunity to respond to their posts, with an option to enter your website's address in a field. Find the most popular blogs on topics that are relevant to your website and leave relevant remarks. The earlier you reply, the higher your comment will be in the comment list and the more exposure your website will get. Don't put your url in the comment text, unless it's really relevant to the post you're responding to. Too many url's in one comment will probably be deleted automatically by any spam software the blogger has installed.<br /><br /><span style="font-weight: bold;">Post in forums</span><br />Find the most popular forums in your website's topic by typing "my topic forum" in Google. Start posting good quality answers to questions people have. Put your url with a small tagline in your signature. Don't put your url in the post itself: people will think you're just there to promote your site. Genuine answers will get you high quality traffic. These visitors are people that are really interested in your topic, so treat them well.<br /><br /><span style="font-weight: bold;">Product Reviews</span><br />Studies show that online shoppers spend up to 12 weeks researching a product before they make a purchase. Some 90% of those purchases are ultimately made offline. So, even if you aren't the one that scores the product sale, you can offer those searchers the product reviews they are looking for and score yourself some quality links while you are at it. Setting up a content management system that allows individuals to enter their own product reviews means you hardly have to touch the content development. Once your reviews are in place, take the time to contact some sites that sell the product, but that don't feature reviews. See if they'd like to link to yours. Or, recognize that a quality review site is likely to pick up links without even asking for them. Sites like Epinions.com have made a business out of models like this.<br /><br /><b>RSS Feeds<br /></b>Building on the idea of offering unique articles on your site is syndicating them through an RSS feed. The use of RSS readers is skyrocketing and many individuals that would never take the time to visit dozens of Web sites in a day are more than happy to surf the feeds that their reader delivers. This can not only help your articles get picked up in a Blog mention, but can actually deliver links from sites on a regular basis. If your RSS feed features enough interesting content, another site may choose to run it, thus giving you a new outlet to reach readers and a good stash of incoming links to go with it.<br /><br /><span style="font-weight: bold;">Free Tools</span><br />If you've got a little programming blood in you, or you have access to someone who does, this can be a great way to generate links. Search marketing companies can have an especially tough time generating links, after all, who in the industry wants to give their competitor a boost? Many firms have gotten around this by offering one or two really great free tools. Think Marketleap and their link popularity analysis program, or Overture's keyword suggestion tool. Each of these tools is a simple, free offering that has likely generated thousands of free, unsolicited incoming links. If there's a tool that can be created to serve your market, create one. If competitors already have one, create a better one. Word will spread.<br /><br /><span style="font-weight: bold;">Online Directories</span><br />Online directories, especially topical and regional directories, are among the best sources of incoming links anywhere. Look beyond the ODP, Yahoo! and Zeal and find the niche directories that really fit with your Web site. Most of these directories will happily list your site for free, or for a small fee.<br /><br /><span style="font-weight: bold;">Submit your sites to social bookmarking sites</span><br />There are some very popular websites out there, that can give you tons of traffic. Submitting your url to <a href="http://www.digg.com/">digg.com</a> and <a href="http://del.icio.us/">del.icio.us</a> can give you a serious amount of traffic. The huge number of visitors from Digg can even cause your site to become slow or unreachable if your host can't handle that much traffic. This has a nickname know as 'The Digg effect'. <a href="http://www.stumbleupon.com/">Stumble upon</a> can give you a steady stream of visitors that will never stop, as long as people will like your site. If you don't have a <a href="http://flickr.com/">Flickr</a> and <a href="http://www.myspace.com/">MySpace</a> account, create one and get some exposure there. <br /><br /><span style="font-weight: bold;">Timely Information</span><br />Today's baseball scores are most valuable live, as the game progresses. Last night's scores are of interest to those who may have missed the game; last week or last month's scores will only appeal to the purists, the stats buffs and the most fanatical of fans. Similarly, breaking news is useful, yesterday's news is worth knowing, last week's news is old news. <a href="http://www.drudgereport.com/">The Drudge Report</a>, essentially a one-man operation, has risen to rival established news organization with thousands of employees on the basis of its hyper-timely reporting.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com2tag:blogger.com,1999:blog-8049530993033883376.post-79069710887040972792008-03-02T08:06:00.000-08:002008-03-06T09:07:39.544-08:00Google Adsense Tips - How Google Detects Click FraudBefore going to talk about cheating or detection we have to know what is an Invalid Click. In the first part of this post I'll describe what is an Invalid Click and after that I'll describe other things.<br /><br /><span style="font-size:130%;">What is an invalid Click?</span><br />When the pay per click provider (for example Google Adsense) says that someone that is not interested in making business from the advertisers link, click it to generate income for you.<br /><br />Also when publisher clicks their own adds (Adsense ads) to generate money for themselves, it's a invalid click.<br /><br />It's a invalid click also when publisher asks others to click on their ads (Adsense ads) just to raise their income.<br /><br />Invalid clicks also happen when some uses robots to click on their ads (Adsense ads) or automated software.<br /><br />Google defines invalid clicks as:<br /><ul><li>Manual clicks intended to increase publisher's income</li><li>Clicks by robots, automated tools</li><li>Clicks generated by Third-party services<br /></li></ul><span style="font-size:130%;">How people try to cheat Google Adsense</span><br />These are some techniques I found from the internet (<a href="http://www.cheatad.com/2006/04/27/how-to-cheat-google-adsense/">link</a>), that people used to cheat Adsense. Even though people believe these methods will raise their income, they will make you banned from Adsense.<br /><ul><li><span style="font-weight: bold;">Basic Clicker Cheat</span> : Publisher clicks on his own Adsense ads every time he has a chance.</li><li><span style="font-weight: bold;">Proxy Clicker Chea</span>t : He or She thinks that if they use anonymous proxy for browsing his own site and click ads, Google Adsense will not be able to trace them.</li><li><span style="font-weight: bold;">Multiple Computer Clicker Cheat</span> : He or She knows Google Adsense will detect if clicks are from same IP, so he/she asks friends, family members, neighbors and relatives to click on the adsense ads. </li><li><span style="font-weight: bold;">Software Clicker Cheat</span> : Using automated softwares or robots to click on Adsense ads.</li><li><span style="font-weight: bold;">Paid Clicker Cheat</span> : Publisher will pay some amount of money per month basis to professional Adsnese clickers to browse publisher's site and click on several ads.</li><li><span style="font-weight: bold;">Click-rings Cheat</span> : Group of people get together and share their site that published Adsense ads and ask click their ads while they click others ads who are in this groups. These guys will use Yahoo groups, forums and IM to form groups and communicate amon members.</li></ul>There are some more cheats that you can found in above link. Please refer it if you want more details.<br /><span style="font-size:130%;"><br />How Google Adsense detects click fraud</span><br />You may know or may not know, currently there are lot of Google Adsense publishers who are banned from Google Adsense program for click fraud. Some of them manage to get their account back, but others failed. As a result, lot of people are banned from the Google Adsense program.<br /><br />Google never reveal how they trace invalid clicks or technology behind it. But it's better to know the ways they might be used to detect click fraud. Following some ways Google Adsense may used to detect invalid clicks:<br /><ul><li><span style="font-weight: bold;">IP Address</span> : It is the easiest and must be recognized by everyone. If those clicks on your ads are originated from the same IP Address as the one used for accessing your AdSense account, your account is flagged.</li><li><span style="font-weight: bold;">Click Through Rate (CTR)</span> : Normally, Click thru Rate should not excess 10%. Otherwise, Google will flag your account. For your information, normal CTR should ranges from 0.5% - 10%.</li><li><span style="font-weight: bold;">Physical Location</span> : Google has good tracing software and technology.They can trace traffics origin down to the small town. So, using different computers with different IP address does not secure anything. So, don't try to click your ads in various Internet cafes. That will kill you.</li><li><span style="font-weight: bold;">Cookies</span> : Most home users do not use static IP Address for Internet connection. In most cases just disconnect and reconnect will give you a new IP Address. But don't forget, Google has set cookies on your computer. They can trace these cookies and see whether they originate from the same computer.</li><li><span style="font-weight: bold;">Click Pattern 1</span> : It is also suspicious when people click on their clicks and then run away immediately (hit-and-run). But normally, people will surf for a while inside your pages and then click on the ads they want.</li><li><span style="font-weight: bold;">Click Pattern 2</span> : why this computer / IP address / person is so trigger-click-happy on this particular website but never click on the ads on other sites?</li><li><span style="font-weight: bold;">Click Pattern 3</span> : And why is it that people accessing these sites direct (type-in URL or from bookmark) tend to be very active ad-clickers compared with those referred from search engine or other sites?</li><li><span style="font-weight: bold;">Other Google Services</span> : Apart from Google Adsense, Google also provide a series of services to us. Don't just think that it is safe if you do not log in your adsense account and click on your ads. What other Google services do they provide to us? Here are some: Gmail (most people are using it), Google Earth, Google Calendar, Google Search, Google Toolbar, Google Talk, Google Sitemap, Google Desktop, Blogger, or even Youtube (coz Google has just recently acquired it).</li><li><span style="font-weight: bold;">Search Engine Ranking</span> : Your website is not indexed on any search engine, not linked by any prominent website, but get consistently high traffic? How come people can access your website and click your ads? That will make Google to smell a rat.</li><li><span style="font-weight: bold;">Webpage Design</span> : How about the "Please click a link below" or "donate us by clicking the ads"? These kinds of encouragement is not in line with Google's TOS. Google can use their winning search engine, or even human eyes to check your sites from time to time.</li><li><span style="font-weight: bold;">Advertisers conversion rate</span> : Ad click is one thing. But does it bring value to the advertisers? If none of the clicks on your site translate to conversion to the advertiser, you are in trouble. First the Smart-Pricing hits, then your AdSense account disabled.</li></ul>It's better toread the <a href="https://www.google.com/adsense/support/bin/answer.py?answer=48182&sourceid=aso&subid=ww-ww-et-resourcestab&medium=link">Google Adsense Program Policies</a> before you start with adsense and be careful to not to make any click frauds.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com3tag:blogger.com,1999:blog-8049530993033883376.post-63521932554240824132008-02-28T22:53:00.001-08:002008-02-28T22:53:09.145-08:00Testing Windows Live Writer<p>This is a test post I used to test Windows Live Writer. I got new HP Pavillion dv6725 lap top for my girlfriend, which comes with Vista. I installed Live Writer to test it, actually it's good tool. Hoping something like this in Ubuntu near future. :) </p> Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-69458578670164634932008-02-05T00:21:00.000-08:002008-12-10T16:39:56.739-08:00My February Ubuntu Desktop With Screenlets and Avant Window Navigator<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYEqz6dNdDcRTTkUNmzUYTLQKFUdOg1yLD1Ul9z1XLP1nY2k3Y8HmxjZfY9n0a3PrfRSGaYdQJ2xmSLTdf2UcYh2nerIjNamog-aqQMI_NGCQVlD7n3wIdkFYPbuxlR5MBxmSKbMkFm7I/s1600-h/Screenshot.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYEqz6dNdDcRTTkUNmzUYTLQKFUdOg1yLD1Ul9z1XLP1nY2k3Y8HmxjZfY9n0a3PrfRSGaYdQJ2xmSLTdf2UcYh2nerIjNamog-aqQMI_NGCQVlD7n3wIdkFYPbuxlR5MBxmSKbMkFm7I/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5163409317311323906" border="0" /></a>Here are the details you need to make your Ubuntu Desktop looks like above. I am using Ubuntu 7.10.<br /><br />First of all you have to enable visual effects from Ubuntu's appearance tool comes under preferences menu. You have three choices when selecting visual effects. You can choose normal, extra or custom. Before enabling these settings sometimes you may need to install restricted drivers also.<br /><br />After enabling visual effects, you must go to <a href="http://wiki.awn-project.org/">Avant Window Navigator wiki</a> and follow the <a href="http://wiki.awn-project.org/index.php?title=Installation">installation guide lines</a>. After successfully installing it you can install extra applets. You can find the installation guide lines other details <a href="http://wiki.awn-project.org/index.php?title=Awn-extras">from here</a>. Then right click on avant dock and select preferences. From that preferences window you can configure your dock.<br /><br />To install screenlets, go to <a href="http://www.screenlets.org/">screenlets.org</a> and follow the guidelines. You found extra screnlets from <a href="http://www.screenlets.org/index.php/Category:UserScreenlets">here</a> and <a href="http://hendrik.kaju.pri.ee/screenlets/">here</a>. You can download the Wallpaper clock screenlet from <a href="http://gnome-look.org/content/show.php?content=66717&forumpage=1&PHPSESSID=c564f74b5ac62f134349a437109a4eaf">here</a>. The above theme for wallpaper clock can download from <a href="http://www.vladstudio.com/wallpaperclock/details.php?83">here</a> and there are more free wallpaperclocks can be found in <a href="http://www.vladstudio.com/wallpaperclock/">vladstudio.com</a> site. You have to download those .wcz files from the vladstudio.com and extract them to wallpapers directory under WallpaperClock screenlet home folder.<br /><br />If you have any problems please put a comment here or google for it, you'll find lot of details. Also <a href="http://forum.compiz-fusion.org/">compiz community forum</a> contains a section for <a href="http://forum.compiz-fusion.org/forumdisplay.php?f=102">screenlets</a>.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-44294330685373236882008-02-04T21:44:00.000-08:002008-12-10T16:40:02.800-08:00Barack Obama is a Mac while Hillary Clinton is a PC!This is a awesome article I came across while I am reading a blog today. Have a look at <a href="http://www.nytimes.com/2008/02/04/technology/04link.html?_r=2&ex=1359867600&en=02cb151437cd9f9e&ei=5090&partner=rssuserland&emc=rss&oref=slogin&oref=slogin">this link</a>.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBMQ4VYmf1A1oLT9h9fLLlBm_ggwrPfV7TIxBm91yqeoDoSYWM2TrcLjo-EboXY_ci_WoA5Fti_dQ73q0fTVJX93eWuHNYgprvNi5Q6Q54CB5RRUWByZEoO-CV3dOFdTlZcCcG-CnxJVI/s1600-h/hil.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBMQ4VYmf1A1oLT9h9fLLlBm_ggwrPfV7TIxBm91yqeoDoSYWM2TrcLjo-EboXY_ci_WoA5Fti_dQ73q0fTVJX93eWuHNYgprvNi5Q6Q54CB5RRUWByZEoO-CV3dOFdTlZcCcG-CnxJVI/s400/hil.jpg" alt="" id="BLOGGER_PHOTO_ID_5163371555958857458" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix3XxMA4xW79bV869s7v3QLZxTU87jaJPEAZbPLDfq3DCSP9rE3j8fMdbHusHJcdtmmA4-np0WldjAwKFLmp7Fw861LvRDmF5qMN5J1_lwjr1gDS3cFIkD_Gdn-qqcwUPCFBVwSkYZOEw/s1600-h/bara.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix3XxMA4xW79bV869s7v3QLZxTU87jaJPEAZbPLDfq3DCSP9rE3j8fMdbHusHJcdtmmA4-np0WldjAwKFLmp7Fw861LvRDmF5qMN5J1_lwjr1gDS3cFIkD_Gdn-qqcwUPCFBVwSkYZOEw/s400/bara.jpg" alt="" id="BLOGGER_PHOTO_ID_5163371444289707746" border="0" /></a>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-13516006833315558202008-02-03T17:39:00.000-08:002008-12-10T16:40:04.591-08:00Getting Things Done with Gmail 2.0 and SandyI came across this site <a href="http://iwantsandy.com/">iwantsandy.com</a> while I am reading a blog yesterday. This is a new web application called Sandy, your free personal email assistant. The following block of quotes in their home page encouraged me to try it.<br /><blockquote>Hi! I’m Sandy, your new assistant. I'll remember the details so you can focus on what's important.</blockquote><br />As I understand, Sandy is a simple getting things done application which help you to manage your tasks using your e-mail client. All you have to do is sign up for an account, and the you are given a new personal email address. When you want to remember a task all you have to do is a send a mail to that email account saying that,<br /><br /><blockquote>Remember [i have to do some thing at] 8 pm<br /></blockquote><br />Then Sandy will remeber it and send an email to your configured email account on that time. You have so many ways to write that message to Sandy. They have given a cheat sheet that contains detailed about how to write meaningful messages to sandy. You can do more things than one I mentioned here using Sandy. I am going to go into some details about how to use sandy to menage your work in the rest of this article.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1q8dUBkTQpepwe5DRs-c-T5llPZp1CS_VmZdPBpd0deq52TAu1VZqHcNW8P-JYX4KbDTRq67YE4Xklbe5uIpKMd6DuMMCVhVAcy5Du6LBSGOeoARHmbzsEsruG52dtG-p5tVZNWjWuFk/s1600-h/sandy_mod.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1q8dUBkTQpepwe5DRs-c-T5llPZp1CS_VmZdPBpd0deq52TAu1VZqHcNW8P-JYX4KbDTRq67YE4Xklbe5uIpKMd6DuMMCVhVAcy5Du6LBSGOeoARHmbzsEsruG52dtG-p5tVZNWjWuFk/s400/sandy_mod.jpg" alt="" id="BLOGGER_PHOTO_ID_5162939130061561554" border="0" /></a>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-75136283655370040442008-02-03T03:45:00.000-08:002008-12-10T16:40:09.688-08:00FreeRice.comWhile I am reading through the <a href="http://www.ndesign-studio.com/">ndesign-studio</a> blog, I found this site called <a href="http://www.freerice.com/">FreeRice.com</a>. I think idea behind this site is awesome and very creative like the design of the site. They have a vocabulary game in their site and you can play this game without any kind of sign up. For each question answered correctly 10 grains of rice will be donated by the sponsors to help people living in poverty. Creativity behind this idea is visitor get to play the game, then visitor got chance to improve their vocabulary, FreeRice get the traffics, advertisers get their exposure, and most important thing is people get the free rice. I think it's a nice idea to spread around the community. Please help to spread out the word. You can find details from their <a href="http://www.freerice.com/faq.html">FAQ</a> page.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.freerice.com/"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_UTOqVvWlDQCorbSzfkAF03HFaxAkrRwXpz6by5-gamrpIUfZJu0JkUiIcKQleL55OtGwrP5AL50lfDm5o8A6w6wFqsxQ8rGta3GQ5jLMNOkMDn5_XljbbA4xK1aTPhW_JazMj9w39Tw/s400/free.jpg" alt="" id="BLOGGER_PHOTO_ID_5162721907795599042" border="0" /></a>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-77207174780681464182008-02-02T17:46:00.000-08:002008-12-10T16:40:18.519-08:00Angel 'Android'<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDMU_6FNaysxzNCdYrUtREa04StwKJmT1ZoOH9DPi8sH4t8uXyK-AcYTTcGQXg1foS6zykvD1uicaH6FkNqS0wyfvtgQ1ipegSZp8ZnI34Q3ObbU9z59ZUqGY2VMa1jr1Mr6oa0GrTFwk/s1600-h/cool-cartoon-153343.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDMU_6FNaysxzNCdYrUtREa04StwKJmT1ZoOH9DPi8sH4t8uXyK-AcYTTcGQXg1foS6zykvD1uicaH6FkNqS0wyfvtgQ1ipegSZp8ZnI34Q3ObbU9z59ZUqGY2VMa1jr1Mr6oa0GrTFwk/s400/cool-cartoon-153343.png" alt="" id="BLOGGER_PHOTO_ID_5162564578848579250" border="0" /></a>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-24823057799698744602008-02-02T17:20:00.000-08:002008-12-10T16:40:19.611-08:00MicroHoo!<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixJRsZhfiZuc_FMeyvgatCcc-EQAXjVW3BWxD7_gmKxjw8YGV6eh5CbeFFpUWq7ttjmWcJUXhtxoGvobzS5iP_XgMgtmG8ZFK0c_uQ8wjoDuWuUYgUjEoxn8xM_-jZMcO7YKMzz96FUuo/s1600-h/cool-cartoon-153332.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixJRsZhfiZuc_FMeyvgatCcc-EQAXjVW3BWxD7_gmKxjw8YGV6eh5CbeFFpUWq7ttjmWcJUXhtxoGvobzS5iP_XgMgtmG8ZFK0c_uQ8wjoDuWuUYgUjEoxn8xM_-jZMcO7YKMzz96FUuo/s400/cool-cartoon-153332.png" alt="" id="BLOGGER_PHOTO_ID_5162558196527177378" border="0" /></a><br />When I am reading the Ajaxian feeds, I found this nice cartoon creation site called <a href="http://www.toondoo.com/">ToonDoo.</a><br />This my first cartoon, created using ToonDoo.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-56899228861731144792008-02-01T21:54:00.000-08:002008-12-10T16:40:29.878-08:00Inside MacBook Air<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrNzv3ZYLg4X0qALydQpozVJIz2mpzzE-DJ2HrPCWj9aEcPdNFJCpEmSsA9ScUykUeuXHyQmys4pZTcuu2eiqwHymg2751EO1aWmcaoQYPk1f93bIr2ktqMs3dwFk_7vilTMI3MJBhsuU/s1600-h/24-2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrNzv3ZYLg4X0qALydQpozVJIz2mpzzE-DJ2HrPCWj9aEcPdNFJCpEmSsA9ScUykUeuXHyQmys4pZTcuu2eiqwHymg2751EO1aWmcaoQYPk1f93bIr2ktqMs3dwFk_7vilTMI3MJBhsuU/s400/24-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5162258966155665010" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7zl_nNiqmF3ZkPgRsE1QGaASpPkR-rqFKUaBWTgcQz96d_xPmdO1u8p-CjURp7zY-etvW7EJwGQuiar-D5j6iAOuh6Pwcit6a5iWvGlsi7a3F7tYbR8plY1xLNNTbmGlfYtWUD-KRkW4/s1600-h/8-2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7zl_nNiqmF3ZkPgRsE1QGaASpPkR-rqFKUaBWTgcQz96d_xPmdO1u8p-CjURp7zY-etvW7EJwGQuiar-D5j6iAOuh6Pwcit6a5iWvGlsi7a3F7tYbR8plY1xLNNTbmGlfYtWUD-KRkW4/s400/8-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5162258682687823394" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCLIfW43JHXPmhyb9ji84WrHrlT9n01d57DvObwiCZ2aWwwyk7In5UOhzNyL7YBQl36Sk3FLVowvmUzgXLacIMvHFdN1s2tpVI63DyQOLYm5A2bqvbzC8nm6WKJAJeSCsEc1OQlGF1xRA/s1600-h/9-1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCLIfW43JHXPmhyb9ji84WrHrlT9n01d57DvObwiCZ2aWwwyk7In5UOhzNyL7YBQl36Sk3FLVowvmUzgXLacIMvHFdN1s2tpVI63DyQOLYm5A2bqvbzC8nm6WKJAJeSCsEc1OQlGF1xRA/s400/9-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5162258686982790706" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvTiGfD7oxc6ozofFFJ0jMtYjLMhLobBjuRlCro91llsKSHvOBYf_etpXcDsO_DTL78IQ_1m2_Cqm9hAcSuTW5r7Py9qKFlDE5ALkMQluUnHX2l5gZAYIxxLCxa4tvQjtDw5NzDfidtic/s1600-h/10-1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvTiGfD7oxc6ozofFFJ0jMtYjLMhLobBjuRlCro91llsKSHvOBYf_etpXcDsO_DTL78IQ_1m2_Cqm9hAcSuTW5r7Py9qKFlDE5ALkMQluUnHX2l5gZAYIxxLCxa4tvQjtDw5NzDfidtic/s400/10-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5162258691277758018" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIp5fq5ocZU9SBk5JIg7gmSx2wjICZxtVsT5rCESyEQW_jy83HD_kuEPVCvDBULnSQaGtbTW8BDHh9qO3yTSFMmKBHEI3yl3dMnQHe_byTN2XdwZjpf7Y59Rf2ey-ix7TIAiv2YrCzW1w/s1600-h/11-1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIp5fq5ocZU9SBk5JIg7gmSx2wjICZxtVsT5rCESyEQW_jy83HD_kuEPVCvDBULnSQaGtbTW8BDHh9qO3yTSFMmKBHEI3yl3dMnQHe_byTN2XdwZjpf7Y59Rf2ey-ix7TIAiv2YrCzW1w/s400/11-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5162258691277758034" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDd6XHQ_wbObxzrg061lPRL-vjd-hJxigrQ0JzkrP45mZt5C4ueQm8i44pM8hFm4AV3g58FEIYdTYTODFDsMey7HJhWeODkOxa_bsPAU5k4mebIg8xqB0mStv5eLXBEqkLP6rnq-JZJWg/s1600-h/16-1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDd6XHQ_wbObxzrg061lPRL-vjd-hJxigrQ0JzkrP45mZt5C4ueQm8i44pM8hFm4AV3g58FEIYdTYTODFDsMey7HJhWeODkOxa_bsPAU5k4mebIg8xqB0mStv5eLXBEqkLP6rnq-JZJWg/s400/16-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5162258695572725346" border="0" /></a><br /><br />I found these nice pictures trough the digg.com while I am browsing through my friend's activity page.These pictures were originally published at <a href="http://www.ifixit.com/">iFixit.com</a>. You can see more pictures with some details in this<a href="http://www.ifixit.com/Guide/First-Look/Mac/MacBook-Air"> link</a>.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-42045373602859645982008-02-01T09:23:00.000-08:002008-12-10T16:40:34.966-08:00MacBook Air - The world's thinest notebookEven though I am a open source fan, I love the art inside the Apple products. I was fascinated by the art of iPhone last year when they release it. But when Apple CEO Steve Jobs introduced the <a href="http://www.apple.com/macbookair/">MacBook Air</a> at Macworld Expo I can't believe how they created some thing stylish and so thin. I have never own any of the Apple products, but I have use them several times at my internship period. In this post I am going dig deeper about some details of <a href="http://www.apple.com/macbookair/">MacBook Air</a>. According to my knowledge it will be available for sale at US in mid February.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgihMjd3_0FlHt8v30kiiYCfRi9k_wbzQcniTfA0SivQl0gwISgsFn076dCR7zcb-IikVAKBOQycAFnZf948v1dEjmfFbWelm3aSnWTb-JeOOF8VGy8sL7ZWtBmwss-C3cj6SqPFTM5fHE/s1600-h/air1.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgihMjd3_0FlHt8v30kiiYCfRi9k_wbzQcniTfA0SivQl0gwISgsFn076dCR7zcb-IikVAKBOQycAFnZf948v1dEjmfFbWelm3aSnWTb-JeOOF8VGy8sL7ZWtBmwss-C3cj6SqPFTM5fHE/s400/air1.jpg" alt="" id="BLOGGER_PHOTO_ID_5162068170823474658" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNDFYm3zQzuw7IeqnNWxIH7_QFgpoFzSNzTOmuFtdf1PzoowBsb-khMmGtZ8ufu0wfbiVswyHV3j8vPyBgjnAxB0gQCZj2oH11W_5GPXqwPWTOmhx50q7xIZQOado2YNwy11sFNhk4xts/s1600-h/131583-mbair_large.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNDFYm3zQzuw7IeqnNWxIH7_QFgpoFzSNzTOmuFtdf1PzoowBsb-khMmGtZ8ufu0wfbiVswyHV3j8vPyBgjnAxB0gQCZj2oH11W_5GPXqwPWTOmhx50q7xIZQOado2YNwy11sFNhk4xts/s400/131583-mbair_large.jpg" alt="" id="BLOGGER_PHOTO_ID_5162068179413409266" border="0" /></a><br />MacBook Air's price will start at $1799 and ships within 2-3 weeks from the order date.<br /><br />Mac Book Air features 13.3-inch widescreen LED backlit display which produces vibrant images and rich colors delivers 1280-by-800 resolution. It's LED technology also conserves battery life. According to Apple, it's 0.16 to 0.76 inch thin and weights 3 pounds.<br /><br />MacBook Air is powered by Intel Core 2 Duo processor running at 1.6 GHz. You have option of 1.8 GHz upgrade. This chip was custom-built to fit within the compact dimensions of MacBook Air.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1R9ULOivDc19VJcDAIVyUTZzGxm6zFTA35UZgkRGg8k7pB9Bo_wzft0mrS_5zYWo_R9mn878pN6Pvpkzkq5m_7eKjzpRY9eqsGVJApSmIxJNcmBM22JZnV5EF6GNXtm8RaUiVfYzoaxk/s1600-h/design_displayair20080115.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1R9ULOivDc19VJcDAIVyUTZzGxm6zFTA35UZgkRGg8k7pB9Bo_wzft0mrS_5zYWo_R9mn878pN6Pvpkzkq5m_7eKjzpRY9eqsGVJApSmIxJNcmBM22JZnV5EF6GNXtm8RaUiVfYzoaxk/s400/design_displayair20080115.jpg" alt="" id="BLOGGER_PHOTO_ID_5162196418546933250" border="0" /></a>MacBook Air includes a built-in iSight camera, which make video chatting easy anywhere there's a wireless network. MacBook Air includes an oversize trackpad with multi-touch technology. You can pinch, swipe, or rotate to zoom in on text, advance through a photo album, or adjust an image. This gesture-based input so successful on iPhone and iPod touch now comes to MacBook.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7mIq4tP78sOwxF0_Y_dhn2bSA-ASldk6i4BBP5t_4G6ywZEXpgkZ3AbtqQvDMCA2aarUX-e3BrfAMwkQ0azcef2M9aqLwU0tl5rfvJk1GB_HTFpEuxot83_aekBfmliAQF54F3uzVvNY/s1600-h/design_keyboardair20080115.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7mIq4tP78sOwxF0_Y_dhn2bSA-ASldk6i4BBP5t_4G6ywZEXpgkZ3AbtqQvDMCA2aarUX-e3BrfAMwkQ0azcef2M9aqLwU0tl5rfvJk1GB_HTFpEuxot83_aekBfmliAQF54F3uzVvNY/s400/design_keyboardair20080115.jpg" alt="" id="BLOGGER_PHOTO_ID_5162196422841900562" border="0" /></a><br />MacBook Air comes with a USB 2.0 port, a headphone jack, and a micro-DVI port that supports DVI, VGA, composite, and S-video output. It comes with 2 GB of RAM and 80 GB hard drive wich provides lenty of storage space. Buyers have the option to upgrade to a 64GB solid-state drive, which has no moving parts for enhanced durability. According to Apple MacBook Air battery is their thinnest battery ever, and you can access the web wirelessly for 5 full hours.<br /><br />MacBook Air encourage fully wireless lifestyle. It equipped with the fastest-available, next-generation 802.11n Wi-Fi and Bluetooth 2.1 + EDR.<br /><br />You can find more details about MacBook Air features and the new wireless lifestyle they trying to encourage from their <a href="http://www.apple.com/macbookair/">web site</a>.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-23646695944413095312008-01-30T05:02:00.000-08:002008-12-10T16:40:36.874-08:00Mooshup.com powered by WSO2 Mashup ServerIn the first quarter of 2007, I was an intern at <a href="http://wso2.com/">WSO2 Inc. </a>which is a major provider of Open Source Web Services Platforms and Support. At that time Jonathan Marsh who was an employee of Microsoft join WSO2 and start <a href="http://wso2.org/projects/mashup">WSO2 Mashup Server</a> project which provides a platform for creating, deploying and consuming Web Services mashups in a simple manner using JavaScript. I got a chance to work with Mashup team at that time and I am happy to see that this project has become very successful and you can download version 1.0 from the web site. Now WSO2 brings beta version of their <a href="http://mooshup.com/">mooshup.com</a> which provides a scalable host environment for running JavaScript mashups.<br />At the time of writing this post I just created a account in mooshup.com and I am very facinated by the look and feel of the <a href="http://mooshup.com/">moohup.com</a> . Here are some screenshots of mooshup.com.Feel free to try it and help to develop next generation open source mashup platform.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy2FBIAfUJsZaKx_GtR-oDMZ1vxKYTvSrlz4_6yl17YmUpx42HXYIElnO1xlTDXiiv2h8b3aAEyKQZ1LTA7GGgU44HipVCZbngdzO2_ze7OiDGPhVzRS7kQ1CynnBwDD8hw7JqJMr6Z7M/s1600-h/mooshup_home.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy2FBIAfUJsZaKx_GtR-oDMZ1vxKYTvSrlz4_6yl17YmUpx42HXYIElnO1xlTDXiiv2h8b3aAEyKQZ1LTA7GGgU44HipVCZbngdzO2_ze7OiDGPhVzRS7kQ1CynnBwDD8hw7JqJMr6Z7M/s400/mooshup_home.png" alt="" id="BLOGGER_PHOTO_ID_5161259961057582354" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYf4XotmpeA2uz9fo2KDwlxXJjyF-9kisCrrypMVoY3voUoo9c82znpNdI_dmT7RgjmLIqfeyjIg9ccH2Z5y5L2D-Qm93yPrxLTVC4pRjZwQyGrjo3v0DOAJv7PwmFt_JMLknQI8e3btw/s1600-h/Screenshot_myprofile.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYf4XotmpeA2uz9fo2KDwlxXJjyF-9kisCrrypMVoY3voUoo9c82znpNdI_dmT7RgjmLIqfeyjIg9ccH2Z5y5L2D-Qm93yPrxLTVC4pRjZwQyGrjo3v0DOAJv7PwmFt_JMLknQI8e3btw/s400/Screenshot_myprofile.png" alt="" id="BLOGGER_PHOTO_ID_5161259965352549666" border="0" /></a>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-28836007366587828562008-01-29T08:27:00.001-08:002008-01-31T04:50:15.893-08:00Your Own Certificate AuthorityThese days I am involve in developing X509 certificate store for Apache Rampart/C Web Services Security project which is the security module for Axis2/C Web Service Engine. This certificate store will use PKCS12 format file to store certificates. Before implementing certificate store I had to create my own CA (Certificate Authority) and Several Public and Private key pairs signed by my CA which will be used in testing the implementation. This little post will explain you some basic concepts of PKI and how to setup your own CA and generate certificates using OpenSSL.<br /><br /><span style="font-weight: bold;">What is Public Key Cryptography?</span><br /><br />Public Key Cryptography is also know as asymmetric cryptography, is form of cryptography where users as pair of keys. One is private key other is public key. User keep private key as secret and publish the public key. These two keys are related mathematically, but the private key is cannot be derived using public key. A message encrypted with public key can only be decrypted using private key. This method is used to ensure the confidentiality. Private key is used to sign messages. Messages signed using senders private key can be verified by anyone who has access to the sender's public key. This ensure the authenticity. I am not going to talk more about public key cryptography, you can find more details on the internet.<br /><br /><span style="font-weight: bold;">What is Public Key Infrastructure?</span><br /><br />According to the Wikipedia Public Key Infrastructure (PKI) is an arrangement that binds public keys with respective user identities by means of a certificate authority (<b>CA</b>). You can find more details from this <a href="http://en.wikipedia.org/wiki/Public_key_infrastructure">link</a>.<br /><br />So according to the PKI , you must understand that we need a CA to issue certificates for the user. As the first step I will show you how to create your own certificate authority and after that I will show you how to issue certificates signed by that authority.<br /><ol><li>Before acting as a CA, you need to have some files necessary for being a CA. You need to have your own private key and self signed certificate. Following command will generate these files for you, but you have to provide some information about your self.<pre class="code"><em><em>openssl req -x509 -out ca_cert.pem -newkey rsa:1024 -keyout ca_pkey.pem -days 365</em></em></pre>If you are not familiar with openssl tool, you will not understand what these options means. So here are the meanings of above options used with openssl tool. To learn more about the openssl tool you can use openssl man page in linux or this <a href="http://openssl.org/docs/apps/openssl.html">link</a>.<br /><ul><li>req : Since you are requesting a requestinga certificate you have to use req command.</li><br /><li>-x509 : This option will req command to generate self signed certificate rather than a certificate request as in normal case.</li><br /><li>-out ca_cert.pem : The CA's certificate will write into this file.</li><br /><li>-newkey rsa:1024 : Tell openssl to generate 1024-bit long RSA key along with this new certificate.</li><br /><li>-keyout ca_pkey.pem : The CA's new private key will write into this file.</li><br /><li>-days 365 : This certificate that we generated only valid for 365 days from now.</li><br /></ul><br /></li><li><br /></li></ol>Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0tag:blogger.com,1999:blog-8049530993033883376.post-19000703747008878562008-01-28T08:23:00.000-08:002008-01-30T07:04:37.773-08:00Recursion vs Efficiency<p>Before analyzing efficiencies of Recursive and Non-Recursive algorithms of same complexity we have to define what are Recursive and Non-Recursive Algorithms.<br /><br />We can define recursive algorithm as an algorithm which calls itself with "smaller (or simpler)" input values, and which obtains the result for the current input by applying simple operations to the returned value for the smaller (or simpler) input. More generally if a problem can be solved utilizing solutions to smaller versions of the same problem, and the smaller versions reduce to easily solvable cases, then one can use a recursive algorithm to solve that problem.<br /><br />We can define non-recursive algorithm as an algorithm which is executed only once to solve the given problem.<br /><br />As an example following algorithms compute factorial of a given number in recursive manner and non-recursive manner respectively (Written C Language).<br /></p><pre><br /><strong>unsigned</strong> <strong>int</strong> <span style="color: rgb(32, 64, 160);">factorial</span><span style="color: rgb(68, 68, 255);">(</span><strong>unsigned</strong> <strong>int</strong> <span style="color: rgb(32, 64, 160);">n</span><span style="color: rgb(68, 68, 255);">)</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><br /> <strong>if</strong> <span style="color: rgb(68, 68, 255);">(</span><span style="color: rgb(32, 64, 160);">n</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);">)</span> <strong>return</strong> <span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);">;</span><br /><br /> <strong>return</strong> <span style="color: rgb(32, 64, 160);">n</span> <span style="color: rgb(68, 68, 255);">*</span> <span style="color: rgb(32, 64, 160);">factorial</span><span style="color: rgb(68, 68, 255);">(</span><span style="color: rgb(32, 64, 160);">n</span><span style="color: rgb(68, 68, 255);">-</span><span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);">)</span><span style="color: rgb(68, 68, 255);">;</span><br /><span style="color: rgb(68, 68, 255);"><strong>}</strong></span><br /><br /><strong>unsigned</strong> <strong>int</strong> <span style="color: rgb(32, 64, 160);">factorial</span><span style="color: rgb(68, 68, 255);">(</span><strong>unsigned</strong> <strong>int</strong> <span style="color: rgb(32, 64, 160);">n</span><span style="color: rgb(68, 68, 255);">)</span> <span style="color: rgb(68, 68, 255);"><strong>{</strong></span><br /> <strong>unsigned</strong> <strong>int</strong> <span style="color: rgb(32, 64, 160);">result</span> <span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);">;</span><br /> <strong>if</strong> <span style="color: rgb(68, 68, 255);">(</span><span style="color: rgb(32, 64, 160);">n</span> <span style="color: rgb(68, 68, 255);"><</span><span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);">)</span> <strong>return</strong> <span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(68, 68, 255);">;</span><br /> <strong>while</strong> <span style="color: rgb(68, 68, 255);">(</span><span style="color: rgb(32, 64, 160);">n</span><span style="color: rgb(68, 68, 255);">-</span><span style="color: rgb(68, 68, 255);">-</span><span style="color: rgb(68, 68, 255);">)</span> <span style="color: rgb(32, 64, 160);">result</span> <span style="color: rgb(68, 68, 255);">*</span><span style="color: rgb(68, 68, 255);">=</span> <span style="color: rgb(32, 64, 160);">n</span><span style="color: rgb(68, 68, 255);">;</span> <br /><br /> <strong>return</strong> <span style="color: rgb(32, 64, 160);">result</span><span style="color: rgb(68, 68, 255);">;</span><br /><span style="color: rgb(68, 68, 255);"><strong>}</strong></span><br /></pre><br /><span style="font-weight: bold;">Recursive algorithms are somewhat less efficient than non-recursive algorithms with same theoretical complexity because of the nature of recursive algorithms discussed above.</span><br /><br />Lets take above factorial example to analyze this situation:<br /><br />When using recursion to find the factorial of given number each call itself does not provide the solution to original problem. Instead the recursive call provides a partial solution that must be multiplied by a number to get the final result. If you consider operating stack of the OS, each recursive call must be kept on the stack because each call is incomplete until the next call above on the stack is returned. When considering factorial for 15, factorial(15) goes on the stack and stays there until factorial(14) returns. factorial(14) goes above the factorial(15) on the stack and stays there until factorial(13)returns, etc.<br /><br />So, recursive computation involving n recursive function calls would require, therefore, space linear in n. On the other hand, an iterative program typically uses only constant amount of memory, independent of the number of iterations.<br /><br />Also In the case of recursive algorithms, they have some problems with compiler optimizations. For example, Jon Bentley [<a href="http://dns.uls.cl/%7Emramos/libro/books/book10/9806m/9806m.htm">http://dns.uls.cl/~mramos/libro/books/book10/9806m/9806m.htm</a>] has found that a functionally identical recursive method optimized by the C compiler if he did not use ?: conditional operator. However it did not optimize function if he use conditional operator ?:. He also found that recursion can be very expensive, taking up to 20 times longer for some operations that are naturally iterative. Above url mentioned contain more details about his experiments.Milinda Lakmal Pathiragehttp://www.blogger.com/profile/14003973100432151012noreply@blogger.com0