tag:blogger.com,1999:blog-37338158632642388502024-02-06T20:08:12.631-08:00KNOWLEDGEfull ResourcesJust my thoughtshariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-3733815863264238850.post-82714196667470353342018-12-18T19:54:00.000-08:002018-12-18T20:11:39.784-08:00Facebook Messenger and Telegram are the solutions for WhatsApp problems<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="graf graf--p" name="31a7">
<div class="graf graf--p graf-after--h3" id="31a7" name="31a7" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 8px;">
Social networking, instant messaging collaboration tools are much advanced in consumer internet than enterprise tools. Actually, tools available for consumers were much advanced than the apps available for enterprises. The moment the product gets launched in the tech app store, the adoption rate is significant, creating a new necessity for the urban utopia to download from app store. In fact, these tools, in turn, caused a ripple effect in enterprises, redefining their collaboration strategy.</div>
<div class="graf graf--p graf-after--p" id="017c" name="017c" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
There are so many out in the market like Google Wave(email invented in web 2.0 era), Facebook, WhatsApp(SMS & VOIP for internet age), Telegram. The popularity of tools depends on solving people’s need at that point in time in an easier way, perhaps addressing the shortcoming of the existing product.</div>
<div class="graf graf--p graf-after--p" id="36dd" name="36dd" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
WhatsApp made the communication extremely simple, kept the people’s nervousness high by the live status of typing, blue tick acknowledgments, multi-message to multiple groups forwards at ease of convenience. It made the communication extremely simple & incredible at the same time exploiting the universal weakness of our brains through constant validation of our messages & replies.</div>
<div class="graf graf--p graf-after--p" id="a748" name="a748" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
The primary concern of the WhatsApp is local storage of media files where storage space gets filled with media junk apart from the inability to retrieve media at later point of time. This is due to the fact that WhatsApp does not store anything on their servers apart from 30 days since the message is posted. This post is meant to address the concerns of WhatsApp & propose alternatives — in terms of the functionality offered, cloud storage and seamless experience with the desktop version.</div>
<div class="graf graf--p graf-after--p" id="f075" name="f075" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
Though there are so many alternatives, here I am going to propose Facebook Messenger & Telegram along with pros and cons.</div>
<div class="graf graf--p graf-after--p" id="6995" name="6995" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
<a class="markup--anchor markup--p-anchor" data-href="https://www.facebook.com" href="https://www.facebook.com/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: transparent; background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; text-decoration-line: none;" target="_blank"><span class="markup--strong markup--p-strong" style="font-weight: 700;">Facebook Messenger</span></a><span class="markup--strong markup--p-strong" style="font-weight: 700;">:</span></div>
<div class="graf graf--p graf-after--p" id="6a8a" name="6a8a" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
<a class="markup--anchor markup--p-anchor" data-href="https://www.messenger.com" href="https://www.messenger.com/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: transparent; background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; text-decoration-line: none;" target="_blank">Facebook messenger</a> offers quite comprehensive features almost to that of WhatsApp.</div>
<div class="graf graf--p graf-after--p" id="d750" name="d750" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
Pros :</div>
<ul class="postList" style="background-color: white; color: rgba(0, 0, 0, 0.84); counter-reset: post 0; font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 20px; list-style: none none; margin: 29px 0px 0px; padding: 0px;">
<li class="graf graf--li graf-after--p" id="cd3c" name="cd3c" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">offers individual chat.</li>
<li class="graf graf--li graf-after--li" id="4010" name="4010" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">group chat.</li>
<li class="graf graf--li graf-after--li" id="c2e8" name="c2e8" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">allows media uploads.</li>
<li class="graf graf--li graf-after--li" id="7729" name="7729" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">allows message forwards to multiple groups.</li>
<li class="graf graf--li graf-after--li" id="10bc" name="10bc" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">integration with facebook.</li>
<li class="graf graf--li graf-after--li" id="8aaf" name="8aaf" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">allows group chat even with anonymous.</li>
<li class="graf graf--li graf-after--li" id="ecd5" name="ecd5" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">desktop(web app) and mobile app access.</li>
<li class="graf graf--li graf-after--li" id="197d" name="197d" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">audio & video call. audio recording.</li>
<li class="graf graf--li graf-after--li" id="8929" name="8929" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">reactions to a particular message using emojis.</li>
<li class="graf graf--li graf-after--li" id="0d7d" name="0d7d" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 0px; margin-left: 30px;">media shared are stored in facebook cloud. Can be retrieved at any given point even years later.</li>
</ul>
<div class="graf graf--p graf-after--li" id="86c9" name="86c9" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
Cons:</div>
<ul class="postList" style="background-color: white; color: rgba(0, 0, 0, 0.84); counter-reset: post 0; font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 20px; list-style: none none; margin: 29px 0px 0px; padding: 0px;">
<li class="graf graf--li graf-after--p" id="9573" name="9573" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">requires facebook id.</li>
<li class="graf graf--li graf-after--li" id="a7c7" name="a7c7" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">chat communications are like a mail without a subject in a form of threaded conversations.</li>
<li class="graf graf--li graf-after--li" id="3548" name="3548" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">facebook groups and instant messenger groups are different and confusing.</li>
<li class="graf graf--li graf-after--li" id="bc12" name="bc12" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">group communications are a mail with multiple facebook recipients and the group name being the names of those recipients.</li>
<li class="graf graf--li graf-after--li" id="8ac5" name="8ac5" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">no mobile web access.</li>
<li class="graf graf--li graf-after--li" id="b739" name="b739" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">does not support forwarding of multiple messages though supports forwarding individual messages to multiple groups.</li>
<li class="graf graf--li graf-after--li" id="99d8" name="99d8" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 0px; margin-left: 30px;">does not have search feature in individual chats though search is available for overall contacts and messages.</li>
</ul>
<div>
<span style="color: rgba(0 , 0 , 0 , 0.83921568627451); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif;"><span style="font-size: 21px; letter-spacing: -0.063px;"><br /></span></span></div>
<div>
<em class="markup--em markup--p-em" style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-feature-settings: "liga", "salt"; font-size: 21px; letter-spacing: -0.063px;">Figure 1a</em><span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;">. Facebook Messenger Mobile app showing individual chats, groups.</span></div>
<div>
<span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;"><br /></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbSf6OWfU8_M61f6vQdb7pIFVYbELwT-fg3TqfDNijoM_SUb2W-RvXppTCqkn9m8rckpjJRhK4Qz4asO71n4SFw-uYuPgsRQ8N2wd8fKG6MH3wh2goD5dLxByx41fS-5VSEEqfrtREFhY/s1600/facebook_messenger_mobile_app.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="372" data-original-width="924" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbSf6OWfU8_M61f6vQdb7pIFVYbELwT-fg3TqfDNijoM_SUb2W-RvXppTCqkn9m8rckpjJRhK4Qz4asO71n4SFw-uYuPgsRQ8N2wd8fKG6MH3wh2goD5dLxByx41fS-5VSEEqfrtREFhY/s1600/facebook_messenger_mobile_app.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">facebook messenger android app</td></tr>
</tbody></table>
<div>
<em class="markup--em markup--p-em" style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-feature-settings: "liga", "salt"; font-size: 21px; letter-spacing: -0.063px;"><br /></em></div>
<div>
<em class="markup--em markup--p-em" style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-feature-settings: "liga", "salt"; font-size: 21px; letter-spacing: -0.063px;">Figure 1b</em><span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;">. Facebook Messenger web app.</span></div>
<div>
<span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;"><br /></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5wbNSJ9LJnKszgPF5Vns4VACowPdPYF1zfm3c9wrt7WVFDCqQNiFGVqa_9Z4sLsOlNgAGFB_EKFCQggwVUGHHtjGf7S4ym-mNY7ia1CGYegWlZeWpU7f-J6W9byQ0hBsxyh4_n6mqjEg/s1600/facebook_messenger_web.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="908" data-original-width="1515" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5wbNSJ9LJnKszgPF5Vns4VACowPdPYF1zfm3c9wrt7WVFDCqQNiFGVqa_9Z4sLsOlNgAGFB_EKFCQggwVUGHHtjGf7S4ym-mNY7ia1CGYegWlZeWpU7f-J6W9byQ0hBsxyh4_n6mqjEg/s1600/facebook_messenger_web.jpg" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><ul class="postList" style="background-color: white; color: rgba(0, 0, 0, 0.84); counter-reset: post 0; font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 20px; list-style: none none; margin: 29px 0px 0px; padding: 0px; text-align: left;">
<li class="graf graf--li graf-after--li" id="99d8" name="99d8" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 0px; margin-left: 30px;"><a class="markup--anchor markup--figure-anchor" data-href="https://www.messenger.com" href="https://www.messenger.com/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; font-size: 16px; letter-spacing: normal; text-align: center; text-decoration-line: none;" target="_blank">facebook messenger</a><span style="color: rgba(0 , 0 , 0 , 0.68); font-family: , "lucida grande" , "lucida sans unicode" , "lucida sans" , "geneva" , "arial" , sans-serif; font-size: 16px; letter-spacing: normal; text-align: center;"> web app © Image source — </span><a class="markup--anchor markup--figure-anchor" data-href="http://www.messengerforweb.com" href="http://www.messengerforweb.com/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; font-size: 16px; letter-spacing: normal; text-align: center; text-decoration-line: none;" target="_blank">www.messengerforweb.com</a></li>
</ul>
</td></tr>
</tbody></table>
<em class="markup--em markup--p-em" style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-feature-settings: "liga", "salt"; font-size: 21px; letter-spacing: -0.063px;">Figure 1c</em><span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;">. Facebook Messenger Inbox.</span><br />
<div>
<span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;"></span><br />
<br />
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2-_ZVJ1VYFZC9sIW7wQ2LQF1JVOGOxLMFsjPDPyohcasWOaJ0q7TZr9yEZKorM60jVOkH7WO7k0Qw5lnhD-GpZo9MUTPmqOxoNSmr9hZn2DzH60gwOGDCzaAyaZUhA8cnOrLomgAHwr0/s1600/facebook_messenger_web_inbox.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="438" data-original-width="780" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2-_ZVJ1VYFZC9sIW7wQ2LQF1JVOGOxLMFsjPDPyohcasWOaJ0q7TZr9yEZKorM60jVOkH7WO7k0Qw5lnhD-GpZo9MUTPmqOxoNSmr9hZn2DzH60gwOGDCzaAyaZUhA8cnOrLomgAHwr0/s1600/facebook_messenger_web_inbox.jpg" /></a></td></tr>
<tr><td class="tr-caption"><a class="markup--anchor markup--figure-anchor" data-href="https://facebook.com" href="https://facebook.com/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: white; background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; font-size: 16px; text-decoration-line: none;" target="_blank">facebook messages</a><span style="background-color: white; color: rgba(0 , 0 , 0 , 0.68); font-family: , "lucida grande" , "lucida sans unicode" , "lucida sans" , "geneva" , "arial" , sans-serif; font-size: 16px;"> web app © Image source — </span><a class="markup--anchor markup--figure-anchor" data-href="http://www.emgigroup.com" href="http://www.emgigroup.com/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: white; background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; font-size: 16px; text-decoration-line: none;" target="_blank">www.emgigroup.com</a><br />
<div class="graf graf--p graf-after--figure" id="1ab7" name="1ab7" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 38px; text-align: start;">
<a class="markup--anchor markup--p-anchor" data-href="https://telegram.org/" href="https://telegram.org/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: transparent; background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; text-decoration-line: none;" target="_blank"><span class="markup--strong markup--p-strong" style="font-weight: 700;">Telegram</span></a><span class="markup--strong markup--p-strong" style="font-weight: 700;">:</span></div>
<div class="graf graf--p graf-after--p" id="041d" name="041d" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px; text-align: start;">
Telegram not only offers close to the capabilities of WhatsApp but also the usability experience and other form factors are as same as that of WhatsApp along with the cloud storage.</div>
<div class="graf graf--p graf-after--p" id="041d" name="041d" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px; text-align: start;">
<em class="markup--em markup--p-em" style="font-feature-settings: "liga", "salt"; letter-spacing: -0.063px;">Figure 2a</em><span style="letter-spacing: -0.063px;">. Telegram mobile app.</span></div>
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7bn9I6sN-sJBcTvGXpoi0f1XEx7HcLPTNeCEY38fYwc-c0NUwv4K0_P53Jj_LHonxaGk-Rdg9LRroSKRKo0DpHUjK02pjivozkfkO2vF7LVHekJoTPv7gibauUo6ErHhx355CHOSN_h0/s1600/telegram_app.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="393" data-original-width="609" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7bn9I6sN-sJBcTvGXpoi0f1XEx7HcLPTNeCEY38fYwc-c0NUwv4K0_P53Jj_LHonxaGk-Rdg9LRroSKRKo0DpHUjK02pjivozkfkO2vF7LVHekJoTPv7gibauUo6ErHhx355CHOSN_h0/s1600/telegram_app.png" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.8px;">Telegram mobile app — chats, groups & messages.<br />
<em class="markup--em markup--p-em" style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-feature-settings: "liga", "salt"; font-size: 21px; letter-spacing: -0.063px; text-align: start;"><br /></em>
<div>
<em class="markup--em markup--p-em" style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-feature-settings: "liga", "salt"; font-size: 21px; letter-spacing: -0.063px; text-align: start;"><br /></em></div>
<em class="markup--em markup--p-em" style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-feature-settings: "liga", "salt"; font-size: 21px; letter-spacing: -0.063px; text-align: start;">
<div>
</div>
</em></td></tr>
</tbody></table>
<div class="graf graf--p graf-after--p" id="041d" name="041d" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px; text-align: start;">
Telegram not only offers close to the capabilities of WhatsApp but also the usability experience and other form factors are as same as that of WhatsApp along with the cloud storage.</div>
<div class="graf graf--p graf-after--p" id="041d" name="041d" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px; text-align: start;">
<em class="markup--em markup--p-em" style="font-feature-settings: "liga", "salt"; letter-spacing: -0.063px;">Figure 2b</em><span style="letter-spacing: -0.063px;">. Telegram desktop app.</span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHd-F0cCkagZJejbNaKXSMnuSHSOBO5WL8vKvqaQyddI2fVuOhQEvnMelJM04mgBrTGTRtQRqL-DGsd4-NHPG1NOYG2sizdGDgY-penm0gAPKJAGQszNtywgRBxP1czFRtw8LU8Xu6gXc/s1600/telegram_desktop_app.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="875" data-original-width="1400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHd-F0cCkagZJejbNaKXSMnuSHSOBO5WL8vKvqaQyddI2fVuOhQEvnMelJM04mgBrTGTRtQRqL-DGsd4-NHPG1NOYG2sizdGDgY-penm0gAPKJAGQszNtywgRBxP1czFRtw8LU8Xu6gXc/s1600/telegram_desktop_app.jpg" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.8px;">Telegram desktop app — chats, groups & messages.</td></tr>
</tbody></table>
<div>
<br /></div>
<div class="graf graf--p graf-after--figure" id="f3e0" name="f3e0" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 38px; text-align: start;">
Pros :</div>
<ul class="postList" style="background-color: white; color: rgba(0, 0, 0, 0.84); counter-reset: post 0; font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 20px; list-style: none none; margin: 29px 0px 0px; padding: 0px; text-align: start;">
<li class="graf graf--li graf-after--p" id="13dd" name="13dd" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">offers individual chat.</li>
<li class="graf graf--li graf-after--li" id="8afd" name="8afd" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">group chat.</li>
<li class="graf graf--li graf-after--li" id="2bf2" name="2bf2" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">allows media uploads.</li>
<li class="graf graf--li graf-after--li" id="5edd" name="5edd" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">search individual & all messages.</li>
<li class="graf graf--li graf-after--li" id="6375" name="6375" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">allows multiple messages forwards to multiple groups.</li>
<li class="graf graf--li graf-after--li" id="26b7" name="26b7" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">seamless interoperability with the desktop version. Apps available for popular mobile platforms like iOS, Android, Windows Phone & desktop platforms like Windows, Mac & Linux. Access desktop version without switching on the mobile version unlike WhatsApp, which demands mobile internet to be enabled on the installed device.</li>
<li class="graf graf--li graf-after--li" id="6fb0" name="6fb0" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 0px; margin-left: 30px;">media files deleted in mobile and desktop to free up storage space can be retrieved later from the servers as media and messages are stored in cloud i.e. in Telegram servers.</li>
</ul>
<blockquote class="graf graf--blockquote graf-after--li" id="60b1" name="60b1" style="--baseline-multiplier: 0.17; background-color: white; border-left: 3px solid rgba(0, 0, 0, 0.84); color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; font-style: italic; letter-spacing: -0.003em; line-height: 1.58; margin: 29px 0px 0px -23px; padding-bottom: 2px; padding-left: 20px; text-align: start;">
Auto-deletion of media in mobiles and desktop with appropriate settings to free up storage space. In order to do that, change the default settings of Keep Media from forever to 3 days as shown below( Setttings -> Data and Storage -> Storage usage -> Keep Media). Though deleted, these media are stored in cloud, can be retrieved later from Telegram Servers. This prime feature of Telegram addresses the limitation imposed by WhatsApp.</blockquote>
<br />
<br />
<div class="graf graf--p graf-after--p" id="041d" name="041d" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px; text-align: start;">
Telegram not only offers close to the capabilities of WhatsApp but also the usability experience and other form factors are as same as that of WhatsApp along with the cloud storage.</div>
<div class="graf graf--p graf-after--p" id="041d" name="041d" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px; text-align: start;">
<em class="markup--em markup--p-em" style="font-feature-settings: "liga", "salt"; letter-spacing: -0.063px;">Figure 2c</em><span style="letter-spacing: -0.063px;">. Telegram Storage Usage auto clearing media files.</span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiioga7MILD6smtFCtBS2fQ6Q2VbuCXlRJRsFBarWGm0aNEANB3ZfTgtFHR4DlgOvpx_Nx0Px49_SPwyfdOzrDwh3UQJbiSETLIB2I3nwb6ixyai5EUugaH-9HMbftbSL4oMj6GLFtGXHY/s1600/telegram_media_storage.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="900" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiioga7MILD6smtFCtBS2fQ6Q2VbuCXlRJRsFBarWGm0aNEANB3ZfTgtFHR4DlgOvpx_Nx0Px49_SPwyfdOzrDwh3UQJbiSETLIB2I3nwb6ixyai5EUugaH-9HMbftbSL4oMj6GLFtGXHY/s1600/telegram_media_storage.jpg" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.8px;">Telegram Clearing Storage Space Settings. © Image source — <a class="markup--anchor markup--figure-anchor" data-href="https://i.imgur.com/HRU8Daq.jpg" href="https://i.imgur.com/HRU8Daq.jpg" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: white; background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; font-family: medium-content-sans-serif-font, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Arial, sans-serif; font-size: 16px; text-decoration-line: none;" target="_blank">https://i.imgur.com/HRU8Daq.jpg</a></td></tr>
</tbody></table>
<div class="graf graf--p graf-after--p" id="041d" name="041d" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px; text-align: start;">
<em class="markup--em markup--p-em" style="font-feature-settings: "liga", "salt"; letter-spacing: -0.063px;">Figure 2d</em><span style="letter-spacing: -0.063px;">. Telegram Storage Usage using desktop app(Settings -> Advanced).</span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_7tAzpalzTgtzD3spqHppxsUlj5UeeF8It8Z5_fi3FEDWv1xRAywu-3qNeXKol_NJkiMcQSpGm87q1mHHh-61-MvAviJjrP8qT495BZ72OX6cmbeO8Zcp2PCm0Hd7VkRdnJqqbhZpJv8/s1600/telegram_media_storage_dekstop.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="727" data-original-width="1363" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_7tAzpalzTgtzD3spqHppxsUlj5UeeF8It8Z5_fi3FEDWv1xRAywu-3qNeXKol_NJkiMcQSpGm87q1mHHh-61-MvAviJjrP8qT495BZ72OX6cmbeO8Zcp2PCm0Hd7VkRdnJqqbhZpJv8/s1600/telegram_media_storage_dekstop.png" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.8px;">Telegram Storage Space Settings. © author</td></tr>
</tbody></table>
<div class="graf graf--p graf-after--figure" id="ab46" name="ab46" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 38px; text-align: start;">
Cons:</div>
<ul class="postList" style="background-color: white; color: rgba(0, 0, 0, 0.84); counter-reset: post 0; font-family: medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; font-size: 20px; list-style: none none; margin: 29px 0px 0px; padding: 0px; text-align: start;">
<li class="graf graf--li graf-after--p" id="8b22" name="8b22" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">requires a mobile number to sign in.</li>
<li class="graf graf--li graf-after--li" id="7f52" name="7f52" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">does not support video call at the moment.</li>
<li class="graf graf--li graf-after--li" id="fa48" name="fa48" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">does not support <a class="markup--anchor markup--li-anchor" data-href="https://www.recode.net/2017/2/20/14663674/whatsapp-rolling-out-version-snapchat-instagram-stories" href="https://www.recode.net/2017/2/20/14663674/whatsapp-rolling-out-version-snapchat-instagram-stories" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: transparent; background-image: linear-gradient(to right, currentcolor 100%, currentcolor 0px); background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; text-decoration-line: none;" target="_blank">Snapchat’s stories</a> feature at the moment(they might roll out in near future).</li>
<li class="graf graf--li graf-after--li" id="507e" name="507e" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 14px; margin-left: 30px;">no mobile web access.</li>
<li class="graf graf--li graf-after--li" id="947c" name="947c" style="--baseline-multiplier: 0.17; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-bottom: 0px; margin-left: 30px;">Uses homegrown MTproto protocol for encryption.</li>
</ul>
<div style="text-align: left;">
<div class="graf graf--p graf--hasDropCapModel graf--hasDropCap graf-after--li" id="1e10" name="1e10" style="--baseline-multiplier: 0.17; background-color: white; clear: left; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
<span class="graf-dropCap" style="display: block; float: left; font-family: , "lucida grande" , "lucida sans unicode" , "lucida sans" , "geneva" , "arial" , sans-serif; font-size: 72px; font-weight: 600; letter-spacing: -0.03em; line-height: 0.83; margin-bottom: -0.08em; margin-left: -5px; margin-right: 7px; padding-top: 6px; position: relative;">If</span>you ask my personal opinion of which tool to use, I would suggest opting Telegram for close-knit circles, that keeps users at fidgety and keep Facebook messenger for extended circles.</div>
<div class="graf graf--p graf-after--p graf--trailing" id="739a" name="739a" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
<span class="markup--strong markup--p-strong" style="font-weight: 700;"><em class="markup--em markup--p-em" style="font-feature-settings: "liga", "salt";">Note </em></span><em class="markup--em markup--p-em" style="font-feature-settings: "liga", "salt";">— The intent of the post is not make you quit WhatsApp and uninstall from the phone. Apart from lamenting on the problem of inability to retrieve media content at a later point in time and polluting the phone memory, have suggested suitable alternatives to overcome the limitation of WhatsApp.</em></div>
<div class="graf graf--p graf-after--p graf--trailing" id="739a" name="739a" style="--baseline-multiplier: 0.17; background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; font-size: 21px; letter-spacing: -0.003em; line-height: 1.58; margin-top: 29px;">
This story was originally published in <a href="https://medium.com/@hariharank12/facebook-messenger-and-telegram-are-the-solutions-for-whatsapp-problems-1fdfe5d7a4ef">https://medium.com/@hariharank12/facebook-messenger-and-telegram-are-the-solutions-for-whatsapp-problems-1fdfe5d7a4ef</a></div>
</div>
<span style="font-size: 12.8px;"><br /></span>
<span style="font-size: 12.8px;"><br /></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr></tr>
</tbody></table>
<br /></td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><br /></td></tr>
</tbody></table>
<span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;"></span></div>
<div>
<span style="background-color: white; color: rgba(0 , 0 , 0 , 0.84); font-family: , "georgia" , "cambria" , "times new roman" , "times" , serif; font-size: 21px; letter-spacing: -0.063px;"><br /></span></div>
</div>
</div>
hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0tag:blogger.com,1999:blog-3733815863264238850.post-67581637314140059452016-11-23T17:43:00.000-08:002016-12-04T16:45:09.101-08:00One dollar solution to avoid null pointer exception in Java<div dir="ltr" style="text-align: left;" trbidi="on">
<div pid="280" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
This post is all about the null pointer exception, which we usually counter in our everyday programming. Before diving into the nitty-gritty of null, I want to go into why I named my post the $1 solution to avoid the null pointer exception.</div>
<div pid="281" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
<a href="https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare" rel="nofollow" style="background: transparent; box-sizing: border-box; color: #0288d1; text-decoration: none;">Tony Hoare</a> invented the null reference, later admitting that it was a billion-dollar mistake. Rather than making the same mistake of a null dollar solution, it would be apt to title my post the $1 dollar solution.</div>
<div pid="282" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
Let's consider an example for the paid dollar:</div>
<span style="font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">T t = null;</span><br />
<br />
<span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;">What do we actually mean here? Is 'null' a type of T or its subtype? It is just as valid a piece of code as typing what's below way and expecting the compiler to work for us.</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">T t; // compiler compels me to assign, huh?</span><br />
<div pid="288" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
Now, the variable 't' is just a reference without any object. 'Null' just explicitly endorses that convention. Accessing any of the properties of 'T' would make the compiler spew the famous 'NullPointerException.'</div>
<div pid="290" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
I recently got to know about the various remedies offered to salvage this problem. Among them is a way introduced in Java 8. My views vary slightly from the principles introduced. I was expecting Oracle to come up with a Null-Safe operator, similar to the Ternary operator, but again, they messed up and made another instance similar to bloated JEE non-wisdom stack.</div>
<div pid="292" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
Rather than me ripping that apart, let's head straight to some examples. Consider three classes A, B, and C, with A having a collaborator B and B having C:</div>
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">class A {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private B b;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> public B getB() {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> return b;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">class B {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private C c;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> public C getC() {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> return c;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">class C {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private int count = 0;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> public int getCount() {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> return count++;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<br />
<span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;">The general null check would be:</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">if(null != getA() && null != getA().getB() && null != getA().getB().getC()) {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> LOGGER.debug("The count is ", getA().getB().getC().getCount())</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">}</span><br />
<br />
<span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;">But using a null-safe operator like the one we have in Groovy...</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">int times = getA() ?. getB() ?. getC() ?. getCount();</span><br />
<br />
<span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;">Elvis' operator goes even further in returning the default value if it's null,</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">int times = getA() ?. getB() ?. getC() ?. getCount() ?: 0</span><br />
<br />
<span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;">Isn't it simple and natural? But </span><a href="http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html%20As%20per%20Optional%20syntax%20in%20Java%208,%20it%20becomes" rel="nofollow" style="background: rgb(255, 255, 255); box-sizing: border-box; color: #0288d1; font-family: Georgia, serif; font-size: 19px; text-decoration: none;" target="_blank">Java </a><span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;">complicated their design by compelling us to wrap it with the Optional<> construct and relying on flatMap and streams, thereby fabricating and garnishing code more with angle brackets.</span><br />
<span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">a.flatMap(A::getB).flatMap(B::getC).map(C::getCount).orElse(0)// internally using if?</span><br />
<br />
<div pid="307" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
A mix of flatMap and scope resolution operators make the code cluttered and unreadable. But in the interest of doing more that viciously attacking null pointer exceptions, I just want to consciously be aware of null checks and their consequences when coding.</div>
<div pid="309" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
In fact, I love the design of the Kotlin language — keeping their design simple and straight, admiring the KISS principle.</div>
<div pid="311" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
Now, what if I use Java and still want to find a cleaner way of doing? Of course, we use IntelliJ or Eclipse, we can customize them to work for us by using annotations provided by them. Below, we'll get into how to use them and customize their severity level.</div>
<br />
<b>Using Intellij</b><br />
<br />
<div pid="315" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
IntelliJ provides two annotations, @Nullable and @NotNull.</div>
<div pid="317" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
How and when do we use the above two annotations?</div>
<div pid="319" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
For Java primitives, sensible defaults should be returned as something akin to 0, false, StringUtils.Empty.</div>
<div pid="321" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
For non-primitives, the method should convey the possibility of returning null. For example:</div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">@Nullable </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">findEmployeeById(int EmployeeNo) // may return null if there are no employee with the number</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">@NotNull</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">getCoursesOffered() // returns list of courses offered by a university which can be never null.</span><br />
<br />
<div pid="329" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
The<em style="box-sizing: border-box;"> findEmployeeById</em> method has to be annotated with @Nullable, and <em style="box-sizing: border-box;">getCoursesOffered </em>should be annotated with @NotNull. It means that IDEs will enforce checking for null when <em style="box-sizing: border-box;">findEmployeeById </em>is used, and the null check would be redundant for <em style="box-sizing: border-box;">getCoursesOffered</em>.</div>
<div pid="331" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
The below picture (click on the pictures to get the full view) shows how to make use of @Nullable and @NotNull for the first example that we looked at. Just annotate the method with the respective annotation, and you get to see the warnings/errors. Picture #3 shows how to customize the severity of the Nullable warning message.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2nCNiNkYi_ZYSl0gDhapp26dWsOyte7_vDy_GquNGTh_U3tJO9t_zN5IdSkh6288MTIZ-Zd4nwVq5JGzaolJ6Cp1-tbTqj8-uvKm68CwHsS3ow59mbKo2TeMW1Dm3T5nxNVXUXH6CvLo/s1600/intellij_idea_error_warning_nullPointer_blog_01_warning.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2nCNiNkYi_ZYSl0gDhapp26dWsOyte7_vDy_GquNGTh_U3tJO9t_zN5IdSkh6288MTIZ-Zd4nwVq5JGzaolJ6Cp1-tbTqj8-uvKm68CwHsS3ow59mbKo2TeMW1Dm3T5nxNVXUXH6CvLo/s1600/intellij_idea_error_warning_nullPointer_blog_01_warning.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbskDWeUg7yVNCXejVu-BD10Vjej17-rbJ8tkbE14YX82zfsurQrwZu8Vg67y1Q4hUhvi7-1v-OuICOicL4OQQaS0tYQxTBaPlceERBcG5lYQnFDrodpBRul89-MNTF31KSHLTU5D-fSY/s1600/intellij_idea_error_warning_nullPointer_blog_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbskDWeUg7yVNCXejVu-BD10Vjej17-rbJ8tkbE14YX82zfsurQrwZu8Vg67y1Q4hUhvi7-1v-OuICOicL4OQQaS0tYQxTBaPlceERBcG5lYQnFDrodpBRul89-MNTF31KSHLTU5D-fSY/s1600/intellij_idea_error_warning_nullPointer_blog_02.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3XPOy-FpS06a_DWIsiRTSLxWbzlCxowyS5mV5bR9B4B9ah2H1765_rpET_wD4-UWkoYMyU4sIg6cXJJyjSMXnzQ_xi0UWRBSA8XjNP5iRXwnh2BM1pItIffZtNU_STuJxElwkqnLXx_0/s1600/intellij_idea_error_warning_nullPointer_blog_03_error.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3XPOy-FpS06a_DWIsiRTSLxWbzlCxowyS5mV5bR9B4B9ah2H1765_rpET_wD4-UWkoYMyU4sIg6cXJJyjSMXnzQ_xi0UWRBSA8XjNP5iRXwnh2BM1pItIffZtNU_STuJxElwkqnLXx_0/s1600/intellij_idea_error_warning_nullPointer_blog_03_error.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4M6S07EmFK1oX9OaMKAxjk0v-9NtnnLG4SuXmR7f3JLLNDrGWC1T3uXZKkE5EEZV2pLQbU6QT55rr82tVLKOWps_veZ3-Py-zxNpqnfMeC8Eb0LW8Nzq5hDTLSWEuSuro32dB1YzPH2s/s1600/intellij_idea_error_warning_nullPointer_blog_04_corrected_code.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4M6S07EmFK1oX9OaMKAxjk0v-9NtnnLG4SuXmR7f3JLLNDrGWC1T3uXZKkE5EEZV2pLQbU6QT55rr82tVLKOWps_veZ3-Py-zxNpqnfMeC8Eb0LW8Nzq5hDTLSWEuSuro32dB1YzPH2s/s1600/intellij_idea_error_warning_nullPointer_blog_04_corrected_code.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC6yxCCsCl5h6VqZo9hc-mFUfNBEUGyP6eHBrjaV56xo3edmgmHzdQQC6z7Ez_6u8g5SAzzYWP_8bVoSN7LiGkGKxO5jFHeK3OWTL1ThTRtZbjznwpWEVf69bKH-UOWPv71d7cQ_8DIM0/s1600/intellij_idea_error_warning_nullPointer_blog_05_maven_imports.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC6yxCCsCl5h6VqZo9hc-mFUfNBEUGyP6eHBrjaV56xo3edmgmHzdQQC6z7Ez_6u8g5SAzzYWP_8bVoSN7LiGkGKxO5jFHeK3OWTL1ThTRtZbjznwpWEVf69bKH-UOWPv71d7cQ_8DIM0/s1600/intellij_idea_error_warning_nullPointer_blog_05_maven_imports.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div pid="343" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
Depending on the severity level we set, the compiler in IntelliJ can show us Warning or Error upon inspection, highlighting the syntax.</div>
<div pid="344" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
Once the respective null checks/redundant check is placed/removed, the IntelliJ warning messages start to fade off.</div>
<br />
<b>Using Eclipse</b><br />
<span style="background-color: white; color: #262626; font-family: Georgia, serif; font-size: 19px;">For programmers who use Eclipse and reluctant to deprecate it for some reasons, it also provides two annotations @Nullable and @NonNull. The below pictures shows how to make use of @Nullable and @NonNull in eclipse and hopefully it should be self-explanatory.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-2I9Xbz1KHUSYz-A_DEtX_ZnFBrFXhAL4sNaCNBiPFgIDdUmWCyEL3J7VVMHqMjb9FIyFohcMEA6NAfLXybTJwBgu_EF37JKqzPUBsTdXn76_upwHyT4PzI4fNoQxPHscoSMcfEig4nM/s1600/eclipse_error_warning_nullPointer_blog_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-2I9Xbz1KHUSYz-A_DEtX_ZnFBrFXhAL4sNaCNBiPFgIDdUmWCyEL3J7VVMHqMjb9FIyFohcMEA6NAfLXybTJwBgu_EF37JKqzPUBsTdXn76_upwHyT4PzI4fNoQxPHscoSMcfEig4nM/s1600/eclipse_error_warning_nullPointer_blog_01.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhaZ38HgPG7WRd3KGRIqRAsppQCeQcdVupMWGJ55-LUu6HqePx4w3U9aYzf4BsPnTLS4D9nG1jeea3FH6-TXdD9OLxGFQPqnsor3J60jRV8cVQmB5Dl723oAUt5tMtd2Bp1KIIs3gA3tY/s1600/eclipse_error_warning_nullPointer_blog_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhaZ38HgPG7WRd3KGRIqRAsppQCeQcdVupMWGJ55-LUu6HqePx4w3U9aYzf4BsPnTLS4D9nG1jeea3FH6-TXdD9OLxGFQPqnsor3J60jRV8cVQmB5Dl723oAUt5tMtd2Bp1KIIs3gA3tY/s1600/eclipse_error_warning_nullPointer_blog_02.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcoZ5i8WCdq6_UW91bvksmyFtBlnzTscxSX2ANqCxiyPdZdQUENmv49jIVgL-R0wMIOtpCpwH-S9lFIF4QlzIhp0YuRJ796z8uY3WA_M-pA8yhUlgdxiFUEMRo1TB_RB22VauymhOS7HU/s1600/eclipse_error_warning_nullPointer_blog_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcoZ5i8WCdq6_UW91bvksmyFtBlnzTscxSX2ANqCxiyPdZdQUENmv49jIVgL-R0wMIOtpCpwH-S9lFIF4QlzIhp0YuRJ796z8uY3WA_M-pA8yhUlgdxiFUEMRo1TB_RB22VauymhOS7HU/s1600/eclipse_error_warning_nullPointer_blog_03.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5PMC2NIFit-gtU2yloF30rk5n1CHELNChmfExY0y2vCzh0NZ7cnQYX_YG6_UmevD4JFhsQI1gjefzOmHo_eO6iuY0ohkS5Hhh7tlNRVIyq8chKqmezkb_Qn-4zJh-1Wk7NgWZ_8VzcW0/s1600/eclipse_error_warning_nullPointer_blog_04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5PMC2NIFit-gtU2yloF30rk5n1CHELNChmfExY0y2vCzh0NZ7cnQYX_YG6_UmevD4JFhsQI1gjefzOmHo_eO6iuY0ohkS5Hhh7tlNRVIyq8chKqmezkb_Qn-4zJh-1Wk7NgWZ_8VzcW0/s1600/eclipse_error_warning_nullPointer_blog_04.jpg" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQOY9WJn0kj9hw0Q5n08RurTUYNEkMvufUTZvlEFARgmidQAMfFbnhMJ011NaVOVyyF_OtZT5byesyavvoUyuyDXHbNLqt6wCuqjeWG5qtxQQDbRDBaJwSUPXrO7f2NcnxBt9xWHf1ips/s1600/eclipse_error_warning_nullPointer_blog_05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQOY9WJn0kj9hw0Q5n08RurTUYNEkMvufUTZvlEFARgmidQAMfFbnhMJ011NaVOVyyF_OtZT5byesyavvoUyuyDXHbNLqt6wCuqjeWG5qtxQQDbRDBaJwSUPXrO7f2NcnxBt9xWHf1ips/s1600/eclipse_error_warning_nullPointer_blog_05.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div pid="368" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
<strong style="box-sizing: border-box;">Note</strong>: Despite encapsulating the code with a null check, the warning messages in Eclipse would continue to remain undisciplined, not like IntelliJ, where it uses its own brain deciding to display the message. </div>
<div pid="370" style="background-color: white; box-sizing: border-box; color: #262626; font-family: Georgia, serif; font-size: 19px; margin-bottom: 15px; margin-top: 5px; padding-top: 0px;">
I hope this helps keep log files pretty and ease the work for operational engineers!</div>
<div>
<br /></div>
</div>
hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com3tag:blogger.com,1999:blog-3733815863264238850.post-85235748411739501242014-03-12T17:42:00.001-07:002014-03-12T17:43:43.582-07:00Delicious social bookmarking Addon for firefox from Yahoo and AVOS<div dir="ltr" style="text-align: left;" trbidi="on">
Many products for a given objective always enrages fierce competition and comparison which results consumers bewildered.<br />
<div>
<br /></div>
<div>
Post browser war, one compelling reason that mandates me to use firefox browser is, presence of standard addons which sets itself distinguished from others. eg - firebug where the same variants in other browser is yet to yield the kind one experiences in firefox.</div>
<div>
<br /></div>
<div>
Earlier where I was insane in promoting Ubuntu and Firefox to every mammal in this terrestrial, they lack fundamentals like driver problems with ubuntu linux and firefox plugin update. The only alternative is to go for mac and safari/chrome browser.</div>
<div>
<br /></div>
<div>
Meanwhile, for the users who still pertain to firefox, there was an social bookmarking addon 'Delicious' and it is no more available in firefox addon repository. Intially Yahoo bought delicious to wet their users with social products and could not make butter out of water. Later AVOS ghastly bought delicious bookmarks and tortures its users with their rough skins. Only savior is to use firefox addon, to get rid of horrible skins. Now even that has been chopped.</div>
<div>
<br /></div>
<div>
For internet addicts, who install firefox fresh and crave for delicious addon in firefox repository, I believe post google search would land you here.</div>
<div>
<br /></div>
<div>
Download zip file and rename the extension to xpi. Hopefully this should work!! Enjoy!</div>
<div>
<br /></div>
<div>
<a href="https://sites.google.com/site/hariharank12/delicious-firefox-addon-xpi">Firefox social bookmark Addon</a></div>
<div>
<br /></div>
<div>
<br /></div>
</div>
hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com4tag:blogger.com,1999:blog-3733815863264238850.post-60958153307647629872013-01-13T17:59:00.000-08:002013-01-13T17:59:07.653-08:00Nasty Skepticism<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<br />
<br />
Though a non technical post, a series of
post about questioning traditions and blind belief, myth, in the name of
skepticism, made me to write about meta-skepticism. <br />
<br />
Skepticism being a hot cake in today's DNA, younger generation feels as if they have found and executed some ground breaking idea by calling themselves skeptic. If I interrogate and inspect, I tend to not to phew-phew their illiteracy and ignorance.Their skepticism is all about questioning the tradition, which is according to them defined by some wave length. I mean they try to question the wearing of under wears imposed by their fathers. When they spew some few questions about religions and Lord Ram without basic understanding of any, they raise their T-shirt collar and say to the world "I am far more superior than any one else. Even Einstein(pity fellow just invented e=mc^2 and not knowing to pull the threads of Hinduism) or Jagadish chandra bose(Unsung Hero) is under my feet". High time sigh no, when we endure in to million number of problems and nuke our skepticism?<br />
<br />
Everyone wants to become popular right from Anna Hazare to Nonda Bizarre. But ways of becoming popular only comes not more than two ways. One really really being a prodigy, living for and breathing it like Steve Jobs, Tesla, Ramanujam, Sachin, G.D.N. The other cheap way is plunging in to some controversies, delivering their verdict with out knowing what it is(A beautiful vadivelu comedy where he tries to mediate in selling second hand bike, having no clue about it). Recent storms by Lawyer Mr. Ram jethmalani about Lord Ram and <a href="http://www.mediacrooks.com/2012/11/is-cnn-ibns-ftn-most-enduring-stupidity.html#.UPNZISDEP5W">Priya Ramani</a> about her take on Ram worship, fit the latter. What all they need is the sheer publicity, gaining traction in the media. If I conduct a exam on Hinduism, most of the folks who write in TNIE, Livemint, would deliberately fail even to score a decent failure rank. Their idiotic skepticism never helps them to realize that they are digging out a buried set of values and popularizing it. Of course, comedian exist in many forms not only actors. <br />
<br />
When Atheism meeting happens around my area, they applaud Ravan, by accusing Ram without even knowing that Ravan is a devotee of Lord Shiva. Kamal haasan rationalism is another ultimate high, where Dosa-avatharam movie is alone enough to combat his atheism. Other skeptic thoughts(they are calling that way, don't blame me) were male chauvinism that Hindu religion supports, blaming Indian Origin and tradition quite often. Perhaps India is a democratic secular country no, where govt sponsors money for the religions apart from Hindu and at times giving a heavy blow to Hinduism. India almost being made absurd by politicians, our so called skepticians take advantage of that and post their voice, adding some spice to it. My post here is not to give explanation for Ram Jethmalani or Priya Ramani questions, but to reveal their bruises on their skepticism. My understanding of their bruises more or less fell in to the pattern I am about to describe below,<br />
<br />
- A rational mind is about solving fundamental problems, worrying about present and solving the problems that future generation needs. But their skepticism is about choking tradition. Sigh!<br />
<br />
- Their skepticism of taking illegal untested drugs from multinationals, usually claiming lives of people. Further, accepting pluto as a planet and hiding a pumpkin - Kappa Adromedae in the system.<br />
<br />
- Having dis-taste for purity in Carnatic Music and enjoying pure Beethoven and Mozart classics. Knowing not to appreciate sheer brilliance of St. Muthuswami Dikshathar, but beethoven. Skepticism is not about to question Western, if India and Indian, then OK. <br />
<br />
- Having a Mac book/Mac air with a highly coupled Mac OS, Apple being a biggest monopoly player, and cribbing about Microsoft. Waw! what a skepticism?<br />
<br />
- Literate/IT professionals are the biggest players of Polythene bags. Shop vendors find tough to sell and convince customers without plastic bags, where an tribal in Yelagiri knows his right not to sell bags and harm environment. Wow! What an skepticism of our urban?<br />
<br />
- Kancha ilaiah says Lord Ram is a killer and being regarded as a epic hero where he shot down Ravan and saved Seeta, though Ravan did nothing to seeta, besides Lakshmana cutting Surpanakha's nose. Kancha ilaiah's skepticism guarantees every one has right to kidnap his wife and can keep her safe and he would not mind it.<br />
<br />
- A popular blogger, who dismissed Telecom Raja's scam, saying everyone has Raja inside, brave what a skepticism!. His skepticism says large quadrants of money and infinitesimal amount are equal and identical.<br />
<br />
- Kalaignar's rationalism where he knows to make trips to center to demand cabinet position for his family members and not for tamil Elam. What a Periyar Rationalism. Probably his rationalist Guru Periyar might have come in his dreams asking him to distribute free TV and shut off the power supply so that programs aired on his kalaignar TV programs could be well received with TiPi technology(Television without power).<br />
<br />
- Government which privatized educational sector and under took TASMAC as a govt sector. Their skepticism is nothing much apart from producing solid waste of 21 year old talents, unless the students themselves masturbate their minds.<br />
<br />
- Central Govt started imposing restrictions on Cylinders, Electricity, hike in fares. Life sophistication became significant, some how appliances was capitalized in the name of civilization. Money has been swindled and swallowed. now its time to de-civilize and de-generate. Their skepticism is just watch it.<br />
<br />
- Our cultural, scientific innovations and urbanization has lead to a million dozen problems, climate crisis, global warming, weak monsoons. Water and breathing air are being bought at cost. Mr. Ratan Tata being nano in thought, worries about nano being not parked in everyone's house. Every innovative solution as well creeps problems too. Skeptic ones calls this as 'life transformation'. <br />
<br />
- Go green initiatives in the IT sector is high time comedy, where their periodic mail about raising awareness on greenness frequently crashes my unstable outlook(outlook will be adamant some times not receiving it, some how sensing my pulse). Gandhi Mahatma, started Khadi to preserve villages, people and nai talim movement is one enough to alleviate problems. Whereas corporate skepticism is all about building and polluting urban by dumping people and more screw one's life.<br />
<br />
Last take, skepticism is all about what one has been destined for, doing it right, give something to this world, country, this people, working for the benefit and up liftment of community. More essentially 'Simple Living and High Thinking'. Living examples, Bhagat singh, Subash Bose, Narendra Modi. But the people and skepticism I am talking about just just reveals their weakness where they need pillars of Hinduism and Hindu Gods for their cheap publicity and gaining popularity. My meta-skepticism says this vastness, diversity won't usually allow them having long, just to troll on the subjects they are empty at and increase idiotic follower count.<br /><br />
- Finally be skeptic enough such that when I release TortoiseMQ, be
mind that it would not run slower than RabbitMQ just because of name. Ha Ha<br />
<br />
<br />
</div>
hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com1tag:blogger.com,1999:blog-3733815863264238850.post-44010095957653231272012-09-19T10:29:00.001-07:002012-09-19T10:52:19.281-07:00Scala Functions Apply<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
This is a short post about sweet spots of scala functions such as apply, update and case classes using these constructs.<br />
<br />
Coming from a Ruby world, developers usually snub at Java claiming Javascript and Java, substring of JS are a mere naming coincidence, without any functional relations. Hmm, perhaps recent hot cake Functional programming which has been tombed in Egypt several thousand years back is a mirage in Java community, where java is targeted for non functional, non mathematical people, who well mutate everything in their life apart from Java. Apparently some serious thought breakers ice sandwiched Java and started exploding JVM that catered to beautiful languages like Scala and Clojure.<br />
<br />
Scala bieng a functional language believes in functions being first class citizens with a slight mix of object oriented programming orthogonal to it. This helps in writing clean, concise, expressive code.<br />
<br />
Here are some experiments by firing scala REPL, <br />
<br />
To define an anonymous function,<br />
<pre class="ruby" name="code">val cube = (x:Int) => x * x * x
#cube: (Int) => Int = <function1>
cube(5)
#125
</pre>
Its clear that it takes an argument Int and returns an Int. Further we can explicitly specify return type say Double,<br />
<pre class="ruby" name="code">val cube: (Int) => Double = (x) => x * x * x
#cube: (Int) => Double = <function1></pre>
When I started exploring function1, I landed on to interesting landscape, behind the scenes scala does million number of things by providing this sugar coated pill.<br /><br />function1 is actually an interface with apply method and anonymous class out of it is created copying the method definition inside apply method. In fact the above cube function could be written in this way too,
<pre class="ruby" name="code">val cube: Function1[Int, Double] = (x) => x * x * x
#cube: (Int) => Double = <function1>
cube.apply(5)
#res2: Double = 125.0
cube(5)
#res3: Double = 125.0</pre>
look how scala beautifully desugars cube(5) to cube.apply(5).<br />
<br />The Function1 would probably be a interface like this
<pre class="java" name="code">public interface Function1<A, B> {
B apply(A a)
}</pre>
and creating anonymous class at runtime, copying method definition inside apply method like below(note - below I refer Scala types and not Java)
<pre class="ruby" name="code">
cube = new Function1<Int, Double>() { Double apply(Int a) { a * a * a }}<br />cube.apply(5) #actual way<br />cube(5) #sugar coated pill in Scala</pre>now if I have a polynomial equation, say x^2 + y^2 the thing would be even more beautiful,<pre class="ruby" name="code">val square: Function2[Int, Int, Double] = (x, y) => x * x + y * y<br />#square: (Int, Int) => Double = <function2><br /><br />square(4,5) #square.apply(4,5)<br />#res0: Double = 41.0</pre>The deduction here is, if n is the size of arguments with last being return type, then the interface name would be function{n-1}.<br /><br />In the last example we had two unknown variables x, y and return type - hence Function2. <br /><br />In fact any class with apply method works same way,<pre class="ruby" name="code">class ApplyTest {<br /> def apply(in: Int) = in + in.toString<br />}<br /><br />val applyTest = new ApplyTest()<br />#applyTest: ApplyTest = ApplyTest@5292e6<br /><br />applyTest(5) #applyTest.apply(5)<br />#res0: String = 55</function2></int></div></pre>
<h4>Usage of apply method in real time applications</h4>
apply function syntactic sugar could be used to fetch domain object or model object from a singleton, example
<br />
<pre class="ruby" name="code">
object Employee {
def apply(id: Int) = "retrieving from database employee object id " + id
}
<br />Employee(5)
#res1: java.lang.String = retrieving from database employee object id 5</pre><br />
There is another sugar coated pill in scala - update function which I will cover it in next post.
<br /></div>
hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0tag:blogger.com,1999:blog-3733815863264238850.post-26267874906030262482012-06-17T04:15:00.001-07:002012-06-17T04:15:51.561-07:00to_proc working magic<div dir="ltr" style="text-align: left;" trbidi="on">
I had an interesting puzzle in ruby to capitalize words with in a string.<br />
<pre class="ruby" name="code">text = "this is an interesting blog post about to_proc"
text.split.map(&:capitalize).join ' '
# "This Is An Interesting Blog Post About To_proc"
</pre>
Just was nailing down the answer I got, with the internals wired.<br />
Normally single argument block comes after a map like this,
<br />
<pre class="ruby" name="code">{ |arg| arg.capitalize! }
</pre>
But how does ruby allows us to use syntactic sugar coated pill like passing a symbol to a map?<br />
Explanation can be found here, <a href="http://goo.gl/zZ5NA">symbol to_proc</a>.<br />
Need to smell some samples & create your own version of it? Here below...<br />
<pre class="ruby" name="code">class MyString < String
def double
self * 2
end
def triple
self * 3
end
def map_char(&p)
result = []
self.each_char do |c|
result << p.call(c)
end
result.join
end
end
name = MyString.new("hariharan")
#usual way
p name.map_char { |m| m * 2} # "hhaarriihhaarraann"
#syntactic sugar coated pill
p name.map_char(&:triple) # hhhaaarrriiihhhaaarrraaannn
</pre>
On whole, the mist here is class 'Symbol' has a to_proc method, that accepts object as an argument and passes the message of 'symbol' to that object.<br />
<br />
Stay tuned for my next blog about scala magic sugar coated stuff...<br />
<br /></div>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0tag:blogger.com,1999:blog-3733815863264238850.post-86609408025654105272012-02-04T07:15:00.000-08:002012-02-04T07:18:31.802-08:00Java 8 Lambda a terrible troll and Java is lame duck<div dir="ltr" style="text-align: left;" trbidi="on">
Nothing more to scare about the title, and more, this is not a post to slam or defamatory content against java. The Recent announcement about java 8 to support lambda and introduce functional programming abilities to java made me to wonder, really do we need this? Once my friend Mr.Balan said its Steve Jobs ,not apple and apple would had not been great without steve jobs. Its all about people who make things great rather than believing group or companies. <br />
<br />
Thanks to Mr. Cedric Beust whom I respect a lot, his outstanding creation TestNG. The title of this post is the tweet he mentioned on me noting 'Terrible troll' when I asked 'Why google endorses java and why not something better than it'. Google employee tweeted saying that 'Google would had invented java if not exist'. More, google employees does not show overwhelming response to new JVM/CLR languages like scala and clojure. However Cedric can write some disappointing post like coding in high level type system languages would eclipse if not using eclipse from <a href="http://beust.com/weblog/2011/02/23/from-scala-back-to-java/">scala back to java</a>. This post made my adrenaline going. In fact prestigious, proud ruby developers use vim, yes honest authentic passionate ruby developers use vim, while some use textmate for ruby coding. <br />
<br />
Then I looked back at my poor java announcement that any chance for atleast java 8 to swing the theories of Functional programming. But in vain, where my respected oracle developers traveled with camels to thar desert, sat under khejri tree, intensively thought about building expensive lambda islands in par to what Dubai tries to. Unfortunately they failed like creating Indian Mumbai building constructions with poor quality material. In 2002 C# finished chapter, Scala moreover finished in providing lambda in 2005. Then, what is the point in creating a huge buzz about lambda in java 8 by the year 2012, then saying 'Java will adopt C# syntax'? This should have been wisely copied or taken 8 years back.<br />
<br />
Java already screwed with some concepts like anonymous inner classes. Though I am not object oriented or based specialist, but really I could not connect with reality about class nesting inside a class. Can a person nest a person inside? If so what is the use of that. <br />
<br />
Actually speaking, this is what happens with sorting a collection, where comparable interface is implemented and collection.sort in turn calls the comparaTo method for status, to swap the element positions. But where is the thrill?<br />
<br />
Java 8 lambda is a lame duck. Because there are no first class functions. Functions are not senior citizens. Otherwords, its more or less same way of achieving to sort a collection by implementing comparable interface. Whereas in scala, functions are senior citizens. Let me get straight to examples.<br />
<br />
Open scala prompt, to find a minimum element in an list,<br />
<br />
<pre class="ruby" name="code">val values = List(1, 2, 3, 4, 5)
println(values.foldLeft(0) { (acc_res: Int, index: Int) => if(index < acc_res) index else acc_res }) <br />//prints 0
//To find maximum, (just change the comparison symbol :))
def maxi(acc_res: Int, index: Int) = { if(index > acc_res) index else acc_res }
println(values.foldLeft(0) { maxi }) //prints 5
</pre>
<br />
<br />
What the same to do in Java, to find the minimum element, comparable interface must be implemented or custom interface is created in favorite naming in favorite eclipse, that hangs windows xp for 5 mins, a method declared in interface, and then defined to return status in implementation class. Finally call made to implementation class that implements of type 'comparable' sort of interface(or custom interface)<br />
<br />
Now coming to Java 8 Lambda, serious comedy fuels, just look at the sample lambda program<br />
<br />
<pre class="java" name="code">
public class SimpleLambda {
interface HelloWorld {
void greet();
}
{
HelloWorld greeting = () -> System.out.println("Hello World!");
greeting.greet();
}
public static void main(String... args) {
new SimpleLambda();
}
}
</pre>
<br />
<br />
Type of anonymous functions or lambda? Its the same as interface.<br />
Hence interface should be defined prior to assigning a anonymous function which is not the intent of lambda in other languages.<br />
<br />
To add, a question already in heavy discussion on <a href="http://www.quora.com/Should-Oracle-declare-explicit-support-for-Scala-or-Clojure/answer/Joe-Samson?__snids__=33711368#ans985356">quora</a> for oracle to declare explicit support to scala instead of spreading fad.<br />
<br />
Since Java ones are tamarind to declarative programming, scala itself more sufficient.<br />
<br />
Microsoft .NET can better declare explicit support for clojure, as I believe C++ and C# programmers be intuitive and pick up clojure on CLR.<br />
<br />
James gosling intent of java is just to please the average coders, I am not one and you too.,,<br />
<br />
Enjoy functional programming, DSL and kudos to Scala and Clojure.</div>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com1tag:blogger.com,1999:blog-3733815863264238850.post-48124512778585484232011-11-13T15:42:00.001-08:002011-11-13T16:43:02.358-08:00Steve Jobs steamed well<div dir="ltr" style="text-align: left;" trbidi="on">
Being technology hypothetical and haunting web, I could see people honoring and paying tribute to some one who is no longer alive, to happy the conservatory ones(Remember Swiss bank) who tried to meta retweet, meta liked posts in facebook to let it know that it can relevantly push some Apple store Ads and halted at one point thinking no longer these buffaloes can be milked, as hands started paining. But if you think whom I am honoring here, i am delegating that to decide at your discretion.<br />
<br />
Steve Jobs, founder and CEO of Apple, who died recently pioneered the personal computer, though microsoft took over business in PC era. Quite dissatisfied by the Apple board directors, where his products intended to create for educational sectors didn't went well, forced Jobs to quite and start his new company Next. His new founded company developed a wide range of software and hardware. Company uprooted when Jobs could succeed by developing object oriented OS 'NextStep', that uses a hybrid kernel(monolithic of XNU and microkernel of Mach) and using Objective C, which took BSD(a Unix variant), modified at architecture level.<br />
<br />
This made Apple to realize and call back Jobs by acquiring his company 'Next'. Jobs return made Apple to raise its eyebrows by his stunning leadership qualities, where he is good at driving ideas and innovation, could figure out exactly what people needed and see implementation. One cannot forget the man behind iPod, iPhone, iPad(what next would be? iP*****;)) that took company to heights, revealing his product creativity genius. Jobs suffered from a rare form of pancreatic cancer, a terrible disease but he could sustain and extend his life span bit more due to latest medical innovations happening in that stream.<br />
<br />
One of his greatest strength - leadership being hostile to his employees by stripping down many unwanted products and conflicting ideas, which might have taken a stroll on Apples growth. Despite large insignificant number of mentions in social media streams to my dismay, his coveted, elite products went well with channeled marketing strategy. His notable incident include when ipod design was first rejected, not appealing his sensations when employee took the prototype to him. When employees remained unclear about the rejection, he put it on a water tank and notified them of water bubbles that occupied empty space, reaching bottom.<br />
<br />
On large, Dennis Ritchie was the man indirectly behind his(and many other) success, who created C language and Unix OS(which Steve Jobs took off the base for MacOS), where he also passed away following Jobs to super world, without knowing why he got less number of mentions. Without him, we would have not seen Windows, Linux, Minix, Mac and C++, C# and other languages. Hmm, you might say that's what applicative business mind is all about!.<br />
<br />
Jobs being identified on his own strength, nothing makes me to flirt, one - MacOS requiring extensive, expensive Hardware to run due to the inappropriate design, second - Objective C being informal OO language and irritating, clumsy development, third - not strategizing MacRuby and pioneering it as a mainstream Apple language, fourth - most important Apple could make products only for hi-fi business magnets who will be ready to spend money lavish, not for common ones. Though Jobs at small corner thumping minimal at my heart, I am deeply saddened by the death of Dennis Ritchie and how come can we forget G.D.Naidu and his contributions?<br />
<br />
<b>P.S</b> - It is also to be noted MacOS being greatly affected by virus more than windows, though systems lesser in number </div>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0tag:blogger.com,1999:blog-3733815863264238850.post-56738460074900217772011-08-17T11:06:00.000-07:002011-08-17T11:06:08.460-07:00Ruby GUI and FXRuby Installation<div dir="ltr" style="text-align: left;" trbidi="on">
Why about GUI and FXRuby all of a sudden?<br />
<br />
Its a tremendous movement we made from desktop to web 2.0 apps and again back to native desktop apps(iphone/ipad) Seesmic/Tweetdeck apps broadly classifying as RIA.<br />
<br />
Hence my long time dream, has been pondering about throwing the silver cup of Java swing and bringing platinum Ruby stones in GUI front, finding space in replacing existing legacy Java swing applications with a neat Ruby GUI like TK-Ruby.<br />
<br />
To my horror, nothing has been honored in Ruby world apart from Rails and geeks see Ruby as a Web DSL and where as rails has made routes.rb itself a DSL.<br />
<br />
I forayed to figure out any Ruby GUI library in par with AIR/Silverlight, but my search collaboration with mountain view only ended up in disparity.<br />
<br />
Finally ended up in installing FXRuby to see fortune in it, written a small GUI ruby program as below,<br />
<br />
<br />
<pre class="ruby" name="code">require 'rubygems'
require 'fox16'
include Fox
application = FXApp.new("CompositeGUI", "CompositeGUI")
main_window = FXMainWindow.new(application, "Composite",nil, nil, DECOR_ALL)
main_window.width = 400
main_window.height = 200
#Vertical Frame
super_frame = FXVerticalFrame.new(main_window,LAYOUT_FILL_X|LAYOUT_FILL_Y)
FXLabel.new(super_frame, "Text Editor Application")
#Horizontal Frame
text_editor = FXHorizontalFrame.new(super_frame,LAYOUT_FILL_X|LAYOUT_FILL_Y)
text = FXText.new(text_editor, nil, 0,TEXT_READONLY|TEXT_WORDWRAP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
text.text = "This is some text."
# Button bar along the bottom
button_frame = FXVerticalFrame.new(text_editor,LAYOUT_SIDE_RIGHT|LAYOUT_FILL_Y)
FXButton.new(button_frame, "Cut")
FXButton.new(button_frame, "Copy")
FXButton.new(button_frame, "Paste")
#create FX application and run
application.create
main_window.show(PLACEMENT_SCREEN)
application.run
</pre>
<br />
and when I ran, landed with the below error message,<br />
<br />
<div>
<b class="highlight">LoadError</b>: <b class="highlight">no</b> <b class="highlight">such</b> <b class="highlight">file</b> <b class="highlight">to</b> <b class="highlight">load</b> -- <b class="highlight">fox16</b>.<b class="highlight">so </b><span class="highlight">from line no 2</span><i class="highlight"> require 'fox16'</i></div>
<div>
</div>
<div>
<span class="highlight">I installed </span><a href="http://rubyforge.org/frs/download.php/66848/fxruby-1.6.20-x86-linux.gem">fxruby-1.6.20-x86-linux.gem</a> and wondering any fox library kit need to be installed in my system and searched in my ubuntu for fox library dependency but left with no clue.</div>
<div>
<span class="highlight"></span><b class="highlight"> </b></div>
<div>
<span class="highlight"></span><span class="highlight">Then I uninstalled and downloaded </span><a href="http://rubyforge.org/frs/download.php/66842/fxruby-1.6.20.gem">fxruby-1.6.20.gem</a> and installed. Native extensions were built, then I could ran my fxruby program with ease,</div>
<div>
<b class="highlight"><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7Tuu5TlFdNwWfvpFN3G1nw4L-XDeJp3HsivVP4pfR3aUQQrCPgCSVer6LbTROPMInnSBxheNFvi1uSqwedpZvnzybUix8B4Np9SVwhfTAN27t0xg-Ps0vQJeuKZsbpfisGp86EVJ1-MA/s1600/fxruby_program.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7Tuu5TlFdNwWfvpFN3G1nw4L-XDeJp3HsivVP4pfR3aUQQrCPgCSVer6LbTROPMInnSBxheNFvi1uSqwedpZvnzybUix8B4Np9SVwhfTAN27t0xg-Ps0vQJeuKZsbpfisGp86EVJ1-MA/s320/fxruby_program.png" width="320" /></a></div>
<div>
<b class="highlight"><br /></b></div>
<div>
<b class="highlight"><br /></b></div>
<div>
<span class="highlight">Though not appealing, enough qualified to place it beside AIR or Silverlight GUI, this could be the half brother of Java Swing.</span></div>
<div>
<span class="highlight"><br /></span></div>
<div>
<span class="highlight">For enterprise Java swing applications and migrating it ruby I saw this article, </span></div>
<div>
</div>
<div>
<span class="highlight"><a href="http://www.ibm.com/developerworks/library/j-monkeybars/index.html#iratings"></a><a href="http://www.ibm.com/developerworks/library/j-monkeybars/index.html">http://www.ibm.com/developerworks/library/j-monkeybars/index.html</a></span></div>
<div>
<span class="highlight"> </span></div>
<div>
<span class="highlight">Don't know practically how far this works</span></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br /></div>
hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com5tag:blogger.com,1999:blog-3733815863264238850.post-28967219984841319582011-06-21T22:44:00.000-07:002011-08-23T00:20:37.048-07:00Ruby Modules: A perfect name space resolver?<div dir="ltr" style="text-align: left;" trbidi="on">
Coming from java background, I was looking for package equivalent in Ruby and read in Programming Ruby 1.9 book that Ruby Module serves two purposes, 1) Namespace conflict resolver 2) Mixin Though, mixin is applauded one, now the one that bothers me is Namespace conflict resolver. lemme idealize it in to a simple example <br />
<pre class="ruby" name="code">module A
def test
puts "I am in module A"
end
end
module B
def test
puts "I am in module B"
end
end
Class Payment
include A
include B
end
p = Payment.new
p.test #prints - I am in module A
</pre>
Now how to invoke test method in module B? But the same if I rewrite the those module methods as a class level methods, this works <br />
<pre class="ruby" name="code">module A
def self.test
puts "I am in module A"
end
end
module B
def self.test
puts "I am in module B"
end
end
Class Payment
include A
include B
def test_modules
A.test
B.test
end
end
p = Payment.new
p.test_modules #prints fine - I am in module A, I am in module B
</pre>
when I do, <br />
<pre class="cpp" name="code">p.A.test #bangs - `<main>': undefined method `A' for #<x:0x97646d0> (NoMethodError)
</x:0x97646d0></main></pre>
What is this actually? I couldn't understand the concept, Is someone who could help me on this? Is Ruby a perfect namespace conflict resolver?
<br><br><b>P.S -</b> I got to know clear about this by watching this video <a href="http://www.infoq.com/presentations/metaprogramming-ruby">MetaProgramming for Fun by Dave Thomas</a></div>
hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com2tag:blogger.com,1999:blog-3733815863264238850.post-84354793865397749292011-03-02T19:36:00.000-08:002011-03-02T20:01:26.342-08:00Ruby Floating floats like a Dead Fish<div dir="ltr" style="text-align: left;" trbidi="on">I was so serious in attempting to solve a problem that <a href="http://www.thoughtworks.com/">Thoughtworks</a> usually gives to its new recruits to test their Object Orientation skills. In that there is a Sales Tax problem which involves lot of math library, floating point calculations rather than using our brain memory in it. <br />
<br />
While when I do the rounding of a sales tax calculation to the nearest 0.05, I faced the problem in my ruby<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPXd25s2MCj9LwRPdDRcShG1iWtjOnSj3LECr1VPZWW3y8J9qOR6cXrlucOl1GAQwaTrIz0qBYVvde6UozSY8Zm_VWfxgjc_eDzdq4nZ3tafqZPfCo1LbaXnM4JQLoIBukE3rU4ReTvts/s1600/ruby_floating_error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq3Wx1w2_Zs0P1AqOfh7oloQFeLaecvfkU2prLY-4yi-cu6Ij0hXWE68M9glnw_mLxvI43z_f9H5L5XWd8472fYOnBLzBaCxASrkhWfd1RDH1djocCkQ_vQ6aLz-azyVmCuaXD7dYaPr4/s1600/ruby_floating_error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIl5A59uhhtMh65zEnjIUtMT0dR1n9fZ7SNVKL8GS0GJj9yohy4uINZDmljda2vMQnDtuuA6x66j310yEOjGVPNG5y2caPOPsN0C9GKZUteQjV6Eo7GPPnLvPNwtmfwtC4yjhlGnVvn8Y/s1600/ruby_floating_error.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIl5A59uhhtMh65zEnjIUtMT0dR1n9fZ7SNVKL8GS0GJj9yohy4uINZDmljda2vMQnDtuuA6x66j310yEOjGVPNG5y2caPOPsN0C9GKZUteQjV6Eo7GPPnLvPNwtmfwtC4yjhlGnVvn8Y/s320/ruby_floating_error.png" width="320" /></a></div> <br />
Though I agree that this is my first time where I am doing intense floating point calculations and round off, could someone explain me why this inconsistency happens with ruby?<br />
<br />
I need at least two decimal places right in my calculations, rather than implementing a work around to round off a 8 decimal float number .<br />
<br />
<br />
Also it should be noted that round(n) as written in Float class in ruby, which rounds to 'n' decimal places doesn't work with Jruby. Any clue on this???</div>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com10tag:blogger.com,1999:blog-3733815863264238850.post-29832952296608987772010-12-26T09:31:00.000-08:002010-12-26T10:05:34.928-08:00How to run PHP files inside public_html directory in Ubuntu 10.10 a.k.a Maverick MeerkatBy default, php files doesnt gets interpreted when placed inside public_html in Ubuntu 10.10. ie in Maverick Meerkat.<br />
<br />
When you install php5 in ubuntu 10.10 or 10.04, planning to place your php files inside public_html directory in your user area, here is the solution for you.<br />
<br />
<b>Create public_html in your user area</b><br />
<br />
<br />
First of all check whether enable-modules under your apache server<br />
for that<br />
goto /etc/apache2/mods-enabled/ folder and check userdir.conf, userdir.load modules are enabled by simply typing ls command<br />
<br />
if not then goto /etc/apache2/mods-enabled and create symbolic link as follow<br />
<br />
<br />
<span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana,Arial,Tahoma; font-size: 12px; font-style: italic;"><pre class="alt2" dir="ltr" style="background-color: white; border-style: inset; border-width: 1px; color: black; height: 34px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;">sudo ln -s ../mods-available/userdir.load
sudo ln -s ../mods-available/userdir.conf</pre></span></span><br />
<br />
or you can enable using the following command<br />
<br />
<span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-family: Verdana,Arial,Tahoma; font-size: 12px; font-style: italic;"><pre class="alt2" dir="ltr" style="background-color: white; border-style: inset; border-width: 1px; color: black; height: 34px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;">sudo a2enmod userdir</pre></span></span><br />
<br />
<br />
Finally create public_html folder under your home directory an give full access permission to it.<br />
<br />
Restart your apache server (sudo /etc/init.d/apache2 restart or service apache2 force-reload)<br />
<br />
Access it through following link.<br />
<br />
http://localhost/~[your_home_directory_name]/ (for me it's http://localhost/~hariharank12/)<br />
<br />
<br />
<b>To run PHP files inside public_html</b> <b>in Ubuntu 10.10</b><br />
<br />
In the new php.conf file which is present in /etc/apache2/mods-available/php5.conf, the php engine inside user directory is turned off as like below.<br />
<br />
<br />
<span class="Apple-style-span" style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-size: 12px; font-style: italic;"><pre class="alt2" dir="ltr" style="background-color: white; border-style: inset; border-width: 1px; color: black; height: 34px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;"><ifmodule mod_userdir.c="">
<directory *="" home="" public_html="">
php_admin_value engine Off
</directory>
</ifmodule>
</pre></span></span><br />
<br />
Comment those above lines.<br />
<br />
Finally php5.conf will look like below.<br />
<br />
<span class="Apple-style-span" style="border-collapse: separate; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="Apple-style-span" style="font-size: 12px; font-style: italic;"><pre class="alt2" dir="ltr" style="background-color: white; border-style: inset; border-width: 1px; color: black; height: 34px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;"><ifmodule mod_php5.c="">
<filesmatch \.ph(p3?|tml)$="">
SetHandler application/x-httpd-php
</filesmatch>
<filesmatch \.phps$="">
SetHandler application/x-httpd-php-source
</filesmatch>
# To re-enable php in user directories comment the following lines
# (from <ifmodule ...=""> to </ifmodule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
# <ifmodule mod_userdir.c="">
# <directory *="" home="" public_html="">
# php_admin_value engine Off
# </directory>
# </ifmodule>
#</ifmodule>
</pre></span></span><br />
<br />
Again restart the apache web server.<br />
<br />
<br />
Test with some php files placing inside public_html folder and hitting URL with localhost/~username/php_file_name.<br />
<br />
It should work now! :)<br />
<br />
<span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><div style="margin: 0px;">For more detailed description why php files running inside public_html is disabled, see the following link</div><div style="margin: 0px;"><a href="https://wiki.ubuntu.com/UserDirectoryPHP">https://wiki.ubuntu.com/UserDirectoryPHP</a></div></span>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com2tag:blogger.com,1999:blog-3733815863264238850.post-22503722694200002922010-12-26T05:45:00.000-08:002010-12-26T05:45:15.080-08:00Chmsee instead of Gnochm in Ubuntu 10.10If you are wondering, how to open chm files in Ubuntu 10.10, here is a solution for you.<br />
<br />
Gnochm has been removed from the repository, and instead replaced by chmsee.<br />
<br />
chmsee has the following features.<br />
<br />
A chm file viewer written in GTK+<br />
<br />
- Uses gecko rendering engine<br />
- Bookmarks<br />
- Support to open multiple files at once<br />
<br />
one difference I feel is you cannot search in chmsee application.<br />
<br />
<br />
Simply you can install chmsee like<br />
<br />
apt-get install chmseehariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com1tag:blogger.com,1999:blog-3733815863264238850.post-4007233580458366432010-05-26T18:20:00.000-07:002010-05-26T18:23:01.247-07:00Ruby Cerification Exams and Rails CertificationsIf a person wants to take Ruby Certifications and searches in google, he is fruitfully landed in to pages of irrelevancy, because the ruby central organization hasn't leaned to give certification exams to developers and architects.<br />
<br />
Why we need certification first?<br />
<br />
The certification exams will solve the following purposes<br />
<br />
- Developers will have the deep understanding of the language, what it can afford, what it can address, how it can make job easier.<br />
<br />
- Popularity of the language, by ads and bringing attention to the enterprises.<br />
<br />
- Income to the open source world, where they can have budget for innovation<br />
<br />
- With Certified Engineers and Architects, We can start making proposals to enterprises where they fond of using Spring and Hibernate like Verizon and Bank of America, making them to feel the power of Ruby language, convincing them that we have enough resources and architects to deliver projects in Ruby Language.<br />
<br />
Then why not <a href="http://rubycentral.org/">Ruby central</a> can come forward in offering Certification Exams and create a better developers in the Ruby world?hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0tag:blogger.com,1999:blog-3733815863264238850.post-81423952058044101372010-05-26T08:31:00.000-07:002010-05-26T18:08:49.264-07:00Dynamic Nature of Ruby - Part 1This is something a post after a long break, still something that ponders me is the level of penetration of open source in enterprises.<br />
<br />
This post is fairly for the new bees who are chain smokers of Java Cigarettes and now want to change their brand and experience a new feel, and less harm to their body in terms of strain. Also at later stage wish to cover the enterprise ruby.<br />
<br />
To begin with, definitely one should accept that famous of python was revealed only by the search giant google through its products like gmail,youtube, and google search etc.<br />
<br />
In late 2000 dynamic languages sprouted and PHP were more dominant in web languages, even though Yahoo uses PHP extensively, but for enterprises PHP is still treated as a KM languages or developing a mere KM applications.<br />
<br />
A popular framework called Rails which evolved with a new stratum such as Convention Over Configuration and DRY principles striked the chord in and around 2005 and this was made possible by a powerful Dynamic Language called 'Ruby'<br />
<br />
<br />
Thoughworks is a company usually called king of Agile, which uses Ruby predominantly in their works as well as do enterprise proposals based on Ruby language.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdjoT197EOCOGoSMIwwcefv2h41RYc0O9eDIF4xaOjDSoQ-VwV6xpYmhYLrWuzxLr-2-zQ1qBfR1ChNO6czZ_bb9xjrEOofgObXJMzio7Vy6D0pNCIGH95ilhWrAA-YM68RkfAMQeKdvU/s1600/ruby.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 77px; height: 78px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdjoT197EOCOGoSMIwwcefv2h41RYc0O9eDIF4xaOjDSoQ-VwV6xpYmhYLrWuzxLr-2-zQ1qBfR1ChNO6czZ_bb9xjrEOofgObXJMzio7Vy6D0pNCIGH95ilhWrAA-YM68RkfAMQeKdvU/s320/ruby.jpg" alt="Ruby Language Symbol" id="BLOGGER_PHOTO_ID_5475670935839900354" border="0" /></a><br />
<br />
Ruby is a dynamic, Object oriented programming language that is influenced by the right mixture of Python, Small Talk, Perl, Lisp<br />
<br />
Is Ruby a scripting language? No, more than a scripting language. <me gasps><br />
<br />
Its object Oriented by nature.<br />
<br />
For instance, even if you declare a variable i =10, the variable 'i' is an object of type fixnum.<br />
<br />
Suppose you want to perform a Modulus operation for the variable i = -10, in a typical static languages like java, it will make a light year waste for you in importing and declaring the essential classes and sub classes.<br />
<br />
Yes in Java you need to import Math class to perform this and call abs fn from the Math Class like this<br />
<br />
Math.abs(i)<br />
<br />
Even if you feel that you want to save time in importing classes and decided to go for IDE like eclipse, it will take hell lot of time to load in windows and hang around, where installing these IDE's are always less preferenced in linux.<br />
<br />
Whereas in Ruby, its pretty simple that even simple guesses from our mindset will work to find a clue,<br />
<br />
Here is the solution in Ruby,<br />
irb>>i.abs #prints 10, mod value of i<br />
<br />
if you ask me how a variable can have a member function, in Ruby its not a variable, its a object of class type 'fixnum'<br />
<br />
Each and everything as an object makes ruby to create wonders.<br />
<br />
Even more ruby has interesting features ....TBC part 2<br />
<br />
<br />
<br />
<br />
<br />
</gasps>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com1tag:blogger.com,1999:blog-3733815863264238850.post-76482893021112845792009-08-17T11:29:00.000-07:002009-08-17T11:50:11.902-07:00The Hindu Stone age site migration sooon.....not very soonPeople are connected to the social networks, just not by entering in to social networking sites, by entering in to common usage sites, where social networks are leveraged for content aggregation, summarizing peoples thought in to collective verdict. Further more, Intelligent scripts could be run over the content, which can be useful for data analysis, and wise decisions and understanding could be made from the diversified content, through collaborative process.<br />
<br />
What's all about?? These are web 2.0 common phenomenon.<br />
<br />
The Hindu is one among the top national English News paper list. Dont bother whether is it first or second or third. Before Times of India invasion, The Hindu newspaper was top selling one in chennai especially. <br />
<br />
To know more about them,<a href="http://en.wikipedia.org/wiki/The_Hindu">http://en.wikipedia.org/wiki/The_Hindu</a><a href="http://en.wikipedia.org/wiki/The_Hindu"></a><br />
<br />
But they maintained a crapy site, where it doesnt works with latest firefox well, abnormal UI and skeletons. Even a stone age site might have been good in terms of article, content, sytle and allowing people to give their verdict on the newspaper. This made Times of India to pitch in and have a greater sales. It got popular by implementing social, web2.0 features that made it rich.<br />
<br />
Iam posting the image below how a typical hindu news site look.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEY7ouEcjb4WewY1KLZcfYhfLZLblLvTG7aIgN9J1xNVAj_a04OUQ2wC4FRpEsP7pVYL69mWoqUR_PwX4MR06jyEieQBwDOB0vxIn7-r7HoykBYfRQtBUYEQPv0od5GHsIDOwTj3bDayM/s1600-h/HinduStoneAge.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEY7ouEcjb4WewY1KLZcfYhfLZLblLvTG7aIgN9J1xNVAj_a04OUQ2wC4FRpEsP7pVYL69mWoqUR_PwX4MR06jyEieQBwDOB0vxIn7-r7HoykBYfRQtBUYEQPv0od5GHsIDOwTj3bDayM/s320/HinduStoneAge.jpg" /></a></div><br />
<br />
Do they live in Dark age??. Cant they understand user behaviour, that social interaction and user participation will drive their business?? Does this site looks attractive????????<br />
<br />
Now they have come up with, new site ie they have revamped site it seems and as of now it is in beta. The link is <a href="http://draft.blogger.com/%20http://beta.thehindu.com/"> http://halfAlpha.thehindu.com/</a><br />
<br />
Dont worry and feel about that they are too late. You will really applaud dinamalar site. see <a href="http://www.dinamalar.com/">http://www.tamilNews.web2.0.com/</a><a href="http://www.dinamalar.com/"></a><br />
<br />
Whatever The hindu released its site, is a pure or less than a web1.5 site, moreover they have copied styles and look from wordpress themes and ideas might have been stolen from Times of India.<br />
<br />
The beauty is I cant even see a 'Login' link,The Hindu might ask 'why to login in to a Newspaper site?'.<br />
<br />
I could spot archive link, which made me happy, bcoz when i want to search for some present content, google will take some time to index.<br />
<br />
It is hard to find comment section, allowing people to engage in to the site content, and add value to the content. Only thing The Hindu wish is <br />
<div id="email-section"><a href="mailto:letters@thehindu.co.in" title="Email the Editor ">Email the Editor</a>. After reading the content everyone should Email the editor.Hindu assigns task for everyone, when they wish not to spend money and buy paper.</div><br />
Still awaiting for the release, May be when google, microsoft , yahoo starts redefining web5.0 they might come up with this latest web1.5 site.hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0tag:blogger.com,1999:blog-3733815863264238850.post-59305721838114097222009-07-10T21:18:00.000-07:002009-07-11T10:17:01.025-07:00Internet Explorer 8 supports Web 2.0<div style="text-align: center;"><span style="color: #0000ee;"><span style="text-decoration: underline;"><br />
</span></span></div><div>It has been a long time we are still making use of Internet explorer 6.(IE 6)</div><div></div><div><br />
I was wondering how Internet Explorer people could make use of web2.0, enjoy the pleasure while surfing internet.</div><div></div><div><div><br />
This made me come up with Internet Explorer 8 article(IE 8).</div><div></div><div><br />
I will try to provide this article small and crisp as much as possible.</div><div></div><div><br />
<b>About</b> - IE8 is the latest web browser developed by Microsoft and is going to be the default browser for the upcoming OS windows 7 and windows server 2008.</div><div></div><div><br />
<b>Focus</b> - Security, ease of use,tabbed browsing and improvements in RSS,CSS,Ajax support were its primary focus.</div><div></div><div><br />
<b>Features </b>- </div><div></div><div><br />
<i>Webslices</i> - This is a tool that keeps users automatically updated with parts of web pages that they would like to see daily. Users need not check updates manually like news sites, the weather, stock quotes etc. If the links to these sites are included in the Favourites bar, users will be alerted about fresh information. Another thing to remember is Host should also provide this functionality for automatic updates in browser. Webslice is not like firefox Live Bookmarks and does not syndicate feed in a proper manner. Assume I have three comments in my blog and deleting the 2nd comment in my blog is not getting reflected in the webslice ie deletion of items sucks in webslice. eg-> microsoft,cricket,News updates,Twitter updates as shown in webslices image</div><div><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsHIM0VYTIywQ8wUCmhFPPyXjP1bR5NzJ4Xv2vjP9riahAcXqjkdysGrKQomB-8Jrb9fbBSNAcxqbx5cnmxKXQ_Sh6YuLUsgTcK7a6B3wy_MD5HKtMJp-sglEKNztN7mRFqpgGutBJUfM/s1600-h/webslice.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5357150133182625202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsHIM0VYTIywQ8wUCmhFPPyXjP1bR5NzJ4Xv2vjP9riahAcXqjkdysGrKQomB-8Jrb9fbBSNAcxqbx5cnmxKXQ_Sh6YuLUsgTcK7a6B3wy_MD5HKtMJp-sglEKNztN7mRFqpgGutBJUfM/s320/webslice.JPG" style="cursor: hand; cursor: pointer; display: block; height: 320px; margin: 0px auto 10px; text-align: center; width: 124px;" /></a></div><div><i>Accelerator</i> - This feature helps an user to perform browser-based tasks like searching,looking up addresses using a map service, sharing content on a social network etc with ease of use.Accelerators eliminate the need to copy and paste content between pages eg -> select TCS,Thoraipakkam, and accelerate it, you can see location of office in Google map, live map. as shown in accelerator image</div><div><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLjPQkrO_1Ws46th_OUGRElop85gXtJcAIXiR-UkfrjGdJzyXfyoceVJKA1Eo17XP_4sWTelIEAg83MD_1kpFyhTlZ3tdmaG-z748kZYtgmbjTec_u65hbneZNnv_dZmktVuK3sOrwt5o/s1600-h/Accelerator.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5357145088730598194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLjPQkrO_1Ws46th_OUGRElop85gXtJcAIXiR-UkfrjGdJzyXfyoceVJKA1Eo17XP_4sWTelIEAg83MD_1kpFyhTlZ3tdmaG-z748kZYtgmbjTec_u65hbneZNnv_dZmktVuK3sOrwt5o/s320/Accelerator.JPG" style="cursor: hand; cursor: pointer; height: 320px; text-align: center; width: 237px;" /></a></div><div></div><div></div><div>Note you might see many google options for acceleration in my image. I have installed google toolbar in my IE 8.</div><div></div><div><br />
<i>Suggested sites</i> - This feature suggest relevant sites to the current sites, we have in our browser. When this feature is enabled, IE 8 asynchronously sends to browser information to the microsoft server over a secure connection. Recommended sites are not powerful and stumbleupon users have to be unhappy by this feature.</div><div><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgevJmY1nJrwQonUEFiErZTWmSnc5y8eUBUzAfzdDmc8zUXJ-_PgJMGE72BfjcIOT_56kPlwSDeXG1_bPFlf9bOUYsViu1wXV214hbuEuBKFVpeQrzbWa4cZ0YeobCJ_ZWQsEaFcUsXVk/s1600-h/SiteSuggestion.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5357155426692063010" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgevJmY1nJrwQonUEFiErZTWmSnc5y8eUBUzAfzdDmc8zUXJ-_PgJMGE72BfjcIOT_56kPlwSDeXG1_bPFlf9bOUYsViu1wXV214hbuEuBKFVpeQrzbWa4cZ0YeobCJ_ZWQsEaFcUsXVk/s320/SiteSuggestion.jpg" style="cursor: hand; cursor: pointer; display: block; height: 178px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a></div><div><br />
<i>Address Bar</i> - This features domain highlighting for added security so that the top-level domain is shown in black whereas the other parts of the URL are grayed out. Please see the address bar in image below weblsice.</div><div></div><div><br />
<i>Security</i> - Browser has enhanced filters(smart screen) to help prevent the installation of malicious software and alert users to phishing attempts and sites that pose a security risk.</div><div></div><div><br />
<i>Privacy</i> - It also has introduced the facility to browse web sites privately, without leaving track locally of the sites visited and other browser-based activity, and also to control the harnessing of information by third party sites to track user activity.</div><div><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx1oks_9lgu7K56PWlsX5Y9kGYD-pHzT-3lfJtdKRvCS4fCUOWmm7sCkNLeJrZSl_D36Px91aONPuIZd-AiZ1Nl9qU3ig8x2sH1dSuTFLVB5zgZ0G_popfk50pWPd6tGARtM3Ko1SygJs/s1600-h/Private.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5357149660663235858" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx1oks_9lgu7K56PWlsX5Y9kGYD-pHzT-3lfJtdKRvCS4fCUOWmm7sCkNLeJrZSl_D36Px91aONPuIZd-AiZ1Nl9qU3ig8x2sH1dSuTFLVB5zgZ0G_popfk50pWPd6tGARtM3Ko1SygJs/s320/Private.jpg" style="cursor: hand; cursor: pointer; display: block; height: 54px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a></div><div><br />
<i>Developer Tools</i> - For developers, IE8 includes tools that allow Html,CSS,Javascript debugging directly from the browser(Shown in fig). Firebug users will feel this slightly annoying.</div><div><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhur536isP47ZHJgwzyZ_i5NTrrC4Yr3UIX6XL_riHEbPp1TXGu1tqMxI9aWvilfzWwLi1-e61GUBiGUQGZXRjHMwzCDLLuTHVoyuDw09u_bW9Jg16uyVsdwmSyuHypxcEHW93gyE8k9A4/s1600-h/Developer+Tools.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5357148114709355442" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhur536isP47ZHJgwzyZ_i5NTrrC4Yr3UIX6XL_riHEbPp1TXGu1tqMxI9aWvilfzWwLi1-e61GUBiGUQGZXRjHMwzCDLLuTHVoyuDw09u_bW9Jg16uyVsdwmSyuHypxcEHW93gyE8k9A4/s320/Developer+Tools.JPG" style="cursor: hand; cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a></div><div><i>Speed</i> - As for speed It starts quickly, loads pages fast and instantly gets you started on what you want to do next with a powerful new tab page.The part of the browser that processes web page scripting components works faster.</div><div></div><div><br />
<i>Memory</i> - As for as memory it is greater than all. As we know chrome is the browser which consumes huge memory, but Google products always reveal diligence. My test results here eg - if you take a tab in IE 8 with http://www.google.com and as well as in chrome, IE 8 consumes around 37-43k where as chrome hardly takes 7-13k. They have created seperate process for each and every tab and process is freed in vain when a tab is closed.</div><div><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp-pWvTtglQtZhRw9B0-JZ33MJ0-80qL4U-v_7dckXuXxb02H2ZWo8zaYzymW0C8v_jp6lyTsHJnNnNUW9uFjP6ZZR-vjTkEBEGSFUXwwzjwLrK0hslUmWBXLsPLle7csMEALSnvcwsWs/s1600-h/googleTab.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5357148749749630722" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp-pWvTtglQtZhRw9B0-JZ33MJ0-80qL4U-v_7dckXuXxb02H2ZWo8zaYzymW0C8v_jp6lyTsHJnNnNUW9uFjP6ZZR-vjTkEBEGSFUXwwzjwLrK0hslUmWBXLsPLle7csMEALSnvcwsWs/s320/googleTab.jpg" style="cursor: hand; cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a></div><div></div><div></div><div><br />
<i>Mode</i> - Usually IE 8 runs on standard mode. But we can switch to compatibility mode, extending support for sites that runs on previous IE versions or web developers can run their pages in compatibility mode using javascript. When user runs pages in compatibility mode, the compatibility button(as shown in fig) will be grayed out next to address bar. </div><div><br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLrxPEVT_sSx9oDYT01CouS7OgVHCAj6NSH_2C-7COjDx37st1nQUR5bHfJKXAkPtaTXj3CNiX3G_ibZUXuwCslEIA0As15CgIh4IrtQOW5juggN5KIGVlBL98nwKPa3T8XLmplfQS60Q/s1600-h/compatibility.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5357147063253854306" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLrxPEVT_sSx9oDYT01CouS7OgVHCAj6NSH_2C-7COjDx37st1nQUR5bHfJKXAkPtaTXj3CNiX3G_ibZUXuwCslEIA0As15CgIh4IrtQOW5juggN5KIGVlBL98nwKPa3T8XLmplfQS60Q/s320/compatibility.jpg" style="cursor: hand; cursor: pointer; display: block; height: 55px; margin: 0px auto 10px; text-align: center; width: 320px;" /></a></div><div></div><div></div><div><br />
There are some interesting features in IE 8 and this is a boon to web2.0 site lovers from Microsoft.</div><div></div><div><br />
If you are a IE user surf, with IE 8 and enjoy the benefits of Web2.0 with security as one primary thing and ignore IE 6 which is less secure,non scalable, memory leaks and helpless CSS engine</div><div></div><div><br />
Firefox is my all time favorite and if you are looking speed you can go for Google chrome.</div></div>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0tag:blogger.com,1999:blog-3733815863264238850.post-56422907291628035822009-07-10T16:38:00.000-07:002009-07-10T16:42:31.261-07:00Worship Gods??<div class="entry"> <div class="snap_preview"><p>Prayer as an act is meaningless. If we pray with some expectations, it is better to remain silent. Because when attitude goes wrong, everything that works around is not right.</p> <p>If our attitude is prayerfulness, worshiping everything in life, then the prayer is meaningful. Realizing Brahman in ourself and becoming prayerful is a prayer.</p> <p>During prayers, we should have full awareness of who are we. Our Mind should sync with heart, from concentration(Ekagram only one thought) to Meditation(and becoming that itself). If this continues, we will realize we are the one pervading everywhere.</p> <p>God cannot do/give anything for us,unless we do something. What He needs to give has given enough. It is up to us to make use of it.</p> <p>God has many forms and of course created by us for our convenience. Realized souls say ‘know about yourself’. Lord Krishna says, ‘You are born because of your karma’ . So do we need to pray God to increase our karma? or to surrender ourself to our Atman and attain Nirvana??</p> </div></div>hariharan kumarhttp://www.blogger.com/profile/14741559578898491110noreply@blogger.com0