tag:blogger.com,1999:blog-60200890484522274862024-03-13T07:56:11.612-07:00Singularity Cometh...<i>/* Singularity Cometh... : A simple blog with my rants and muses! */</i>Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.comBlogger132125tag:blogger.com,1999:blog-6020089048452227486.post-20350831501005984652020-03-12T23:42:00.001-07:002020-03-13T00:12:27.194-07:00The time to prepare is now, but it is surely running out…<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">...</span></span><br /><br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">A <a href="https://www.sciencemag.org/news/2020/01/novel-human-virus-pneumonia-cases-linked-seafood-market-china-stir-concern" target="_blank"><i>news piece</i></a> dated<b> Jan 3, 2020</b> shared update on a viral infection. In <i><b>Wuhan </b>"the health authorities had reported an <b>unexplained viral pneumonia </b>that sickened 59 people with no deaths till date, but with some people critical…" </i></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">It also went on declaring<i> that "it is <u>highly unlikely</u><b> </b>that this outbreak will lead to a major [SARS-like] epidemic.." </i></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Now, hop over and see the latest <i><b><a href="https://www.who.int/emergencies/diseases/novel-coronavirus-2019/technical-guidance/naming-the-coronavirus-disease-(covid-2019)-and-the-virus-that-causes-it" target="_blank">Covid-19</a></b></i> world stats here -> <a href="https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html" target="_blank"><b><i>https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html</i></b></a></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">People In January who read that article or were hearing the news for the <i><b>Coronavirus </b></i>spread at that time were thinking that… <b><i>'ah, this is <a href="https://www.livescience.com/new-coronavirus-compare-with-flu.html" target="_blank">nothing but the flu</a>'</i></b>, '<i>it won't come to our country/state/city'</i>, <b><i>'we are all safe</i></b>', and many other self comforting thoughts.. </span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">The sad thing is that even in March 2020, some people still are in their false cocoons of comfort... even with the stats </span></span><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">which stand as below </span></span><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><i>(as </i></span></span><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><i><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">on date </span></span><b>13 March 2020</b>)</i> </span></span>- </span></span><br />
<blockquote>
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><b>> Coronavirus Cases: 134,803<br />> Deaths: 4,984 </b></span></span></blockquote>
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><b>[Note: India centric stats here</b> - <a href="https://www.ncovirus.in/" target="_blank" title="https://www.ncovirus.in/"><u>https://www.ncovirus.in/</u></a><b>]</b></span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"></span></span><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">I agree that <b><i>panic is not the solution</i></b>, but that doesn't mean you <i><u><b>shouldn't be prepared</b></u></i>!</span></span><br />
<br />
<span style="font-size: small;"><b><span style="font-family: "verdana" , sans-serif;">Preparation </span></b><span style="font-family: "verdana" , sans-serif;">is </span><b><span style="font-family: "verdana" , sans-serif;">vital </span></b><span style="font-family: "verdana" , sans-serif;">f</span><span style="font-family: "verdana" , sans-serif;">olks! Not preparing now is being plain foolish!</span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">As a well wisher, I <u><b>urge </b></u>all who are reading to kindly try and do this - </span></span><br />
<ol>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><u><b>Stock </b></u>on your <u><b>essentials </b></u>as per your needs. Remember, <b>stock, not hoard</b>;</span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><b>Avoid </b>all <b>unnecessary </b>travel, gatherings and outings;</span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">If you have small kids, <b>teach </b>them <b>basic hygiene </b>and tell them NOT to touch their face, tell them <a href="https://www.youtube.com/watch?v=R-JbDMYmAQM" target="_blank">what we are up against</a>! Also the best <b>hand wash </b>practice (Happy B'day song or 20 seconds!). A best case scenario would be to <b>limit </b>their <b>exposure;</b></span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><b>Try </b>to <b>stay indoors, </b>and <b>avoid contact </b>with people who recently returned from any cross border travels;</span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Keep all <b>elderly </b>(> 60 years) people in <b>check, report </b>for treatment asap in cases of <b>symptoms </b>like - </span></span></li>
<ul>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Fever </span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Cough </span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Shortness of breath </span></span></li>
</ul>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">When in doubt <a href="https://i.kinja-img.com/gawker-media/image/upload/tc45oifj7i84f1n36gxo.jpg" target="_blank"><u><b>wash your hands!</b></u></a></span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Keep a <b>sanitizer bottle </b>at hand (alcohol strength > 65%). Remember, please use <b>only </b>when hand wash is not an option;</span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">The symptoms of this infection are similar to flu. But, a person can be <b>contagious for several days</b> before <b>having any symptoms</b>. So this is a tricky one, awareness/pro-activeness is key! </span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">If you <b>feel any symptoms</b> coming, <b>avoid </b>a physician visit, but <b>please report </b>as per the local / state protocols!</span></span></li>
<li><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Remember! <b>Don't be afraid of quarantining! </b>The only way to fight this is <u><b>rapid isolation</b></u>!</span></span></li>
</ol>
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">I also urge you to please help spread this awareness.. The only way to fight this is stop it from spreading... so be aware and <a href="https://blog.datawrapper.de/weekly-chart-coronavirus-growth/" target="_blank">#FlattenTheCurve</a></span></span><br />
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><br /></span></span>
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">And to all the people who <b>still </b>think otherwise.. Stay safe and stay alive (try to at least). <b>/s </b></span></span></div>
Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com2tag:blogger.com,1999:blog-6020089048452227486.post-90870403329644107912018-10-12T00:25:00.004-07:002018-10-15T02:49:11.233-07:00Tech-Zen - Post#1 - Mindfulness with Technology<div style="text-align: left;" dir="ltr" trbidi="on">
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-size: x-small;"><span style="font-size: xx-small;"><b><img alt="" src="data:image/png;base64,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"> </b></span></span></span><br>
<br>
<br>
<font size="2"><b>W</b>elcome to the
world of technology mindfulness.</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br>
</font><div style="text-align: left;"><font size="2">
In the humble quest of <i>sharing across,</i> I bring to you this post (a first of hopefully many to come). To help you</font><font size="2"><font size="2"> jump start your journey, and achieve technology awareness and empowerment – one bullet point at a time :)</font></font></div><font size="2">
</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br></font></div><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><ul type="disc" style="text-align: left; margin-top: 0in; margin-bottom: 0in; unicode-bidi: embed;"><font size="2">
</font><li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"><font size="2"><b>Stay safe</b> - Good things happen to those who are good, but bad things can happen to anyone. Update your mail, Facebook
security etc. and set up </font><a href="https://www.makeuseof.com/tag/lock-services-now-two-factor-authentication/"><font size="2">two-factor authentication for
additional security</font></a><font size="2">. After all to err is human but so is to steal.</font></li><font size="2">
</font></ul><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br></font></div><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><ul type="disc" style="text-align: left; margin-top: 0in; margin-bottom: 0in; unicode-bidi: embed;"><font size="2">
</font><li lang="x-none" style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"><font size="2"><b>Stay focused</b> - Clearing your desktop can be
the first step in clearing the mess and your mind. And science says that </font><a href="https://www.makeuseof.com/tag/clearing-clutter-good/"><font size="2">clearing out the clutter is
actually good for you! </font></a></li><font size="2">
</font></ul><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br></font></div><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><ul type="disc" style="text-align: left; margin-top: 0in; margin-bottom: 0in; unicode-bidi: embed;"><font size="2">
</font><li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"><font size="2"><b>Stay clean</b> - Cleanliness is a godly virtue, even when you consider your laptop and your
keyboard. A clean screen means less glare and smudges, but also means less
frustration when your eyes are busy. Also, a clean keyboard means </font><a href="http://www.center4research.org/bacteria-computer-keyboards-toilet-seats/"><font size="2">cleaner germ-free hands</font></a><font size="2">.</font></li><font size="2">
</font></ul><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br></font></div><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><ul type="disc" style="text-align: left; margin-top: 0in; margin-bottom: 0in; unicode-bidi: embed;"><font size="2">
</font><li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"><font size="2"><b>Stay a student</b> - Do something new with your
computer - <span style="font-weight: bold;">Learn to Code</span>!
Learning
knows no age limit and it is never too late to start learning. Use resources like
</font><a href="http://www.sololearn.com/"><font size="2">Solo Learn </font></a><font size="2">and </font><a href="https://code.org/"><font size="2">https://code.org/</font></a><font size="2"> to start off your journey! As Jeff Bezos says </font><a href="https://www.inc.com/justin-bariso/20-years-ago-amazons-jeff-bezos-sent-an-extraordinary-letter-to-shareholders.html" target="_blank"><font size="2">"Every day is </font></a><a href="https://www.blogger.com/null" target="_blank"><font size="2">Day One</font></a><font size="2">".</font></li><font size="2">
</font></ul><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br></font></div><font size="2">
</font><div style="text-align: left;"><font size="2">
<b>
</b>
</font></div><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><ul type="disc" style="text-align: left; margin-top: 0in; margin-bottom: 0in; unicode-bidi: embed;"><font size="2">
</font><li style="margin-top: 0px; margin-bottom: 0px; vertical-align: middle;"><font size="2"><b>Stay in control</b> - And last but not the least, learn to
stay in control, as </font><a href="https://www.makeuseof.com/tag/recognize-overcome-tech-addiction/"><font size="2">technology addiction is a
real problem</font></a><font size="2">.</font></li><font size="2">
</font></ul><font size="2">
</font><div style="text-align: left;"><font size="2">
</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br></font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
That is it for now.. hope
you liked the above and are able to take away something of use.<br>
<br>
In case you need help or if you need any technology based
suggestions, feel free to reach out to me personally.</font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
<br></font></div><font size="2">
</font><div style="margin: 0in; text-align: left;"><font size="2">
Until next time, happy
tech-mindfulness!<br>
<br>
<strong>(I am here...</strong></font><a href="http://singularitycometh.blogspot.com/"><font size="2"><strong>Blog</strong></font></a><font size="2"><strong> / </strong></font><a href="https://twitter.com/wind_alpha"><font size="2"><strong>Twitter</strong></font></a><font size="2"><strong> / </strong></font><a href="https://www.flickr.com/people/ckhurana/"><font size="2"><strong>Flickr</strong></font></a><span style="font-size: xx-small;"><span style="font-size: xx-small;"><font size="2"><strong>)</strong></font></span></span></div><strong>
</strong></div>Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-35962048580546176932017-12-28T07:45:00.001-08:002017-12-28T07:46:20.968-08:00Internet Alert Follow up - Parents, please block these sites at least.<div dir="ltr" style="text-align: left;" trbidi="on">
An excellent post at <a href="https://www.makeuseof.com/" target="_blank">Make Use of</a> shares the<a href="https://www.makeuseof.com/tag/sites-parents-add-block-list/"> 6 Sites All Parents Should Add to Their Block List Today.</a><br />
<br />
Do take out some time and block these at the very least. I will be posting ways to help block these separately, soon.<br />
<br />
Till then, stay safe and ensure to educate your little ones responsibly and please keep an open discussion on the risks the internet may open for them.</div>
Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-88256477322570170102017-12-12T18:41:00.002-08:002017-12-14T23:08:44.657-08:00*Be Aware - Save the kids from the Internet's new low!*<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><img alt="Related image" class="irc_mi" height="213" src="https://media.licdn.com/mpr/mpr/p/3/005/04d/122/0184055.jpg" style="margin-top: 0px;" width="320" /> </span></span><br />
<h4 style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><span style="font-size: large;">I</span>s this post is for you? Answer these to find out - </span></span></h4>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">- Do you have kids at an age when they depend on you for judgement and guidance? </span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">- Do you give your young ones unsupervised Internet screen time? </span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">- Are they overtly attached to any present day animation characters like Elsa, Emma (Frozen) or any popular Disney characters?<br /><br />If you answered yes to any of the above, you need to read on!</span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"></span></span><br />
<a name='more'></a><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><br /></span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">The Internet is an open, semi-moderated ocean of everything. And everything is available if you just know <b>what </b>to find. The <i><b>where </b></i>is helped along by Google and other search avenues. </span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">On one hand, there is obviously a lot of good you can do when you introduce and expose the internet to your young ones. Although keep in mind the need to create effective layers of control for that the access. </span></span><span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">The PC / network filters, firewalls and net-monitoring or nanny tools are mighty helpful (at least for kids not old enough to circumvent them). </span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><br /></span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">But on the other hand there is a dark and frightening side to it.<br /><br />If you have been following any of the recent kids / teenager targeted Hollywood franchises (movies), you know the popularity of characters like Elsa and Emma (Frozen), the Spider-man (Marvel Series) and the Batman and Joker (DC Comics).<br /><br />Imagine a situation when your kid makes a harmless search for a YouTube video featuring her favourite character, and using simple search terms like *Frozen* or *Elsa* or *Spider-man*, or anything like it, while on <a href="https://support.google.com/youtube/answer/174084?co=GENIE.Platform%3DDesktop&hl=en" target="_blank">safe-search</a> too.</span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">These are quite common keywords for Google or YouTube and predictably will bring up lots of results targeting your average kids. This would obviously include user run Cartoon Channels aimed at ages about 2 – 8 as well. </span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Pretty harmless you would say, simply click
along!</span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">BUT what about the fact when some of these videos (popular ones with millions of views) start really innocent.. and halfway through turn into themes which are violent, sexual, antisocial or just plain disturbing? Videos showing content which could damage your kids and leave them puzzled and confused or hell even change the definition of normal for them?</span></span></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Horrifying, no? And the fact that this could happen so easily makes it even more scary.</span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><br />Sadly, this is the current state of affairs on the Internet which is upon us, as in right now. With almost all of these videos having easy access and friendly titles like "Elsa and Spiderman play hide and seek" they become instant click-bait... But halfway through turn into something else...you get the picture.<br /><br />So prevalent is the theme, that there is even a term *<a href="https://www.reddit.com/r/ElsaGate/" target="_blank">Elsagate</a>* (initially referenced on a subreddit) which broadly classifies this YouTube phenomenon.<br /><br />On one hand, I am sure we all understand and agree on the need of natural progression and evolution of personality and attitude which happens with age. We also agree that we should not excessively police our children. I for one would surely want my kids to have the same opportunity to grow, evolve and express like I did. <br /><br />But when common, harmless playtime takes shape of tools which are conniving and deceitful in motive, you as a parent need to step in and take action. <br /><br />In this case, most of the videos are available even through the child filter, thus they will make through the age safe list and even the seemingly children-friendly <a href="https://kids.youtube.com/" target="_blank">YouTube Kids App</a>. This means very young children could be exposed to this, which is a horrifying thought.<br /><br />So what do we do now? Well, I suggest nothing extraordinary but seemingly common (though rarely followed) actions -<br />1. Till a permanent solution (be it technology based effective checks, filters or outright banning of these channels) happens, be the parent with an eye out on what your kids do online.<br />2. Make any and all surfing a family time activity, which allows you to spend time with kids, but also gives you the opportunity to step-in, guide and take control as needed.<br />3. Be an aware parent. Try to notice changes in your kid's behaviours and patterns for anything out of the ordinary. You may be an effective parent for your kid, but your kid's friends may not have that privilege.<br />4. If you have other friends and family who follow these characters like their lives depend on it, be a good friend and pass this information to them as well.</span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><br /></span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Internet is a powerful tool, and as the quote goes, “<b><i>With great power comes great responsibility</i></b>”. </span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">So be aware and responsible, you are the only immediate guidance your kids have, play that role. </span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;"><br /></span></span></div>
<div style="text-align: left;">
<span style="font-size: small;"><span style="font-family: "verdana" , sans-serif;">Reference links - <br /><a href="http://www.bbc.com/news/blogs-trending-39381889">http://www.bbc.com/news/blogs-trending-39381889</a><br /><a href="https://boingboing.net/2017/12/01/pattern-recognition.html">https://boingboing.net/2017/12/01/pattern-recognition.html</a><br /><a href="https://www.theverge.com/2017/11/9/16629788/youtube-kids-distrubing-inappropriate-flag-age-restrict" target="_blank">https://www.theverge.com/2017/11/9/16629788/youtube-kids-distrubing-inappropriate-flag-age-restrict </a></span></span></div>
<br /></div>
Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-46713523405168563472016-06-23T06:07:00.003-07:002016-06-23T10:48:18.594-07:00Elon Musk–The Iron Man IRL!<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<h2 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Just give this hour long show a once over<span style="font-family: "arial" , "helvetica" , sans-serif;">;</span> this is Elon Musk on the the Re/Code
Conference 2016.</span></h2>
<span style="font-family: "arial" , "helvetica" , sans-serif;">
</span>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/wsixsRI-Sz4/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/wsixsRI-Sz4?feature=player_embedded" width="320"></iframe></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<span style="font-family: "trebuchet ms" , sans-serif;">Elon is as always very vocal of his deeds and why he is doing them. But it is the questions on Colonizing Mars and re-usable rockets which has him on the edge, big commitments and all! </span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;">The excitement is big on his face all along (not too sure of the interviewers though, sadly).</span><br />
<span style="font-family: "trebuchet ms" , sans-serif;"><br /></span>
<span style="font-family: "trebuchet ms" , sans-serif;">If you do manage to reach the end, pay attention to the (pretty mature) audience questions. Especially the "<i><b>living in a simulation</b></i>" one.</span><br />
<span style="font-family: "trebuchet ms" , sans-serif;"><br /></span>
<span style="font-family: "trebuchet ms" , sans-serif;">For the un-initiated, the <a href="https://en.wikipedia.org/wiki/Simulation_hypothesis" target="_blank">simulation hypothesis</a> proposes that we, the humanity, are the creation and inhabitants of an artificial simulation in a simulated existence and "of which we, the simulants, are totally unaware." </span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;">This is most likely an outcome of the evolution and advancement of a very advanced version of our or a very similar civilization. </span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;">The concept is pretty much a mind fu*k in itself and has a quite a bit of the Internet dedicated to it.</span><br />
<span style="font-family: "trebuchet ms" , sans-serif;"><br /></span>
<span style="font-family: "trebuchet ms" , sans-serif;">Anyways, the Elon discussion is a must watch if you really want to know about the next big things around the corner.</span><br />
<br />
<span style="font-family: "trebuchet ms" , sans-serif;">Enjoy! </span></div>
Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-14904867975005961072015-11-24T10:29:00.001-08:002015-11-24T10:30:57.543-08:00To fail or not to fail…<p><a href="https://en.wikipedia.org/wiki/Failure" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-jbg0TO5lewA/VlSseLIJahI/AAAAAAAABK4/5NcFAezqYL0/image%25255B5%25255D.png?imgmax=800" width="489" height="212"></a></p> <p>Failure… the word itself feels such a let down. But is it actually a disgrace, a step down or an actual negative? Is it really what is yours to keep when all success eludes?</p> <p>Actually, no. It is the mindset and the interpretation of failure.</p> <p>A case to discuss is how failure fits in the Agile Methodology. The Agile supports small leaps of work and faith, and thus the achievement is in small gains. One step at a time.</p> <p>And thus there is scope for small regular successes and yes, regular failures as well.</p> <p><strong><em>Failure</em></strong> in itself is a great way to learn about <em>how to succeed</em>. </p> <p>Take for example, the agile practitioner’s favorite phrase…” Fail early, fail fast, fail often”.</p> <p>Failing fast in-between your sprint’s start and finish is really good, both for you and your stakeholders. Yes, that’s true. Why? Because it saves cost, and more importantly it saves relationships and… yes, embarrassment as well.</p> <p>But I genuinely believe that it’s not always about failures. It should be more about the learning. Easier said than done… I agree.</p> <p>But in truth, as long as you are learning fast from your failure, you will create purpose in your actions. And this learning will help you fail less and less till success is the only available outcome.</p> <p>So don’t just fail. Learn. </p> <p><font face="Arial Black">Learn fast, and Learn often.</font></p> <div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2ef8d201-b511-4b83-99c6-1c9a44d90427" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Technorati Tags: <a href="http://technorati.com/tags/Agile" rel="tag">Agile</a>,<a href="http://technorati.com/tags/quotes" rel="tag">quotes</a>,<a href="http://technorati.com/tags/failure" rel="tag">failure</a>,<a href="http://technorati.com/tags/success" rel="tag">success</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-74045110581535043462015-08-04T02:00:00.001-07:002015-08-04T02:02:28.841-07:00Did the Samsung Note 3 Lollipop update kill your Hands free Answer / Reject ? Read on.<p>After much observation and jumping around the many Android forums, I finally decided to take my N9005 to the Lollipop world.</p> <p>Well, its beautiful (as beautiful the Samsung UI can be i.e.) and perplexing. </p> <p>And although I am still trying to guess the reason why Google took off the silent option from the power key menu, it is faster and more responsive (or feels like it!)</p> <p>Anyways, the first main issue I have come across is <strong>the voice control disappearing when the Hands Free is enabled.</strong></p> <p><a href="http://lh3.googleusercontent.com/-ko6TY88D3iE/VcB_QmBBI9I/AAAAAAAABIk/Zoe_eRjdRjQ/s1600-h/image%25255B2%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-2BkXukf4nKw/VcB_RRdDpXI/AAAAAAAABIs/-Jz6CcTJI78/image_thumb.png?imgmax=800" width="244" height="157"></a></p> <blockquote> <p><em><font color="#ffff00" size="3"><strong>T</strong></font>urns out, I cannot choose to <font color="#ffff00"><strong>Answer or Reject</strong> </font>when the calls come in on the <strong><font color="#ffff00">Hands free mode</font></strong>. </em></p></blockquote> <p>I tried everything short of a factory reset, but for the life of me could not get this trivial feature to work… until, until is turned this off,,,</p> <p><strong><u>“Vibrate when Ringing”</u></strong></p> <p>If you phone is having this checked, you are probably not having the hands free operating as you want it! </p> <p><a href="http://lh3.googleusercontent.com/-W9Dl2OCUqV8/VcB_Rwe_L9I/AAAAAAAABI0/6jn6Bocx0gA/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-YEwY95tDKfI/VcB_STkcRtI/AAAAAAAABI8/8HxDi_y9WEA/image_thumb%25255B2%25255D.png?imgmax=800" width="139" height="244"></a></p> <p>Yeah, doesn’t make much sense… but that’s the solution! </p> <p>Like I said, I tried every option but this is something which I had enabled only recently, so rolling all my changes back, and undoing the many other options lead to this discovery. </p> <p>Hope it helps out someone out there!</p> <div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bd02383a-e3f0-4f3f-8535-332a7c506d0e" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Technorati Tags: <a href="http://technorati.com/tags/Note3" rel="tag">Note3</a>,<a href="http://technorati.com/tags/Lollipop" rel="tag">Lollipop</a>,<a href="http://technorati.com/tags/Android" rel="tag">Android</a>,<a href="http://technorati.com/tags/N9005" rel="tag">N9005</a>,<a href="http://technorati.com/tags/Answer" rel="tag">Answer</a>,<a href="http://technorati.com/tags/Reject" rel="tag">Reject</a>,<a href="http://technorati.com/tags/Hands+free" rel="tag">Hands free</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-19341236409493750052015-05-18T03:03:00.001-07:002015-05-18T03:03:44.233-07:00How-to : Setting up family shares using Drop-box!<p><a href="http://lh3.googleusercontent.com/-Mm69jkOCzbI/VVm4303_HOI/AAAAAAAABFM/XVs4JbZCCfI/s1600-h/image37.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-G3KRV3XAErk/VVm44fA7lPI/AAAAAAAABFU/TyakIFHSX9c/image_thumb19.png?imgmax=800" width="157" height="180"></a><em><strong><font size="6" face="Bookman Old Style">T</font></strong>he cloud storage is a huge step beyond the conventional storage mediums which have been available to us for so long. Blah Blah and so on... </em></p> <p>Ok, what I just wrote there would making zero absolute sense for most people out there, but don’t sweat it!</p> <p>A successful technology doesn’t necessarily need big words of introduction; the only fact worth sharing it should be why it is helpful and useful.</p> <p>So today I talk on how YOU can use your personal space on the cloud for storage, and specifically the <strong><em>Dropbox</em></strong>.</p> <p>The specific aim here is a small How-To to help you and your family set-up dropbox to share photos and other documents in your family circle. </p> <p><em><strong><u>But first, a Brief Introduction…</u></strong></em><br><br>The simple mediums of storage we are versed with include Hard Disks, CD/DVD ROMs and portable media like USB drives. This cloud storage is but a term we use to describe something which is stored in a similar way, but (as an <strong><em>abstracted</em></strong> storage) on the internet.</p> <p>There are many providers for online cloud storage like Microsoft's One Drive, Drop-box, Google Drive and so on.</p> <p>And most of them are easy to use and integrate better by having <strong><em>WINDOWS </em></strong>based clients, working seamlessly in the existing File Manager (like Windows Explorer). </p> <p>This integration abstracts the storage and retrieval of files on the cloud thereby making it very easy to upload files/data to the could and download the same from the Cloud. </p> <p><strong><em><u>About DropBox</u></em></strong></p> <p>Dropbox provides a secure and common location on the cloud for your personal stuff (acting as a secure backup) and also for stuff like photos, documents or videos which you may want to share across your contact list. <p>Although the facility is a boon for personal asset / document sharing (i.e. having all time access to your personal files on any device). but Dropbox also makes it easy to share your stuff with others in your address book. <p>So let’s Start! <p>1. <strong>Sign-up!</strong> - The first step you need to take to use Dropbox is to create an account. In any browser, just go to the <a href="https://www.dropbox.com">Dropbox website</a> and fill out the Sign Up form. <p><a href="http://lh3.googleusercontent.com/-bOHteVxx_Mc/VVm45GYicOI/AAAAAAAABFc/ooiZcmKHDR0/s1600-h/image9.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-dEa7kKDJfbM/VVm46F-tmDI/AAAAAAAABFk/k_XHnGxwIHg/image_thumb5.png?imgmax=800" width="244" height="167"></a> <p>Click Sign up, and proceed. <p>Post sign-up, you will be presented with the Intro screen next - <p><a href="http://lh3.googleusercontent.com/-s2Rze8V76Z4/VVm460tYWJI/AAAAAAAABFs/SsGxCcBZRtg/s1600-h/image13.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-UJqJnrpE7CE/VVm47v4MquI/AAAAAAAABF0/5byWUT3hb-o/image_thumb7.png?imgmax=800" width="244" height="164"></a> <p>Here, you can take the Dropbox Tour to know it better. <p>2. <strong><u>Installation</u></strong> is available via the second step, where in you can download and install the app on windows. This is what we want. The direct link for the installation page is <a href="https://www.dropbox.com/install" target="_blank">here</a>. <p>By default, installation will download the minimal setup and continue with the online download. You can choose the offline install option and skip the middle step entirely. <p><a href="http://lh3.googleusercontent.com/-zqMm3G_3bG4/VVm48EUPgoI/AAAAAAAABF8/DwOgQDugaG8/s1600-h/image20%25255B1%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-_xMqP0qRHDE/VVm480X2PnI/AAAAAAAABGE/7TAsHIaM1yg/image20_thumb.png?imgmax=800" width="296" height="194"></a> <p>After installation, choose the default options; Keep clicking next and enter your credentials to link up your local windows (hard-disk) folder with the folder in the cloud (or on the internet). <p>3. <u><strong>Login</strong></u> the application post setup, and you will get the below screen after it is done - <p><a href="http://lh3.googleusercontent.com/-jFUs91IViB4/VVm49kQi_DI/AAAAAAAABGM/BCyEXQTUu3A/s1600-h/image30.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-YMu_2-0ZBAk/VVm4-Y2T0FI/AAAAAAAABGU/hvdDKW6Hf7Y/image_thumb14.png?imgmax=800" width="157" height="244"></a> <p>Choosing advanced settings will help you choose any other folders for the custom dropbox location, and also the (sub) folders you can sync. The default location is <strong><font face="Courier New"><Your-Windows-profile-home>\Dropbox</font></strong></p> <p><strong><u>NOTE:</u> The profile location will differ on the various OS versions. As a shortcut, simply press Windows + R to open Run Dialog, and type (copy paste) the following - </strong></p> <blockquote> <p><font face="Courier New"><strong>%UserProfile%\Dropbox</strong></font></p></blockquote> <p>This should work on any (Windows) O.S. <p>4. <strong>Using Dropbox </strong>- After the setup and login, you can start managing the folders and content, anything which is in your online dropbox folder will automatically appear in your local windows location too. <p>To start adding files across to the dropbox from your local Windows drive, below is the sequence - <ol> <li>Locate the files/folders you want to share; <li>Copy or drag drop them in your local shared location (%UserProfile%\Dropbox). These will then start syncing to your online allocated folder. </li></ol> <p><strong>Sharing Files - </strong> <p>To start sharing, you can do it online (via the browser) or via the Desktop application - <ol> <li>Via App - Open your Dropbox folder, and find the file or folder you’d like to share. Simply Right-click and click on “<strong><em>Share Dropbox</em></strong>”.<a href="http://lh3.googleusercontent.com/-TTaSRX072WI/VVm4-w6aZhI/AAAAAAAABGc/TRN0dmXTluE/s1600-h/image34.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.googleusercontent.com/-tTfk2ufvuxM/VVm4_qbnYlI/AAAAAAAABGk/dmMovrXTADw/image_thumb16.png?imgmax=800" width="244" height="141"></a><br><br>This will copy the link and you can share it via mail etc. with the people you want to enable access for it.<br> <li>Via browser – Follow below steps - </li></ol> <blockquote> <p>a. Go to <a href="https://dropbox.com">https://dropbox.com</a> and sign in; click on <strong><em>Share a folder</em></strong> (top of the window).<br><br>b. You can choose to create a new folder for sharing (click Next, enter new folder name)<br><br>c. Click Next and similar to the Windows setup, just enter the email addresses of the people for the sharing invite and click Share folder.</p></blockquote> <p>Done!</p> <p>Although some of the steps above may seem to be difficult, but if you follow them to the letter, you should be good!</p> <p>Nevertheless, I am adding some excellent links for user reference as well - </p> <ol> <li><a href="https://www.dropbox.com/tour" target="_blank">Dropbox tour</a> – start here <li><a title="https://www.dropbox.com/help" href="https://www.dropbox.com/help">https://www.dropbox.com/help</a> – Go here and get help on anything! <li><a href="https://www.dropbox.com/en/help/19" target="_blank">How do I share folders with other people?</a></li></ol> <p>Let me know your comments and/or your questions if any!</p> <div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8401f629-8cdc-47e0-bd1e-86250997d8ab" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Technorati Tags: <a href="http://technorati.com/tags/Dropbox" rel="tag">Dropbox</a>,<a href="http://technorati.com/tags/windows" rel="tag">windows</a>,<a href="http://technorati.com/tags/help" rel="tag">help</a>,<a href="http://technorati.com/tags/configure" rel="tag">configure</a>,<a href="http://technorati.com/tags/share" rel="tag">share</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-64224243245094401172015-04-15T09:47:00.001-07:002015-04-15T09:59:29.514-07:00My Quest for the perfect (windows) clone and backup solution!<p><strong><font size="3">> = <</font></strong></p> <p>With 2015 (almost) halfway gone, can you imagine my pain when I am simply looking for a solution to -</p> <p>1. Create a <strong>[LIVE!]</strong> clone of my Laptop’s 500GB HDD and <br>2. Let me update it on schedule…</p> <p>and able to find none… yes…NONE AT ALL!</p> <p>I just want something to - </p> <p>1. Provide me a fool-proof backup strategy AS WELL AS HELPS</p> <p>2. In advent of any catastrophic failure in my current HDD or similar situation, to just pop the faulty bugger out and replace with the last backup; and pronto! loads up the Windows O.S. … again!</p> <p>WTF Microsoft!! </p> <p>Is it that difficult?? In 2015? A job which <a href="https://www.bombich.com/" target="_blank">Carbon Copy Cloner</a> has been doing for more than a couple of years (sadly Mac only, sigh!)? </p> <p>I mean, Seriously? Come on! </p> <p>So my friends and fellow nerds out there… Anyone has any Ideas? </p> <p>Please share.</p> <p><strong><u>Note:</u> I will surely update this IFF I find a viable solution. I know about the options available (almost all provide live clone, but none does the backups on schedule), so I need something which works as I want it to!</strong></p> <p><strong>Update#1: I found this - </strong><a title="https://www.fssdev.com/products/casper/" href="https://www.fssdev.com/products/casper/"><strong>https://www.fssdev.com/products/casper/</strong></a><br>Let’s try and check shall we, I will updtae here for more findings.?</p> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-10353085661193104942015-03-10T00:39:00.001-07:002015-03-10T02:52:21.331-07:00How To: Perform an unattended MySQL DB dump restore<p><a href="http://lh6.ggpht.com/-DrNfG6tSCW8/VP6fk6fgjoI/AAAAAAAABEg/MffOuSzcT4Y/s1600-h/MySQL_database%25255B14%25255D.png"><img title="MySQL_database" style="display: inline" alt="MySQL_database" src="http://lh5.ggpht.com/-9tPcK4Gzjqk/VP6flkpIrcI/AAAAAAAABEo/RtdRMLKhXKQ/MySQL_database_thumb%25255B14%25255D.png?imgmax=800" width="233" height="233"></a></p> <p>Say you have the following setup - </p> <ol> <li>A MySQL DB on which you have to restore a previously taken DB DUMP; <li>A *INX based O.S. / Server (could be RHEL etc.) <li>An SSH connection / session to the same </li></ol> <p>In a normal scenario, you either access your DB via a DB client (like SQLYog) or via a remote SSH (using putty). </p> <p>When you need to restore a DB DUMP on an existing DB instance, you use the mysql command as - </p> <p><font face="Courier New"><strong>[ssh@xyz]# mysql mydb < /dbdumps/mydb_dump.sql<br></strong></font><br>This will start the restore process. For a small DB this should be done quickly. But considering a realistic live scenario with your DB in GBs of data, you will need at least upwards of 30 minutes.</p> <p>Now what if you need to disconnect your SSH for any reason? Maybe step out for a meeting, or pack-up your rig for your drive home?</p> <p>The reason may be anything but the considering the fact that the restore process is launched specifically under the SSH shell process, if the SSH disconnects during the restore, it would kill the restore too.</p> <p>So the only logical choice is to leave the terminal open until the dump is completely restored, with the normal termination of the process. </p> <p>Here-in comes the nohup. </p> <p>Quoting from Wikipedia, </p> <blockquote> <p><strong><a href="http://en.wikipedia.org/wiki/Nohup" target="_blank">Nohup</a> </strong>is a Unix command, used to start another program, in such a way that it does not terminate when the parent process is terminated. This is accomplished by ignoring the signal 'SIGHUP'. This is what distinguishes nohup from simply running the command in the background with '&'.</p></blockquote> <p>So in essence, the nohup allows the restore process to continue running even if the remote SSH session is terminated when the SSH client disconnects.</p> <p>Also, since we may want to use the SSH session after the process to restore is started (via nohup), we use the nohup in conjunction with the ‘&’ command.</p> <p>The ampersand as a suffix ensures the command is started as a background daemon (under the system process). It will leave the command line and proceed to run in the background.</p> <p>The entire goal above is thus achieved via the following command - </p><font face="Courier New"><strong>[ssh@xyz]# nohup mysql mydb < /dbdumps/mydb_dump.sql &<br></strong></font> <p>Running this gives you the below as a feedback result on prompt - </p> <p><font face="Courier New"><strong>[1] 5624<br>[ssh@xyz]# nohup: appending output to `nohup.out'</strong></font></p> <p>Let’s decrypt the above.</p> <p><strong><u>Meet the Process-id</u> - <font face="Courier New"><strong>5624</strong></font></strong></p> <p>Any process running on a Unix system is always having a PID or a process-id. This is a unique identifiable unit with which a process is associated and can be manipulated. </p> <p>For example, the kill command (which is used to terminate a process) uses the following format -</p> <p>$ kill <process_id></p> <p>Thus the process id for the background is printed for convenience. </p> <p><strong><u>The nohup.out file</u></strong></p> <p>Also, as it is a background process, the standard I/O is not used for any prompts or error communication, Instead the same is redirected to the nohup.out file, created at the location where the process is launched (this can be located by the $ pwd – which will give the present working directory)</p> <p><strong><u>Status of nohup</u></strong></p> <p>All this is good, now that the restore is running merrily in the background. </p> <p>But how to know if and when this completes? How to know the status?</p> <p>The answer is using $ jobs.</p> <p><font face="Courier New"><strong>[ssh@xyz]# jobs<br>[1]+ Running nohup mysql mydb < /dbdumps/mydb_dump.sql &</strong></font><br></p> <p>So the current process is shows to be still running. If it would have completed, the status is changed from Running to Done.</p> <p>That’s it! Hope it helps someone out there! </p> <p>Let me know your comments and suggestion too.</p> <p><strong>Note: I will be covering the DB DUMP command later in detail, with its usage in conjunction with the CRON scheduler script.</strong></p> <div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:972e5164-38e1-4f72-9b89-b6398c81e067" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Technorati Tags: <a href="http://technorati.com/tags/Unix" rel="tag">Unix</a>,<a href="http://technorati.com/tags/MySQL" rel="tag">MySQL</a>,<a href="http://technorati.com/tags/Jobs" rel="tag">Jobs</a>,<a href="http://technorati.com/tags/nohup" rel="tag">nohup</a>,<a href="http://technorati.com/tags/dump" rel="tag">dump</a>,<a href="http://technorati.com/tags/restore" rel="tag">restore</a>,<a href="http://technorati.com/tags/DB" rel="tag">DB</a>,<a href="http://technorati.com/tags/RHEL" rel="tag">RHEL</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-58544408818028022252015-03-08T09:41:00.001-07:002015-03-08T09:50:15.787-07:00To help save a life…<p><a href="http://lh6.ggpht.com/-WFc3G-M3_8c/VPx7oiuzllI/AAAAAAAABD4/FXu7Yl1vGz8/s1600-h/image%25255B3%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-LL_BMxuH5Lc/VPx7pvvTyJI/AAAAAAAABEA/uq8NTLSSBZI/image_thumb%25255B1%25255D.png?imgmax=800" width="264" height="198"></a></p> <p>(The below post is replicated in entirety from my Facebook page dated February 28. It is an actual incident.)</p> <p>Something happened today evening on my way back from the office. An accident. <p>Not mine. A random guy on his bike. Going back home like everyone else. <p>This happened around 8:00 PM on the Noida extension route, just 200 meters before the Gaur roundabout. <p>The guy (whom I don’t want to disclose) going back home in Crossings Republic from his IT firm, was driving fine but unluckily could not see and slow down in time for the dirt rubble on the road (probably left behind by one of the many callous trucks and tractors which ply on that route). <p>End result a bad skid, hit with the pavement and countless injuries. By the time I stopped and reached him, he was lying all covered in blood, with tattered clothes and desperate cries of pain. <p>Lots of people stopped to help, some to watch but many slowed down, looked but chose to drive off. <p>Back to their destination, their homes and back to their comfortable lives. <p>Do you know how real blood looks on the asphalt? It's so red; bloody frightening red. And it was everywhere. <p>I was there with the others. We helped lift him up and got him in a car for the nearest hospital (bless that driver for having the sense of responsibility and courage). <p>The bike was a wreck. Me and another random guy (who was on his bike) stayed behind and waited for the cops to turn up. Someone had taken the onus to inform them down the road so that they could come and take care of the vehicle. <p>So we waited to hand over the same to the cops, who as expected, didn't turn up. In the end, we had to park his bike on the roadside and decided to hand the keys over to the guy himself (whom we expected to have reached the hospital by that time). <p>This way, we hoped to check on the guy's well-being too. Reaching the nursing home, we found him all clothes torn, swollen up and unable to speak (due to the bandages around his face) and nursing some broken bones. but he was able to identify and acknowledge us. <p>It seems he would survive an recover, thankfully. <p>I just reached home a few minutes back. And all along the way back I had but only one thought. <p>How sudden and unpredictable life is.. and how much dependent we all are for our survival on the virtues of our society, on the mood and courage of our fellow beings! <p>An incident like this puts many things in perspective. Seeing what is known to all, and happens time and again, I wondered why people don’t have the courage and the heart to stop and help someone in need? <p>And what was most disheartening was that many of those who moved on, they were those my age, the youth! <p>We, the ones, who on one hand are responsible for changing conventional mind-sets of our society, who bring in waves of change in politics and what not; and on the other, we still follow the pretend play of closing our eyes and moving on! Such double standards, I ask? <p>I have never stepped back from my social responsibility and will continue to do so till I can, but will someone stop by for me in my time of need? <p>With so many instances all around us daily, I cannot help but think that if even 20 people stop to help someone in need daily, 20 lives can be saved in a day! <p>Think about them, those who can be helped, their families, their future, their lives which would follow thereafter! <p>I have nothing more to say but this, only if I have the courage today to be selfless, to stop and save someone in need, will someone tomorrow do the same for me. <p>Think about it.<br>(sorry for the long rant, but I had to do it)<br>-----------------------------------------------------------------------------------------------------------------</p> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-71846538264257692302014-12-05T04:27:00.001-08:002014-12-05T04:27:40.487-08:00The Cause and effect of Google’s driverless cars.<p><a href="http://lh4.ggpht.com/-I7V7XNux1o0/VIGkt2THbuI/AAAAAAAABC8/wYF0qDzJ7fw/s1600-h/image4.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-LELEvoCC9g4/VIGkuuiFYSI/AAAAAAAABDE/OfuC428dX6E/image_thumb2.png?imgmax=800" width="299" height="84"></a></p> <p>In case you haven’t been living under a rock, you must be aware of the <b><a href="http://en.wikipedia.org/wiki/Google_driverless_car" target="_blank">Google’s Self-Driving Cars</a>.</b></p> <p>What was a starter project by <a href="http://en.wikipedia.org/wiki/Google">Google</a> for developing <a href="http://en.wikipedia.org/wiki/Autonomous_car">autonomous cars</a>, the concept is now beyond the experimental stages and nearing its implementation.</p> <p>In the US, these "self-driving” cars were first introduced in Nevada followed by Florida, the second state to allow autonomous cars on state roads, followed up by California.</p> <p>Now UK is planning to allow driverless cars on public roads from 2015. </p> <p>So all this seems like a pretty cool implementation of technology which is even publically accessible! But what are the effects of this cause?</p> <p>‘Effects’ you may ask? Yes, there are effects here too. </p> <p>Since safety is a prime focus and problem area these cars are aimed to tackle, there is the statistics of low mortality which will slowly be prevalent.</p> <p>The <a href="http://www.makerbot.com/" target="_blank"><em><strong>MakerBot</strong></em></a> founder Bre Pettis said in his recent interview with <strong><a href="http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/">Fortune</a></strong>, that </p> <blockquote> <p>“…the take off of self-driving cars could lead us to more organ shortages than ever, since a major source of organ donations come from car accident victims.</p> <p>We have this huge problem that we sort of don't talk about, that people die all the time from car accidents, Right now, our best supply of organs comes from car accidents. So, if you need an organ you just wait for somebody to have an accident, and then you get their organ and you're better."</p></blockquote> <p>Sounds gross? Yes, but sadly, that is the reality.</p> <p>As per the current statistics - </p> <blockquote> <p>“30,000 people die in traffic collisions in the U.S. and 90% of U.S. auto collisions are blamed on human error, and 40% are the result of factors such as alcohol, drugs or fatigue. Therefore robotic cars, such as Google driverless Car, are designed to navigate roads and keep passengers safe.”</p></blockquote> <blockquote> <p>“So if there is less car deaths, organ donations would be adversely impacted. Then the 3D printed organ might be a solution. Although this is a dark way of looking at it, Griffith also agrees that Pettis has a point. Pettis pointed out that 3D printing organs will not be the focus of development until the self-driving technology causes the shortages.”</p></blockquote> <p>So here is the <em><strong>cause</strong></em>, and the <strong><em>effect</em></strong>, all clearly defined. </p> <p>And unless the 3D organ printing becomes a viable and an effective solution, sadly the statistics for death by accidents and death due to lack of organ donations would eventually even out.</p> <p>References: <a title="http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/" href="http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/">http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/</a></p> <div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:aec3c9c4-92c5-4472-a0ee-f76c110dc27f" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">Technorati Tags: <a href="http://technorati.com/tags/Google" rel="tag">Google</a>,<a href="http://technorati.com/tags/Driverless" rel="tag">Driverless</a>,<a href="http://technorati.com/tags/carss" rel="tag">carss</a>,<a href="http://technorati.com/tags/autonomous" rel="tag">autonomous</a>,<a href="http://technorati.com/tags/3D+print" rel="tag">3D print</a>,<a href="http://technorati.com/tags/organ" rel="tag">organ</a>,<a href="http://technorati.com/tags/donation" rel="tag">donation</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-41322113338002247352014-08-19T23:32:00.001-07:002014-08-19T23:37:05.003-07:00The Cause and effect of Google’s driverless cars.<p><a href="http://lh4.ggpht.com/-8C7RVHFVHh4/U_RA5170hvI/AAAAAAAAA90/06461ZLF0O4/s1600-h/image%25255B4%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-g66Dafnu-Vo/U_RA7Gg5uvI/AAAAAAAAA98/rRfOC0jsqCk/image_thumb%25255B2%25255D.png?imgmax=800" width="299" height="84"></a></p> <p>In case you haven’t been living under a rock, you must be aware of the <b><a href="http://en.wikipedia.org/wiki/Google_driverless_car" target="_blank">Google’s Self-Driving Cars</a>.</b></p> <p>What was a starter project by <a href="http://en.wikipedia.org/wiki/Google">Google</a> for developing <a href="http://en.wikipedia.org/wiki/Autonomous_car">autonomous cars</a>, the concept is now beyond the experimental stages and nearing its implementation.</p> <p>In the US, these "self-driving” cars were first introduced in Nevada followed by Florida, the second state to allow autonomous cars on state roads, followed up by California.</p> <p>Now UK is planning will allow driverless cars on public roads from 2015. </p> <p>So all this seems like a pretty cool implementation of technology which is even publically accessible! But what are the effects of this cause?</p> <p>‘Effects’ you may ask? Yes, there are effects here too. </p> <p>Since safety is a prime focus and problem area these cars are aimed to tackle, there is the statistics of low mortality which will slowly be prevalent.</p> <p>The <a href="http://www.makerbot.com/" target="_blank"><em><strong>MakerBot</strong></em></a> founder Bre Pettis said in his recent interview with <strong><a href="http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/">Fortune</a></strong>, that </p> <blockquote> <p>“…the take off of self-driving cars could lead us to more organ shortages than ever, since a major source of organ donations come from car accident victims.</p> <p>We have this huge problem that we sort of don't talk about, that people die all the time from car accidents, Right now, our best supply of organs comes from car accidents. So, if you need an organ you just wait for somebody to have an accident, and then you get their organ and you're better."</p></blockquote> <p>Sounds gross? Yes, but sadly, that is the reality.</p> <p>As per the current statistics - </p> <blockquote> <p>“30,000 people die in traffic collisions in the U.S. and 90% of U.S. auto collisions are blamed on human error, and 40% are the result of factors such as alcohol, drugs or fatigue. Therefore robotic cars, such as Google driverless Car, are designed to navigate roads and keep passengers safe.”</p></blockquote> <blockquote> <p>“So if there is less car deaths, organ donations would be adversely impacted. Then the 3D printed organ might be a solution. Although this is a dark way of looking at it, Griffith also agrees that Pettis has a point. Pettis pointed out that 3D printing organs will not be the focus of development until the self-driving technology causes the shortages.”</p></blockquote> <p>So here is the <em><strong>cause</strong></em>, and the <strong><em>effect</em></strong>, all clearly defined. </p> <p>And unless the 3D organ printing becomes a viable and an effective solution, sadly the statistics for death by accidents and death due to lack of organ donations would eventually even out.</p> <p>References: <a title="http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/" href="http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/">http://fortune.com/2014/08/15/if-driverless-cars-save-lives-where-will-we-get-organs/</a></p> <p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:aec3c9c4-92c5-4472-a0ee-f76c110dc27f" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Google" rel="tag">Google</a>,<a href="http://technorati.com/tags/Driverless" rel="tag">Driverless</a>,<a href="http://technorati.com/tags/carss" rel="tag">carss</a>,<a href="http://technorati.com/tags/autonomous" rel="tag">autonomous</a>,<a href="http://technorati.com/tags/3D+print" rel="tag">3D print</a>,<a href="http://technorati.com/tags/organ" rel="tag">organ</a>,<a href="http://technorati.com/tags/donation" rel="tag">donation</a></div></p> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-67924467645043164912014-05-14T05:36:00.001-07:002014-05-14T08:50:34.178-07:00Using MySQL / Java and getting the noAccessToProcedureBodies issue? Read on..<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://lh6.ggpht.com/-ekDHE9UEyo8/U3NjVJPuOpI/AAAAAAAAA8o/_0VqIrA0i14/s1600-h/java_logo%25255B4%25255D.png"><img alt="java_logo" border="0" src="http://lh3.ggpht.com/-vZoZHpWcwjk/U3NjV8rg12I/AAAAAAAAA8w/Bna_BbD-qyY/java_logo_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border-color: -moz-use-text-color; border-style: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="java_logo" /></a><br />
If you use much the MySQL + Java setup, you may have faced the ‘<b>noAccessToProcedureBodies</b>’ error while accessing stored procedures (mostly remotely).<br />
The chances are that the procedure was created by another user (i.e. the <b><i>DEFINER </i></b>attribute), and the calling user is different.<br />
I recently faced this issue in one of my projects, where-in we were trying to execute a remote DB’s stored procedure from a java application. <br />
A common solution on the internet is to use the “noAccessToProcedureBodies=true” option in the JDBC connection string. <br />
This seems to work for most of the people out there, but sadly didn’t work for us. What we tried then is another option called the “useInformationSchema=true”.<br />
We removed the earlier option ‘noAccessToProcedureBodies’ option and added this in the JDBC string. This solution too eluded us, but then I tried upgrading the mysql-connector. We were using the mysql-connector-java-5.1.9 version which ideally should have worked (as we just needed a > 5.0.4 version for the solution)<br />
But then I upgraded this to the mysql_connector_java_5.1.30 and this functionality started behaving as expected!<br />
So, the end solution was to use the ‘useInformationSchema’ in the JDBC conn string and have the latest connector in place!<br />
Technorati Tags: <a href="http://technorati.com/tags/MySQL" rel="tag">MySQL</a>,<a href="http://technorati.com/tags/Java" rel="tag">Java</a>,<a href="http://technorati.com/tags/Issue" rel="tag">Issue</a>,<a href="http://technorati.com/tags/Read" rel="tag">Read</a>,<a href="http://technorati.com/tags/error" rel="tag">error</a>,<a href="http://technorati.com/tags/procedures" rel="tag">procedures</a>,<a href="http://technorati.com/tags/setup" rel="tag">setup</a>,<a href="http://technorati.com/tags/procedure" rel="tag">procedure</a>,<a href="http://technorati.com/tags/user" rel="tag">user</a>,<a href="http://technorati.com/tags/DEFINER" rel="tag">DEFINER</a>,<a href="http://technorati.com/tags/solution" rel="tag">solution</a>,<a href="http://technorati.com/tags/option" rel="tag">option</a>,<a href="http://technorati.com/tags/JDBC" rel="tag">JDBC</a>,<a href="http://technorati.com/tags/connection" rel="tag">connection</a>,<a href="http://technorati.com/tags/version" rel="tag">version</a>,<a href="http://technorati.com/tags/noAccessToProcedureBodies" rel="tag">noAccessToProcedureBodies</a>,<a href="http://technorati.com/tags/useInformationSchema" rel="tag">useInformationSchema</a>,<a href="http://technorati.com/tags/connector" rel="tag">connector</a> </div>
Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-53825649916655860782014-03-13T00:17:00.001-07:002014-03-13T00:17:50.660-07:00Rapid Environment Editor – A must have for every developer using Windows OS!<p>If your development environment is Windows, <strong>Rapid Environment Editor</strong> is going to be your new favorite power user application.</p> <p><img alt="Rapid Environment Editor screenshot" src="http://www.rapidee.com/images/rapidee.png.pagespeed.ce.Jxihq-jte3.png" width="574" height="485"></p> <p>This nifty little application is helpful in readily accessing the obscure to change OS environment variables.</p> <p>It provides an easy to use GUI where-in you can boss around your Windows Environment with ease and with much more power than the small and “hard to understand” default environment editor.</p> <p>The home URL is <a href="http://www.rapidee.com/en/about" target="_blank">here</a>. </p> <p>The latest version <a href="http://www.rapidee.com/en/download#winxp">RapidEE 8.x</a> supports all versions of Windows, XP, 2003, Vista, 2008, Windows 7 & 8 and both 32 and 64-bit versions. It is also available as a portable download!</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4a127bd1-c1c4-4773-953a-112bfb62bcb2" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Rapid" rel="tag">Rapid</a>,<a href="http://technorati.com/tags/environment" rel="tag">environment</a>,<a href="http://technorati.com/tags/editor" rel="tag">editor</a>,<a href="http://technorati.com/tags/windows" rel="tag">windows</a>,<a href="http://technorati.com/tags/operating+system" rel="tag">operating system</a>,<a href="http://technorati.com/tags/java" rel="tag">java</a>,<a href="http://technorati.com/tags/classpath" rel="tag">classpath</a>,<a href="http://technorati.com/tags/path" rel="tag">path</a>,<a href="http://technorati.com/tags/poweruser" rel="tag">poweruser</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-52836149809198860142014-02-08T21:33:00.001-08:002014-02-08T21:33:42.865-08:00This post has been compiled on my N9005! <div xmlns='http://www.w3.org/1999/xhtml'><br/><p style='font-size: xx-small' align='right'>posted from <a href='https://market.android.com/details?id=pl.przemelek.android.blogger'>Bloggeroid</a></p></div>Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-18738900206545395862014-01-21T21:38:00.001-08:002014-01-21T22:08:14.274-08:00Modernizr - Detecting HTML5 and CSS3 features in client browser easily! <Part 2><p><a href="http://lh4.ggpht.com/-wbcpnxonPOU/Ut9gST2P-UI/AAAAAAAAA6E/DJLHIuYDmcs/s1600-h/modernizr%25255B1%25255D%25255B14%25255D.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="modernizr[1]" border="0" alt="modernizr[1]" src="http://lh5.ggpht.com/-9VpeFY2aQWw/Ut9gTIw5KsI/AAAAAAAAA6M/ttn--k3W-0g/modernizr%25255B1%25255D_thumb%25255B7%25255D.jpg?imgmax=800" width="240" height="80"></a></p> <p><strong>Continuing with the Modernizr series, we now start with the implementation.</strong></p> <h4>So how to go about implementing these compatibility checks?</h4> <p>Until recently, we have been using many techniques for Browser Detection, the most common of which is to use JavaScript for getting information from the user-agent header. <p>Listing 1 provides us an idea about implementing the user-agent header check (a.k.a. UA sniffing).</p> <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"> <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1"> 1:</span> <script type=<span style="color: #006080">"text/javascript"</span>></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2"> 2:</span> ieDetectionFunction(){</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3"> 3:</span> <span style="color: #0000ff">if</span> ( navigator.userAgent.indexOf(<span style="color: #006080">"MSIE"</span>) > 0 ) {</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4"> 4:</span> <span style="color: #008000">// Yes, we have IE, now do IE related stuff!</span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5"> 5:</span> }</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6"> 6:</span> }</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7"> 7:</span> </script></pre><!--CRLF--></div></div><br /><p>Listing 1: Function with user-agent header check <br /><p>Though UA sniffing has been a standard practice, nevertheless it poses some issues. Considering the above example, we are faced with the inability to ascertain the exact ‘MSIE’ version in this case. Moreover, it also doesn’t provide any function specific checking. <br /><p>For checking versions, the workaround is to use the navigator object in combination with regular expressions to detect the various browsers and their exact versions. <br /><p>Specifically, we would query the navigator.appName and navigator.userAgent properties. However, using this approach again won’t solve the feature detection handicap mentioned above. <br /><p>It would be both faster and more reliable to have the ability of using probing functions which can confirm the availability of objects, methods, attributes and so on (i.e. catering to the 4 points mentioned in the previous section) <br /><p>We can always create these probing functions which then query for the required stuff, and if not found return null. But the overheads for these custom monitor functions increase if we are having a big web based project, intended to run on multitude browsers. <br /><p>Enter the JavaScript library, Modernizr.</p><br /><a name='more'></a><br /><h4>Modernizr – an introduction</h4><br /><p>Modernizr provides standard detection functions which easily detect HTML5 and CSS3 based features. It is an MIT-licensed JavaScript library which readily detects the specifics of the HTML5 and CSS3 standards. What Modernizr actually does is to provide the developer with the information as to whether the current browser has native support for a particular feature or not. <br /><p>Unlike the UA sniffing examples above, feature detection using this library is more reliable and convenient. <br /><p>The developer version of the script library can be downloaded from <a href="http://modernizr.com/downloads/modernizr-latest.js">http://modernizr.com/downloads/modernizr-latest.js</a>. This URL always points to the latest version (which is <b><i>v2.6.2</i></b> as of writing). <br /><p>The above version is an uncompressed script version and contains all the possible checks the library offers. Ideally, this should be used for development and learning purposes. <br /><p>For use in a production environment, a feature selection tool or a build tool is provided (<a href="http://modernizr.com/download/">http://modernizr.com/download/</a>) which can be used for selecting only the required feature detection tests. <br /><p>On generation, this will create a feature specific, optimized and compressed version of the script, ideal for production environment. <br /><p><a href="http://lh5.ggpht.com/-TkNbnIkRPTg/Ut9ZaOgVN7I/AAAAAAAAA5c/UxYpBZM0H7s/s1600-h/image%25255B2%25255D.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-DyYRcTs8ZH0/Ut9ZbGTRl-I/AAAAAAAAA5k/YHgv4vPXfco/image_thumb.png?imgmax=800" width="233" height="240"></a> <br /><p>Figure 1: Screen shot showing the stats results after profiling JS code. <br /><p> <h4>Using Modernizr hands-on</h4><br /><p>After getting the script to your local workspace, you need to include it in your document’s <head> tags.</p><br /><div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><br /><div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1"> 1:</span> <span style="color: #0000ff"><!</span><span style="color: #800000">DOCTYPE</span> <span style="color: #ff0000">html</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2"> 2:</span> <span style="color: #0000ff"><</span><span style="color: #800000">html</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3"> 3:</span> <span style="color: #0000ff"><</span><span style="color: #800000">head</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4"> 4:</span> <span style="color: #0000ff"><</span><span style="color: #800000">meta</span> </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5"> 5:</span> <span style="color: #ff0000">charset</span><span style="color: #0000ff">="utf-8"</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6"> 6:</span> <span style="color: #0000ff"><</span><span style="color: #800000">title</span><span style="color: #0000ff">></span>HTML5 feature detection via </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7"> 7:</span> Modernizr<span style="color: #0000ff"></</span><span style="color: #800000">title</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8"> 8:</span> <span style="color: #0000ff"><</span><span style="color: #800000">script</span> </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9"> 9:</span> <span style="color: #ff0000">src</span><span style="color: #0000ff">="modernizr.min.js"</span><span style="color: #0000ff">></</span><span style="color: #800000">script</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10"> 10:</span> <span style="color: #0000ff"></</span><span style="color: #800000">head</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11"> 11:</span> <span style="color: #0000ff"><</span><span style="color: #800000">body</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12"> 12:</span> <span style="color: #0000ff"><</span><span style="color: #800000">p</span><span style="color: #0000ff">></span>Having </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13"> 13:</span> Modernizr in my head!<span style="color: #0000ff"></</span><span style="color: #800000">p</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14"> 14:</span> <span style="color: #0000ff"></</span><span style="color: #800000">body</span><span style="color: #0000ff">></span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15"> 15:</span> <span style="color: #0000ff"></</span><span style="color: #800000">html</span><span style="color: #0000ff">></span></pre><!--CRLF--></div></div><br /><p>Listing 2: Including Modernizr script in an HTML document <br /><p>After including it in your document, you have a variety of functions at your disposal to check for the required browser capability or features. <br /><p>As we know in HTML5 the <canvas> element provides a bitmap based canvas for rendering custom graphics (chart or game related) and other images. So as an example, let’s use the script to check for the canvas element. <br /><br /><div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><br /><div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1"> 1:</span> <span style="color: #0000ff">if</span> (Modernizr.canvas) {</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2"> 2:</span> <span style="color: #008000">// Ok, we have the canvas, so use it!</span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3"> 3:</span> } </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4"> 4:</span> <span style="color: #0000ff">else</span> {</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5"> 5:</span> <span style="color: #008000">// oops, no inbuilt canvas support! Our alternate code goes </span></pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6"> 6:</span> here.</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7"> 7:</span> }</pre><!--CRLF--></div></div><br><br /><br /><p>Listing 3: Checking for canvas support <br /><p>So Listing 3 helps us confirm (easily) that the client browser is actually capable of showing our canvas effects, or if we have to use the fallback alternatives (which we need to have in place). <br /><p>We can also couple up the element specific getter functions with the probing functions as shown in Listing 4. <br /><br /><div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><br /><div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1"> 1:</span> <span style="color: #0000ff">function</span> getCanvasContext() { </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2"> 2:</span> <span style="color: #0000ff">if</span> (!canvasSupported()) { </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3"> 3:</span> </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4"> 4:</span> <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5"> 5:</span> }</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6"> 6:</span> <span style="color: #0000ff">var</span> canvasObject = </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7"> 7:</span> document.createElement(<span style="color: #006080">'canvas'</span>); </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8"> 8:</span> <span style="color: #0000ff">var</span> canvasContext = </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9"> 9:</span> canvasObject.getContext(<span style="color: #006080">'2d'</span>); </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10"> 10:</span> <span style="color: #0000ff">return</span> canvasContext; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11"> 11:</span> }</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12"> 12:</span> </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13"> 13:</span> </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14"> 14:</span> <span style="color: #0000ff">function</span> canvasSupported(){ </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15"> 15:</span> <span style="color: #0000ff">if</span> (Modernizr.canvas) { </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16"> 16:</span> </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17"> 17:</span> <span style="color: #0000ff">return</span> <span style="color: #0000ff">true</span>;</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum18"> 18:</span> } </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum19"> 19:</span> <span style="color: #0000ff">else</span> {</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum20"> 20:</span> </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum21"> 21:</span> <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span>;</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum22"> 22:</span> } </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum23"> 23:</span> }</pre><!--CRLF--></div></div><br><br /><br /><p>Listing 4: Creating a canvas context when canvas support exists in browser <br /><p>There's many more ways and inbuilt functions to check for the browser specific HTML5 and CSS3 features. <br /><p>You can explore these further by referring to the Modernizr homepage (check the links in the conclusion / follow-up section). <br /><p><b><i>Modernizer – The shortfalls (what cannot be detected)</i></b> <br /><p>Although the Modernizr library tries to make feature speculation more conclusive, it does have its shortfalls. Some of the featured which are yet undetectable are: <br /><p>· Drag/Drop feature <br /><p>· Some UI detection (web-forms / date-picker / color-picker UI etc.) <br /><p>· Audio / Video loop attribute <br /><p>· Font rendering effects (anti-aliasing, smoothening etc.) <br /><p>· Keyboard events and event process priority (mouse & keyboard) and so on. <br /><p>It is hoped that the coming versions would cater to more feature checks, until then the above features can be detected with use of older techniques like UA sniffing. <br /><p>Links in this conclusion section can be pursued for further details and usage of the same. <br /><p> <h3>Conclusion & follow up</h3><br /><p>The above introduction should help us evaluation browser capabilities faster and more accurately. In coming issues we will further discuss HTML5’s other new concepts. More information about Modernizr can be had by visiting the following links: <br /><p>· <b>About HTML5 – </b><a href="http://en.wikipedia.org/wiki/HTML5">http://en.wikipedia.org/wiki/HTML5</a><b></b> <br /><p>· <b>HTML5 & CSS3 latest features in action! A video presentation </b>- <a href="http://channel9.msdn.com/Events/Build/2012/3-114">http://channel9.msdn.com/Events/Build/2012/3-114</a><b></b> <br /><p>· <b>Modernizer Homepage</b> - <a href="http://modernizr.com/">http://modernizr.com/</a><b></b> <br /><p>· <b>Modernizer Github</b> - <a href="https://github.com/Modernizr/Modernizr">https://github.com/Modernizr/Modernizr</a><b></b> <br /><p>· <b>HTML fallback list</b> – <a href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills">https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills</a><b></b> <br /><p>· <b>Modernizr Undetectable features</b> – <a href="https://github.com/Modernizr/Modernizr/wiki/Undetectables">https://github.com/Modernizr/Modernizr/wiki/Undetectables</a> </p><br /><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a6a8f7c1-a027-4b4f-a525-c431f757d838" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/HTML5" rel="tag">HTML5</a>,<a href="http://technorati.com/tags/JSMAG.+Modernizr" rel="tag">JSMAG. Modernizr</a>,<a href="http://technorati.com/tags/CSS3" rel="tag">CSS3</a>,<a href="http://technorati.com/tags/Firefox" rel="tag">Firefox</a>,<a href="http://technorati.com/tags/javascript" rel="tag">javascript</a>,<a href="http://technorati.com/tags/js" rel="tag">js</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-26678723384783150322013-12-29T04:10:00.001-08:002013-12-29T08:56:04.181-08:00Have kids? Read this :)<p><img alt="20 Excellent Websites That Make Your Children Smarter" src="http://cdn-4.lifehack.org/wp-content/files/2013/12/20-Excellent-Websites-That-Make-Your-Children-Smarter.jpg" width="279" height="160">If you have kids, then this post is for you!</p> <p><a href="http://www.lifehack.org/" target="_blank">Llifehack</a> has a wonderful collection of <a href="http://www.lifehack.org/articles/technology/20-excellent-websites-that-make-your-children-smarter.html" target="_blank">20 Excellent Websites That Make Your Children Smarter</a>!</p> <p>The post has a collection of links which will help you raise smarter kids. Internet is a strong medium, provided you know where to draw the line. Posts like this are what make it usefull.</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:14097074-441a-4d4d-9081-03a2dada2489" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/hacker" rel="tag">hacker</a>,<a href="http://technorati.com/tags/smart" rel="tag">smart</a>,<a href="http://technorati.com/tags/kids" rel="tag">kids</a>,<a href="http://technorati.com/tags/internet" rel="tag">internet</a>,<a href="http://technorati.com/tags/links" rel="tag">links</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-82960039446178045722013-12-09T00:14:00.001-08:002013-12-10T01:22:41.131-08:00Modernizr - Detecting HTML5 and CSS3 features in client browser easily!<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px; padding-top: 0px" title="modernizr" border="0" alt="modernizr" src="http://lh6.ggpht.com/-X38EQ1TN0TI/UqbdX9_4z-I/AAAAAAAAA40/-1pGEP42LEo/modernizr%25255B1%25255D.png?imgmax=800" width="240" height="80"></p> <p><em>The web-browser is a primal connection between any online service and a prospective user or client. With changing standards and old browser versions as common as they come, the need to evaluate ‘browser vs. new feature’ compatibility is now more important than ever.</em> </p> <p><em>Here-in I will give an introduction to the excellent Modernizr API. I am breaking this in easy to read parts, so stay tuned!</em></p> <hr> <h3>Introduction - HTML 5 & CSS 3 features</h3> <p>We know the importance of standards in the World Wide Web, one of which is the HTML markup standard. The HTML standard prevails as the ubiquitous structuring and presentation language for the World Wide Web. <p><b><i>HTML5</i></b> or the fifth iteration of HTML enables the provision of ‘beyond mark-up’ features, which until recently were available only by use of third party plugins. A good example of this is animation and video for web pages. <p>Web animation has long been a forte of Adobe’s Flash, which provides a rich end user experience. But the fact is that it is capable of burdening the bandwidth and occasionally causes memory issues for most modern browsers (this is especially prevalent in tabbed browser sessions having several flash widgets). <p>On the other hand, HTML5 now offers better inbuilt multimedia tag support, integration with geo-localization, drag-and-drop API support and so on. It allows in-built support and usage for video and audio. This enables handling web based multimedia as well as graphical content, without depending on traditional plugins and external APIs (albeit with some help from JavaScript and/or CSS3). <p>As far as the video is concerned, the HTML5’s canvas element makes it very easy to integrate and manipulate video related elements. <p><b><i>CSS3</i></b> on the other hand, is about evolution in design. It offers better in-built support for text decoration and rendering and tries not to rely on JavaScript as before for implementing the same. <p>Rounded corners, fancy menu support, rich background integration etc. all these ultimately work towards enhancing the overall end user experience. <p>An important factor which spearheaded or necessitated the integration of external features in the current HTML and CSS standards are the multiple and evolving information access techniques, namely mobile devices. <p>With diversified ecosystems and non-uniformity in standards, it is nothing short of a ‘developer’s hell’ to develop a ‘code-once run-anywhere’ solution. <p>For example, it is common knowledge that Adobe’s flash has support issues and known incompatibility on some Apple as well as Android devices. <p>Hence, we needed standards like HTML5 with CSS3 for designing cross-platform solutions. <p> <h4>Why do we need feature compatibility checks?</h4> <p>One aim is common across all of the modern day Web-browsers – to render the Web pages optimally and according to the latest specifications. But sadly, this attitude wasn’t there in the past. <p>Browser providers have had the habit of implementing exquisite, unique and popularly demanded features in their own unique manner, which eventually led to a broken standard ecosystem. <p>Although this seemed to suffice as far as the end-user is concerned, the developers got the short end of the stick! Actual development became difficult since these custom feature implementations had to be taken care of at the coding level. <p>In the current scenario, the latest versions of nearly all browsers agree to the scope and viability offered by the feature-rich HTML5 standard. But HTML5 itself is still evolving. <p>The major HTML5 APIs (2D drawing, offline web applications, video and audio, DOM Levels, CSS3 and so on) are still not out of their core development cycle and are continuously changing. <p>If we talk of individual browsers, Firefox, Chrome and Opera are early standard adopters, which is a two edged sword in itself, since issues pertaining to security etc. could still be waiting to be discovered. <p>Talking of Microsoft’s Internet Explorer, it is nearly always at the end of the adopter line and is slow to support the common HTML5 features prevalent today. <p>On one hand while we as developers wonder how our application will run on “pre-HTML5” browsers, on the other we are never quite sure of what hardware and software combination our product or service would eventually be accessed on (a fact given shape due to many nonstandard mobile platforms)! <p>But the thing is that there is no fully HTML5 compatible browser. <p>HTML5 in itself is not a product or end feature; rather, it is a collection of individual feature evolutions. <p>Hence, our aim is to detect support for newer features (like canvas, video, or geolocation), and thus here-in comes the need of feature compatibility checks. <h4> </h4> <h4>What checks exactly are required for ensuring compatibility or available features?</h4> <p>Each and every web-page in a browser is rendered according to its DOM (Document Object Model). In short, the DOM presents all the available HTML elements on that page to the browser. <p>So basically, if we need to check for compatible features, we need to check the DOM elements themselves. <p>The actual checks should include the following basic parameters or criteria – <p>1. Checking for a core property at a global level (e.g. a browser’s geolocation capability) <p>2. Checking for a property at an element level (e.g. a video element) <p>3. Check if an accessible method or function is available for the element & check the method calls for both getters and setters (e.g. if a video element is available, check for a specific video format support, or set the format for the current video element) <p>4. Check if the properties set by the above setters are retained. <hr> <p>In the up-coming parts, we will visit the compatibility check options, their implementation and how modernizer steps in as the leader of the pack. So stick around! </p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:497f8be5-2e4d-4e30-88c4-c4d02c79d5c0" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/HTML5" rel="tag">HTML5</a>,<a href="http://technorati.com/tags/JSMAG.+Modernizr" rel="tag">JSMAG. Modernizr</a>,<a href="http://technorati.com/tags/CSS3" rel="tag">CSS3</a>,<a href="http://technorati.com/tags/Firefox" rel="tag">Firefox</a>,<a href="http://technorati.com/tags/javascript" rel="tag">javascript</a>,<a href="http://technorati.com/tags/js" rel="tag">js</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-593557543477842202013-11-07T09:46:00.000-08:002013-11-07T09:46:17.873-08:00Is your USB drive genuine OR How to test your USB thumb drive / memory card to ensure it is not a Banana!<p><strong></strong> </p> <p><strong>7-Nov-2013 – </strong><strong>NOTE: </strong> – I am bumping this old post and would be updating some parts of it with newer utilities out there (will be monitoring new stuff and adding as I find it) So keep checking <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh4.ggpht.com/-dEnc9Hsszng/UnvRAwLx3pI/AAAAAAAAA3Q/toBRfr_Cb1k/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"></p> <p>1. PC Advisor has an article on the same <a href="http://www.pcadvisor.co.uk/how-to/storage/3435185/how-check-if-your-old-usb-sticks-are-faulty/" target="_blank">here</a>.<br>2. Our dear ‘friend of the nerds’ <a href="http://www.nirsoft.net/about_nirsoft_freeware.html" target="_blank">Nir Sofer</a> has an up-to-date page for ‘<a href="http://usbspeed.nirsoft.net/" target="_blank">USB Flash Drive Speed Tests - Any Drive Size</a>’. Provides good comparison with accurate data!</p> <p>Now follows the original article as below --</p> <p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-FLMTmulv6BA/UDyLf99SjhI/AAAAAAAAAiY/UjCHy8ypeso/image%25255B30%25255D.png?imgmax=800" width="239" height="241"></p> <p><em><strong>NOTE: I recently did an article (hosted on </strong></em><a href="http://www.experts-exchange.com/Storage/Removable_Backup_Media/A_10687-Is-your-USB-thumb-drive-genuine-OR-How-to-test-your-USB-thumb-drive-memory-card.html" target="_blank"><em><strong>Experts Exchange</strong></em></a><em><strong>) WRT the said topic. <br></strong></em><em><strong>I wanted to add some stuff bit to the original to make it a bit easier to follow, thus am presenting the result below.</strong></em></p> <p> <hr> <p>If you are planning on buying a USB drive from eBay or any other popular online e-commerce site, chances are that in spite of those high seller ratings, you may still end up getting a counterfeit!</p> <p>Popular USB drive makers like Kingston, Transcend and the like are much more likely to be duplicated. <p>And when the sole usage of your latest thumb drive is going to be that crucial back-up routine, it becomes vastly important that the drive itself is trust-worthy and pristine, lest it ends up as a double whammy! <p>It becomes even more difficult when the forged units sport nearly 100% original looking packaging. And bar-codes and serial numbers are something too complex for an end user to verify until the same are verifiable online @ the drive maker’s website. <p><b><i>But wait, what exactly are counterfeit drives?</i></b> <p><b><i></i></b> <p>Counterfeiting in USB drives involves <b><i>hacking</i></b> of a USB drive’s firmware (basically a low-level editing of the firmware) so that the drive’s specifications report a higher than actual capacity (of the physical <b><i>NAND</i></b> chip on board) <p>As a result, when you try to write data to the drive over and above its actual capacity, your data gets stored as corrupted. <p><b><i>So, how can you actually go about validating your purchase as an actual genuine item?</i></b> <p><b><i>1. </i></b><b><i>Be aware of fake sellers!</i></b> <p><b><i></i></b> <p>An obvious first step would be to avoid buying from already proven fake websites and sellers. A nice catalog of this information is available online at the <a href="http://flashdrivefacts.wordpress.com/">FlashDriveFacts</a> site (URL: <a href="http://flashdrivefacts.wordpress.com/">http://flashdrivefacts.wordpress.com/</a>) <p>A problem here is that this site itself hasn’t been updated since February 2012. Nevertheless, it provides a good starting point. If you are betting on an eBay seller, you can check the seller’s rating and customer feedback too. Obviously <i>never</i> go in for buying from a seller already proven as dubious! <p><b><i>2. </i></b><b><i>Be aware of original markings and counterfeit indications!</i></b> <p>Another obvious second point would be to “research a bit before going in for an online purchase”. As simple as this may sound, many people fall in the irresistible deal trap. <p>When you are still contemplating the actual buy and are yet to place the online order (or visit a physical store), remember to <b><i>Google</i></b> and search for the exact model and its original price online. <p>If your seller’s deal is too good to be true and the price difference seems substantial, it would pay to be cautious, and be absolutely sure about the product being genuine! <p>Also, search for images of that model online and try to know before-hand how an original drive would look like. If yours is any different (as shown in online previews) feel free to question the seller. <p>You could also lookout for certain markings / engraved information on the USB drive’s body (see below image for reference). <p align="center"><a href="http://lh3.ggpht.com/-43SgSTGbOnQ/UDyLg66bz9I/AAAAAAAAAic/7qsbIhkZdbc/s1600-h/image%25255B11%25255D.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-treawGh6T0A/UDyLiIhUC1I/AAAAAAAAAio/SnCPF-jfNVw/image_thumb%25255B4%25255D.png?imgmax=800" width="156" height="169"></a><br><u>The above is a sample engraving for a <b><i>Kingston</i></b> pen drive. </u></p> <p>Although this would not hold true for all the drive manufacturers out there, but makers like <b><em>Kingston</em> </b>have made it a practice to engrave model related information on the steel USB plug. This marking is also verifiable for HP thumb-drives out there. <p>Moreover, Kingston also offers following URLs for online verification of its many products – <p>· For all memory products (including memory module/RAM modules) refer the URL – <p><a href="http://legacy.kingston.com/asia/verify/default.asp">http://legacy.kingston.com/asia/verify/default.asp</a> <p>· For USB Flash Memory Products refer the URL – <a href="http://legacy.kingston.com/asia/verifyflash/">http://legacy.kingston.com/asia/verifyflash/</a> <p>· For visual product verification please refer – <a href="http://www.kingston.com/us/support/product_verification">http://www.kingston.com/us/support/product_verification</a> <p><b><i>3. </i></b><b><i>Use software tools when you cannot decide or the forging is not that obvious!</i></b> <p>Certain tools for testing out USB blanks are slowly becoming a sure shot, one step verification standard. <p>These can actually be used both for detecting the bogus USB as well as to check the actual / real world performance (i.e. capacity / operating speed and so on) and other advertised specifications. <p>The most popular and commonly used application of the lot is the <b>H2testw</b> which is the much proclaimed “<a href="http://sosfakeflash.wordpress.com/2008/09/02/h2testw-14-gold-standard-in-detecting-usb-counterfeit-drives/">Gold Standard in Detecting USB Counterfeit Drives</a>”. The last documented version is the <b>H2testw 1.4</b>. <p><b><i>NOTE:</i></b> this application is capable of testing USB thumb-drives as well as SD cards (Mobile/camera based MMC cards) memory cards! <p>The link discusses the counterfeit issue as well as the usage of this excellent piece of software. Although the application is hosted by a German site, the direct (German to English translated) link is <a href="http://translate.google.ca/translate?hl=en&sl=de&u=http://www.heise.de/software/download/h2testw/50539&sa=X&oi=translate&resnum=2&ct=result&prev=/search%3Fq%3DH2testw%26hl%3Den%26sa%3DG">http://translate.google.ca/translate?hl=en&sl=de&u=http://www.heise.de/software/download/h2testw/50539&sa=X&oi=translate&resnum=2&ct=result&prev=/search%3Fq%3DH2testw%26hl%3Den%26sa%3DG</a> <p>The actual direct download URLs for the application are – <p><b>HTTP - </b><a href="http://www.heise.de/ct/Redaktion/bo/downloads/h2testw_1.4.zip">http://www.heise.de/ct/Redaktion/bo/downloads/h2testw_1.4.zip</a> <p><b>FTP - </b><a href="ftp://ftp.heise.de/pub/ct/ctsi/h2testw_1.4.zip">ftp://ftp.heise.de/pub/ct/ctsi/h2testw_1.4.zip</a>. <p><b><i>H2testw 1.4</i></b> <b><i>Usage</i></b> <p><b><i></i></b> <p>1. Launching the application’s executable leads to the following UI – <p><a href="http://lh6.ggpht.com/-f3RGkbVfPEk/UDyLjANRjrI/AAAAAAAAAiw/pRB-LVzDUMw/s1600-h/image%25255B14%25255D.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-znLeoUc6l8k/UDyLki91WuI/AAAAAAAAAi4/Bb4oSoHkfJw/image_thumb%25255B5%25255D.png?imgmax=800" width="244" height="153"></a> <p>2. <b><i>Choose you language</i></b> as English (or Deutsh if you are German!) <p>3. For best results, <b><i>ensure that the drive to be tested is already backed up and formatted</i></b>, as the test performed is data destructive. So copy off any data and format the drive already! <p>4. <b><i>Select the target USB</i></b> – browse and select, here H: is selected – <p><a href="http://lh5.ggpht.com/-SUP6_idA7Qs/UDyLmJjMR6I/AAAAAAAAAjA/lwcM0cdTl_w/s1600-h/image%25255B17%25255D.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-gSY3-psYiBo/UDyLnoldx0I/AAAAAAAAAjI/4tXeQC-cU58/image_thumb%25255B6%25255D.png?imgmax=800" width="168" height="244"></a> <p>5. <b><i>Select</i></b> the option to “<b><i>Write + verify</i></b>”. The test will start and a similar window is displayed – <p><a href="http://lh5.ggpht.com/-Oo3__ArWqms/UDyLosG-FEI/AAAAAAAAAjQ/Ova43BoYWik/s1600-h/image%25255B20%25255D.png"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-XQgiUPISWG8/UDyLp1i6F7I/AAAAAAAAAjY/pUMdAsNr0Kg/image_thumb%25255B7%25255D.png?imgmax=800" width="244" height="202"></a> <p>6. <b><i>Wait</i></b> for the test to complete and the results to display. On a large capacity drive, <b><i>this would take some time</i></b>. So sit back and let the application do its job J <p>7. After the completion, a similar looking test result is shown – <p><b>a. </b><b>Sample Output for an authentic 2 GB Drive (what I tested on my machine)</b> <p><a href="http://lh5.ggpht.com/-tbZesfDM-74/UDyLrdm35UI/AAAAAAAAAjg/rXu3p0WYcdo/s1600-h/image%25255B28%25255D.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-IoK7a48hRtU/UDyLsi5t6pI/AAAAAAAAAjo/2xhfK-Jrs9s/image_thumb%25255B11%25255D.png?imgmax=800" width="348" height="298"></a> <p><b></b> <p>The above is a pass message for a valid/authentic drive. <p><b>b. </b><b>Sample Output for a Fake 64 GB Drive (from the <i>sofakeflash site’s H2testw</i> page (</b><a href="http://sosfakeflash.wordpress.com/2008/09/02/h2testw-14-gold-standard-in-detecting-usb-counterfeit-drives/"><b>http://sosfakeflash.wordpress.com/2008/09/02/h2testw-14-gold-standard-in-detecting-usb-counterfeit-drives/</b></a><b>).</b> <p><a href="http://lh3.ggpht.com/-DptfsaQvVe0/UDyLtp2YQSI/AAAAAAAAAjw/7KJyOLFSUsw/s1600-h/image%25255B27%25255D.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-j_wLaNLG8Ow/UDyLvaw_x8I/AAAAAAAAAj4/b4A2yqANGO8/image_thumb%25255B10%25255D.png?imgmax=800" width="371" height="236"></a></p> <p><b><i>Making sense of the test results – </i></b></p> <p><b><i></i></b> <p>Evaluating the above FAKE USB result, it is clear that a <b><i>4GB</i></b> flash drive is <b><i>masquerading </i></b>as<b><i> </i></b>a <b><i>64 GB</i></b> flash drive. Imagine the seller’s and the fake USB creator’s audacity! <p>Moreover, since a <b><i>genuine 4GB drive</i></b> should be about <b><i>3.9 GB</i></b> after formatting (and not 3.8 GB), the difference indicates that some sectors are obviously not usable and have been marked as bad. This further indicates a <b><i>low quality NAND</i></b> chip. <p>So once you start using the drive beyond 3.8 GB capacity, the data will surely be un-recoverable <p><b><i>Oh no! I actually have a fake drive? Now what?</i></b> <p><b><i></i></b> <p>If your test results indicate a fake USB at your hands, you can approach the seller on eBay (or your e-commerce site) and tell him the situation. Thanks to <b>H2testw 1.4</b>, you have the required proof too to back-up your claims. <p>Most sellers would be quite forthcoming in helping you get a replacement or a refund. But In case of issues, you can always post comments on the e-commerce site with a copy of this report. <p>Following which, any self-respecting seller should be willing to help you, as the reputations are what eventually would get them their business. <p><b><i></i></b> <p><b><i>Conclusion – </i></b> <p><b></b> <p>The above is a short illustration about the ongoing counterfeit racket and the capabilities and usage of<b> H2testw 1.4,</b> which is quite easy in its usage and informative as well with its detailed report. <p>It can even test 64 GB media and finally report its detailed results in case of failure (as shown above). <p>For reference, you can check out the excellent article at Raymond’s site <b>How to check and Test USB Flash Drive </b>(Link - <a href="http://www.raymond.cc/blog/how-to-check-and-test-usb-flash-drive/">http://www.raymond.cc/blog/how-to-check-and-test-usb-flash-drive/</a>). <p>Hope the above article helps you to keep counterfeit USBs at bay!</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:410b8781-e42a-47a7-9012-3f7f7a11ba5e" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/H2testw" rel="tag">H2testw</a>,<a href="http://technorati.com/tags/memory" rel="tag">memory</a>,<a href="http://technorati.com/tags/card" rel="tag">card</a>,<a href="http://technorati.com/tags/Experts" rel="tag">Experts</a>,<a href="http://technorati.com/tags/Exchange" rel="tag">Exchange</a>,<a href="http://technorati.com/tags/Counterfeit" rel="tag">Counterfeit</a>,<a href="http://technorati.com/tags/Test" rel="tag">Test</a>,<a href="http://technorati.com/tags/USB" rel="tag">USB</a>,<a href="http://technorati.com/tags/eBay" rel="tag">eBay</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-23561824940180808342013-09-24T04:07:00.000-07:002013-09-24T04:07:00.806-07:00It’s Android’s 5th Birthday, and you should be celebrating!<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; border-top: 0px; border-right: 0px; padding-top: 0px" border="0" alt="http://www.techjailbreak.com/wp-content/uploads/2012/10/Android-4th-Birthday.jpg" src="http://www.techjailbreak.com/wp-content/uploads/2012/10/Android-4th-Birthday.jpg"></p> <p>Hey Droid-o-holics, Android is 5 years old today… and with the hugely successful release of Android 4.3 a.k.a. Jelly Bean, Google, it seems, is trying hard to make all the right moves and getting there too!</p> <p><a href="http://en.wikipedia.org/wiki/Andy_Rubin" target="_blank">Andy Rubin</a> would be so proud!</p> <p>Verge has covered the journey of Android <a href="http://www.theverge.com/2011/12/7/2585779/android-history" target="_blank">right here…</a> and quite nicely too.</p> <p>And to top it all, the Jelly Bean's successor (Android 4.4) a.k.a. KitKat, is supposedly around the corner.</p> <p>So where’s the party?</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b093710b-dd1a-48de-acf3-e7c8e0f82d37" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Android" rel="tag">Android</a>,<a href="http://technorati.com/tags/birthday" rel="tag">birthday</a>,<a href="http://technorati.com/tags/kitkat" rel="tag">kitkat</a>,<a href="http://technorati.com/tags/jellybean" rel="tag">jellybean</a>,<a href="http://technorati.com/tags/verge" rel="tag">verge</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-13963462966281770082013-09-12T23:22:00.001-07:002013-09-12T23:22:26.481-07:00testing…<p>The blogger template is broke :(</p> <p>testing it for the fix…</p> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-17777629995336779892013-08-15T10:06:00.001-07:002013-08-15T10:15:38.410-07:00Home Improvement: Fix that ‘slowly getting slower’ ceiling fan!<p><img src="http://www.figueroafinancial.com/wp-content/uploads/2011/08/tool-man-taylor2.jpg" width="211" height="164"><strong>All work and no play makes jack a dull boy… but all work and no household chores will make any respectable husband getting labeled as useless! </strong></p> <p><strong>Fellow husbands, read on…</strong></p> <p>So, this is something which is not about gadgets or coding, but about… life-hacking! </p> <p>This hack has been ‘discovered’ and not invented, but nevertheless should be quite useful for my fellow brethren.</p> <p>If your room’s ceiling fan has been getting slow with passing days, wait before calling that electrician. Maybe its just time to …. clean your fan! </p> <p>Yes, just clean the blades of the friggin’ fan!</p> <p>The accumulating dust on the fan-blades creates friction and also the precise angle required for air generation is countered.</p> <p>So this can be tried before you call your electrician. No harm in trying it, and its free! </p> <p>Also, to clean the blades of the fan, just use an old discarded pillow cover (get this from your wife, please do not guess!) </p> <p>Just cover the blade with the cover, and rub the blade from the end to the tip, collecting the dust in the cover, easy! The cover collects the dust and prevent it from falling over, on your bed. </p> <p>Simple genius, isn’t it?</p> <p>The best part is, you *should* get some extra brownie points from your significant other, which as any husband knows, is a rare and significant event (in other words, totally worth it!)</p> <p>So by all means, go and try this out, <strong><a href="http://en.wikipedia.org/wiki/Home_Improvement_%28TV_series%29" target="_blank">Tim Allen</a></strong> would be so proud!</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:814a4787-5836-4b5d-b545-b5d93c36f68d" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Home+Improvement" rel="tag">Home Improvement</a>,<a href="http://technorati.com/tags/Ceiling+Fan" rel="tag">Ceiling Fan</a>,<a href="http://technorati.com/tags/Tim" rel="tag">Tim</a>,<a href="http://technorati.com/tags/Allen" rel="tag">Allen</a>,<a href="http://technorati.com/tags/slow+fan" rel="tag">slow fan</a>,<a href="http://technorati.com/tags/dust" rel="tag">dust</a>,<a href="http://technorati.com/tags/clean" rel="tag">clean</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-56666495625277310652013-08-04T07:17:00.001-07:002013-08-04T07:17:47.896-07:00Conspiracy Theories… get out your tin foil hats…<p>Conspiracy Theories… Watch out.</p> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0tag:blogger.com,1999:blog-6020089048452227486.post-29719319009960531352013-08-01T00:26:00.001-07:002013-08-01T00:26:37.315-07:00Log4j 2 = Insane performance!<p><a href="http://lh3.ggpht.com/-UdAJG9y86-I/UfoNm9h1jHI/AAAAAAAAA2I/CYebgRj7KsE/s1600-h/image%25255B9%25255D.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-naLUOJw2Cwo/UfoNnorVIaI/AAAAAAAAA2Q/y0OAQfkkBXA/image_thumb%25255B5%25255D.png?imgmax=800" width="145" height="101"></a></p> <p>I just read a great discussion on how Log4j 2 is awesome! </p> <p>Being a developer, this is great news! And it is coming up to be a worthy successor of Log4j and seems to provides significant improvements too!</p> <p>The improvements include - </p> <ol> <li><strong>API Separation </strong></li> <li><strong>Improved Performance </strong></li> <li><strong>Support for multiple APIs </strong></li> <li><strong>Automatic Reloading of Configurations </strong></li> <li><strong>Advanced Filtering </strong></li> <li><strong>Plugin Architecture </strong></li> <li><strong>Property Support </strong></li></ol> <p>Many of these follow the positives of <a href="http://logback.qos.ch/" target="_blank"><strong><em>LogBack</em></strong></a> (which has been touted as a successor to Log4j).</p> <p>Get a load on the introduction and the API to <a href="http://logging.apache.org/log4j/2.x/" target="_blank"><strong>Log4j2 here</strong></a>. And also the discussion on its performance in this nice article <strong><a href="http://www.javacodegeeks.com/2013/07/log4j-2-performance-close-to-insane.html" target="_blank">Log4j 2: Performance close to insane</a> (courtesy the <a href="http://www.javacodegeeks.com/" target="_blank">Java Code Geeks</a>)!</strong></p> <p>Have fun!</p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:94b9f1ff-10aa-4182-8852-565bf4f7f7fb" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Java" rel="tag">Java</a>,<a href="http://technorati.com/tags/log4j" rel="tag">log4j</a>,<a href="http://technorati.com/tags/log4j2" rel="tag">log4j2</a>,<a href="http://technorati.com/tags/logging" rel="tag">logging</a></div> Chetan Khuranahttp://www.blogger.com/profile/01920267123342581549noreply@blogger.com0