<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7053729872062608420</id><updated>2024-09-05T07:51:37.108-07:00</updated><category term="java"/><category term="memory leak"/><category term="Android Free Preschooler Number Learning Application"/><category term="Android SmsManager example"/><category term="Android external storage"/><category term="Beach Buggy Blitz Review"/><category term="Configure Apache PHP cURL"/><category term="Encryption mismatch Java PHP"/><category term="Forward Texts To Email"/><category term="Free Android Game"/><category term="Free Kanban Board Digital"/><category term="Generate"/><category term="Google Play Store Adult Content"/><category term="Google Play Store Content Filtering"/><category term="JUnit"/><category term="Kanban Board"/><category term="Kanban Board Source Code"/><category term="Kies upgrade issue"/><category term="LocationManager"/><category term="Mock"/><category term="New features"/><category term="Opening Senior Developer"/><category term="Opening Tech Lead"/><category term="Ordinal 7426 could not"/><category term="PHP DESede/CBC/PKCS5Padding"/><category term="PHP Equivalent DESede"/><category term="PHP triple DES encryption"/><category term="Project COIN"/><category term="Project Lombok"/><category term="Read"/><category term="Samsung Android Update"/><category term="Samsung Galaxy JellyBean Upgrade"/><category term="Samsung Galaxy Tab Factory Reset"/><category term="Samsung Galaxy Tab Hangs"/><category term="Samsung Galaxy Tab Sluggish"/><category term="Software Job Opening"/><category term="TelephonyManager example"/><category term="Text Backup"/><category term="Top Free Android Game"/><category term="TwLauncher"/><category term="Unit Test"/><category term="Wicket"/><category term="android app to SD"/><category term="capture"/><category term="close"/><category term="component"/><category term="dynamic model"/><category term="exchange"/><category term="external storage is emulated."/><category term="fisherman&#39;s wharf"/><category term="force stop"/><category term="free"/><category term="goan food"/><category term="google earth"/><category term="hibernate"/><category term="how upgrade android"/><category term="html"/><category term="image"/><category term="install Apache"/><category term="install Apache with SSL"/><category term="install PHP"/><category term="java challenge"/><category term="java programming challenge"/><category term="java script"/><category term="jdk 7"/><category term="jprob"/><category term="jprofiler"/><category term="ordinal 9272 could not"/><category term="position"/><category term="puzzle"/><category term="reading cell information"/><category term="response"/><category term="restaurant"/><category term="samsung galaxy tab upgrade"/><category term="scrap"/><category term="screenshot"/><category term="servicemix"/><category term="tips"/><category term="web page"/><category term="work from home"/><category term="yourkit"/><title type='text'>Crashing &amp;amp; Hanging</title><subtitle type='html'>Random thoughts about technical and non technical topics.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-5595187628014127659</id><published>2015-08-23T03:23:00.001-07:00</published><updated>2015-08-23T03:27:20.653-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Forward Texts To Email"/><category scheme="http://www.blogger.com/atom/ns#" term="Text Backup"/><title type='text'>How Do I Forward Texts Messages To Email</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Many a times we feel the need to forward the text messages we send / received to email.&lt;br /&gt;
&lt;br /&gt;
This could be just to take a backup of the messages or even for some legal proceedings etc.&lt;br /&gt;
For example :&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Messages send/ received from the landlord having the word &#39;rent&#39;&lt;/li&gt;
&lt;li&gt;Messages&amp;nbsp;send/ received from&amp;nbsp;ex partner&lt;/li&gt;
&lt;li&gt;Messages from selected contacts having specific words.&amp;nbsp;&amp;nbsp;etc&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
There are many ways in which you can forward the texts to email. In this post I describe the simplest method for this in Android phones - Install a simple application from PlayStore.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;1. &lt;/b&gt;Install the below application from Play Store&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.fortytwo.mytextstoemail&quot; target=&quot;_blank&quot;&gt;https://play.google.com/store/apps/details?id=com.fortytwo.mytextstoemail&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2. &lt;/b&gt;If you want select all messages from/to specific contacts , then choose the specific contacts by clicking on the &#39;Enter Mobilr Number&#39; field.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/AOzs6c-pwFXkPgW9QXsc_jJGVOjLeWNp2_9JBLWBiocfNjRPf0zpT6mkbdB9Xa8tgOQ=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/AOzs6c-pwFXkPgW9QXsc_jJGVOjLeWNp2_9JBLWBiocfNjRPf0zpT6mkbdB9Xa8tgOQ=h900-rw&quot; width=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3.&amp;nbsp;&lt;/b&gt;You may also search for specific contacts.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/PLdNpwT6fjr2Tj1zBq6vNkF-30KwkDYLxlPxcZm2hus4IJib_cHtPxRry5DqgMmQbOyz=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://4.bp.blogspot.com/PLdNpwT6fjr2Tj1zBq6vNkF-30KwkDYLxlPxcZm2hus4IJib_cHtPxRry5DqgMmQbOyz=h900-rw&quot; width=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;4. If you need to provide more conditions like From/To Date, containing specific word etc then select the &#39;Advance&#39; option.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/yh4USuulXsJPpVT51b5CG0vOBl_3as2xIoA_GGfk55hdHfpWecRFA2Gd1q-fkb-90hDZ=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://3.bp.blogspot.com/yh4USuulXsJPpVT51b5CG0vOBl_3as2xIoA_GGfk55hdHfpWecRFA2Gd1q-fkb-90hDZ=h900-rw&quot; width=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;4. Once all the messages are collected (this will happen in seconds) you can view the report Or share the report as email/ Google Drive etc.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/Nro2JLc765ijebvyDR5yi9BNAt3YG9CFSfu6Mm3VUnXzQ6f_VSoJxLBXx9Z-fqcCz_XP=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/Nro2JLc765ijebvyDR5yi9BNAt3YG9CFSfu6Mm3VUnXzQ6f_VSoJxLBXx9Z-fqcCz_XP=h900-rw&quot; width=&quot;167&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/EfCZuV4nGgZNQLr-d4rqehOBtfy6b2DkCyc8H3JtfJ1M0fKSjsHlab2G6c3JNrUs1w=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/EfCZuV4nGgZNQLr-d4rqehOBtfy6b2DkCyc8H3JtfJ1M0fKSjsHlab2G6c3JNrUs1w=h900-rw&quot; width=&quot;167&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://1.bp.blogspot.com/3ZK4mpb_UHImMeQgouJKy3afgm7RnsuAo-XuiIKyzOsFvVaBo3x4t9v-LWlGB463nQ=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/3ZK4mpb_UHImMeQgouJKy3afgm7RnsuAo-XuiIKyzOsFvVaBo3x4t9v-LWlGB463nQ=h900-rw&quot; width=&quot;167&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/5595187628014127659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2015/08/how-do-i-forward-texts-messages-to-email.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5595187628014127659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5595187628014127659'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2015/08/how-do-i-forward-texts-messages-to-email.html' title='How Do I Forward Texts Messages To Email'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/AOzs6c-pwFXkPgW9QXsc_jJGVOjLeWNp2_9JBLWBiocfNjRPf0zpT6mkbdB9Xa8tgOQ=s72-h900-c-rw" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-5720774926114662889</id><published>2014-11-17T03:19:00.003-08:00</published><updated>2014-11-17T03:25:34.793-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java challenge"/><category scheme="http://www.blogger.com/atom/ns#" term="java programming challenge"/><category scheme="http://www.blogger.com/atom/ns#" term="puzzle"/><title type='text'>Challenge for Java programmers</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Published a BeerBotChallenge for the Java developers. This is inspired from the FruitBots program.&lt;br /&gt;
&lt;br /&gt;
You can find the details here :&lt;br /&gt;
&lt;a href=&quot;https://github.com/RatheeshRavindran/BeerNinja&quot;&gt;https://github.com/RatheeshRavindran/BeerNinja&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivKTSHwak70IRPcQD2PzkogNEnZ5bmd0vK6iRq6kKXSWnjLf_twey12C2waKiw__42ZUFEfp4PSB9DEm58wn4nJ9yGcbtFHcSkEd6EKoUkbBe-QYoyN1PFlmffkxX9Mus43Ij61W_0Gfb-/s1600/demo.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivKTSHwak70IRPcQD2PzkogNEnZ5bmd0vK6iRq6kKXSWnjLf_twey12C2waKiw__42ZUFEfp4PSB9DEm58wn4nJ9yGcbtFHcSkEd6EKoUkbBe-QYoyN1PFlmffkxX9Mus43Ij61W_0Gfb-/s1600/demo.gif&quot; height=&quot;210&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/5720774926114662889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2014/11/challenge-for-java-programmers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5720774926114662889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5720774926114662889'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2014/11/challenge-for-java-programmers.html' title='Challenge for Java programmers'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivKTSHwak70IRPcQD2PzkogNEnZ5bmd0vK6iRq6kKXSWnjLf_twey12C2waKiw__42ZUFEfp4PSB9DEm58wn4nJ9yGcbtFHcSkEd6EKoUkbBe-QYoyN1PFlmffkxX9Mus43Ij61W_0Gfb-/s72-c/demo.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-2661223375261671513</id><published>2014-04-28T07:06:00.000-07:00</published><updated>2014-04-28T07:06:06.985-07:00</updated><title type='text'>Using Multiple or Split Screens in Mobile device</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
One frustrating thing when using large screen mobile devices is the lack of support for using multiple screens.&lt;br /&gt;
I have a 10inch Tablet, Why shouldn&#39;t I be able to browse Wikipedia and take notes at the same time?&lt;br /&gt;
&lt;br /&gt;
For unknown reasons, there is no support for this yet from Google Android.&lt;br /&gt;
Samsung tried solving this by supporting multiple screens but it is available only in the high end devices And there is mixed feedback from the user base.&lt;br /&gt;
&lt;br /&gt;
There are number of applications in the Android market which are trying to fill this void at-least to some extent.&lt;br /&gt;
&lt;br /&gt;
One such application I tried recently is &#39;Multi Screen Split&#39; from 42 Labs.&lt;br /&gt;
I would rate it 4 star, do try it out if you are looking for a Productivity improvement application.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.fortytwo.multiwindowsplitpro&quot; target=&quot;_blank&quot;&gt;Get it here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/pCQ0qYhoDsiXx7Mnh9Kg7fm6jRRTzH6e3rfUq6DcFFEq-BpjqMIDmmSFzLzwkXlAKJ-8=h310-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/pCQ0qYhoDsiXx7Mnh9Kg7fm6jRRTzH6e3rfUq6DcFFEq-BpjqMIDmmSFzLzwkXlAKJ-8=h310-rw&quot; height=&quot;209&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/iIfI_La40Jk6izSNBJ2gM-sU1B0toc9sVizWXjYMm97Te7rP9anlXwxPh9zJLiqLPA=h310-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/iIfI_La40Jk6izSNBJ2gM-sU1B0toc9sVizWXjYMm97Te7rP9anlXwxPh9zJLiqLPA=h310-rw&quot; height=&quot;209&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/J8ThC6kKEQ8tSfa3BCvwPLbort1llUUn8K-QStmlP5V7cE8x6kFuEDMJtgMsDmiEK1I=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/J8ThC6kKEQ8tSfa3BCvwPLbort1llUUn8K-QStmlP5V7cE8x6kFuEDMJtgMsDmiEK1I=h900-rw&quot; height=&quot;209&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/J8ThC6kKEQ8tSfa3BCvwPLbort1llUUn8K-QStmlP5V7cE8x6kFuEDMJtgMsDmiEK1I=h900-rw&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/J8ThC6kKEQ8tSfa3BCvwPLbort1llUUn8K-QStmlP5V7cE8x6kFuEDMJtgMsDmiEK1I=h900-rw&quot; height=&quot;209&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/2661223375261671513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2014/04/using-multiple-or-split-screens-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2661223375261671513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2661223375261671513'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2014/04/using-multiple-or-split-screens-in.html' title='Using Multiple or Split Screens in Mobile device'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/pCQ0qYhoDsiXx7Mnh9Kg7fm6jRRTzH6e3rfUq6DcFFEq-BpjqMIDmmSFzLzwkXlAKJ-8=s72-h310-c-rw" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-8031678195928410965</id><published>2013-11-20T00:19:00.000-08:00</published><updated>2014-01-27T04:13:39.085-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Encryption mismatch Java PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP DESede/CBC/PKCS5Padding"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP Equivalent DESede"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP triple DES encryption"/><title type='text'>PHP Equivalent for DESede/CBC/PKCS5Padding</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Recently I tried porting an encryption implementation to PHP from Java.&lt;br /&gt;
&lt;br /&gt;
It was not possible to touch the existing encryption/ decryption implementation So the requirement is to have the similar encryption implementation in PHP which will give same result as in Java.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Java implementation is 
&lt;br /&gt;
&lt;pre class=&quot;cpp&quot; name=&quot;code&quot;&gt;    public String encryptTest(String message) throws Exception {
     final MessageDigest messageDigest = MessageDigest.getInstance(&quot;md5&quot;);
     String keyString = &quot;AB12CD3EF4&quot;;
  final byte[] passwordDigest = messageDigest.digest(keyString.getBytes(&quot;utf-8&quot;));
     final byte[] keyBytes = paddKeyString(passwordDigest);
     final Cipher cipher = Cipher.getInstance(&quot;DESede/CBC/PKCS5Padding&quot;);
     cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(keyBytes, &quot;DESede&quot;), new IvParameterSpec(new byte[8]));
     final byte[] encryptedText = cipher.doFinal(message.getBytes(&quot;utf-8&quot;));
     return Base64.encodeBase64String(encryptedText);
    }

 private byte[] paddKeyString(final byte[] passwordDigest) {
  final byte[] keyBytes = Arrays.copyOf(passwordDigest, 24);
  int pos = 16;
     for (int index = 0; index &amp;lt; 8;) {
      keyBytes[pos++] = keyBytes[index++];
     }
  return keyBytes;
 }
&lt;/pre&gt;
&lt;br /&gt;
After couple of hours of trial and error , got the following PHP implementation which will produce the same result as the Java counterpart.
&lt;br /&gt;
&lt;pre class=&quot;cpp&quot; name=&quot;code&quot;&gt;
function encryptText_3des($plainText, $key) {
 $key = hash(&quot;md5&quot;, $key, TRUE); 
 for ($x=0;$x&lt;8;$x++) {
  $key = $key.substr($key, $x, 1);
 }
 $padded = pkcs5_pad($plainText,
        mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC));
 $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC));
    return $encrypted;
}
&lt;/pre&gt;
Note: pkcs5_pad method is available here &lt;a href=&quot;http://php.net/manual/en/ref.mcrypt.php&quot;&gt;http://php.net/manual/en/ref.mcrypt.php&lt;/a&gt;
&lt;br&gt;PHP is fun , I am going to give it little more time :)

&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/8031678195928410965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/11/encryption-implementation-from-java-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8031678195928410965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8031678195928410965'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/11/encryption-implementation-from-java-to.html' title='PHP Equivalent for DESede/CBC/PKCS5Padding'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-8705577087396505743</id><published>2013-11-12T23:28:00.001-08:00</published><updated>2013-11-12T23:28:56.717-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Configure Apache PHP cURL"/><category scheme="http://www.blogger.com/atom/ns#" term="install Apache"/><category scheme="http://www.blogger.com/atom/ns#" term="install Apache with SSL"/><category scheme="http://www.blogger.com/atom/ns#" term="install PHP"/><title type='text'>Links for Configuring Apache , PHP in Windows with SSL</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Installing Apache with PHP and SSL is relatively easy, But still there were couple of tricky steps. Following are the links I used for installing and configuring Apache with SSL, PHP (including cURL module).&lt;br /&gt;
&lt;br /&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
Installing Apache in Windows&lt;/h2&gt;
&lt;div&gt;
Follow this link&amp;nbsp;&lt;a href=&quot;http://www.thesitewizard.com/apache/install-apache-on-vista.shtml&quot;&gt;http://www.thesitewizard.com/apache/install-apache-on-vista.shtml&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Remember to download the correct Apache binary. For example - the one I downloaded is &#39;httpd-2.2.25-win32-x86-openssl-0.9.8y.msi&#39; as I required SSL also.&lt;/div&gt;
&lt;div&gt;
I choose to go with the default options.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If everything succeeds , you will be able to see &quot;It Works!&quot; when you try the URL &quot;localhost&quot; or &quot;localhost:8080&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Installing PHP and configuring Apache&lt;/h2&gt;
&lt;div&gt;
Follow this link &lt;span style=&quot;color: #0000ee;&quot;&gt;&lt;u&gt;http://www.thesitewizard.com/php/install-php-5-apache-windows.shtml&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Quick summary- following entries will need to be added to httpd.conf file&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;LoadModule php5_module c:/php/php5apache2_2.dll&lt;/li&gt;
&lt;li&gt;AddType application/x-httpd-php .php&lt;/li&gt;
&lt;li&gt;PHPIniDir &quot;c:/php&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Create a sample php file PHPinfo.php in the htdocs folder with content&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;PHPinfo();&lt;br /&gt;?&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/blockquote&gt;
&amp;nbsp;Try the link &#39;http://localhost/PHPinfo.php&#39;, You will see the information about PHP if everything succeeds.&lt;br /&gt;
If you are planning to use cURL module remember to enable those lines in the php.ini file&lt;br /&gt;
e.g.-&amp;nbsp;extension=php_curl.dll&lt;br /&gt;
Note: If this is not working , add &#39;c:\php&#39; and &#39;c:\php\ext&#39; to PATH environment variable.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;h2&gt;
Enabling SSL&lt;/h2&gt;
&lt;div&gt;
Follow this link&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/4221874/how-do-i-create-https-for-localhost-apache&quot;&gt;http://stackoverflow.com/questions/4221874/how-do-i-create-https-for-localhost-apache&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href=&quot;http://www.neilstuff.com/apache/apache2-ssl-windows.htm&quot;&gt;http://www.neilstuff.com/apache/apache2-ssl-windows.htm&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For me things worked only after creating a symbolic link for &#39;C:\Program Files (x86)\Apache Software Foundation&#39;.&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #0000ee;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #0000ee;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/8705577087396505743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/11/links-for-configuring-apache-php-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8705577087396505743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8705577087396505743'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/11/links-for-configuring-apache-php-in.html' title='Links for Configuring Apache , PHP in Windows with SSL'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-6192368150097848573</id><published>2013-08-11T02:23:00.000-07:00</published><updated>2013-08-11T02:23:26.371-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Free Preschooler Number Learning Application"/><title type='text'>Android Free Preschooler Number Learning Application</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Kids Number Learning app is a free Android application which will help the preschoolers in learning numbers and the parents in checking the skill of their kids.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;If you are looking for a free and simple app for your preschoolers then this is a must.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Rating : &lt;span style=&quot;color: #38761d;&quot;&gt;4.5/5&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;b&gt;Game Play&lt;/b&gt;&lt;br /&gt;
The application has three modes&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;One digit&lt;/li&gt;
&lt;li&gt;Two digit&lt;/li&gt;
&lt;li&gt;Three digit&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
The application will display a number in letters based on the mode selected. Child should enter the number in digits. The app uses randomization so that the child gets different numbers every time.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Links&lt;/b&gt;&lt;br /&gt;
Market URL :&amp;nbsp;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.fortytwo.mathapps.kidsnumberlearning.activity&quot;&gt;https://play.google.com/store/apps/details?id=com.fortytwo.mathapps.kidsnumberlearning.activity&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
You may also search for &#39;&lt;span style=&quot;color: purple;&quot;&gt;com.fortytwo.mathapps&lt;/span&gt;&#39; in PlayStore to locate the application.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Screen shots&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT0ubeH-7wlc-EDa9Xkb34FPP-N3r6uzlQLZ44Jc_NSfXw2AOYjNUNpld217qjKfEbJm81HFpVBKRlheoamw771pC3NDTtn4f5KzUFdyQkLlym-c12qmaQSK-fEbr6hHzW7w-6TjiOgmwg/s1600/mainscreen.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT0ubeH-7wlc-EDa9Xkb34FPP-N3r6uzlQLZ44Jc_NSfXw2AOYjNUNpld217qjKfEbJm81HFpVBKRlheoamw771pC3NDTtn4f5KzUFdyQkLlym-c12qmaQSK-fEbr6hHzW7w-6TjiOgmwg/s320/mainscreen.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjTKtHreBthVNnVnfFnzr0wma_S8jPBNVN1557U8RSKhN_CbPAamj397whTdyqMpP_AFrJusMX2hgTB4nAl17_YwgNzvGRVXKg2-vttwcnL6TM4kar4Hf3jH1gmEdlJpdjb9HqGUnNu5Ve/s1600/question.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjTKtHreBthVNnVnfFnzr0wma_S8jPBNVN1557U8RSKhN_CbPAamj397whTdyqMpP_AFrJusMX2hgTB4nAl17_YwgNzvGRVXKg2-vttwcnL6TM4kar4Hf3jH1gmEdlJpdjb9HqGUnNu5Ve/s320/question.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLqu4AI-hk3iCj9TPAtpsoO2dmDTDUsrscFulv6SYrPeg2rq_hjxGDKpoth9L1y-1hSEus_diI9FOHfdKDD0hPJOAx73zFVACRNBAFltrRyjZYL7OjG-daYlmNyLC7RnTNlIhsVmDcbphs/s1600/report.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLqu4AI-hk3iCj9TPAtpsoO2dmDTDUsrscFulv6SYrPeg2rq_hjxGDKpoth9L1y-1hSEus_diI9FOHfdKDD0hPJOAx73zFVACRNBAFltrRyjZYL7OjG-daYlmNyLC7RnTNlIhsVmDcbphs/s320/report.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/6192368150097848573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/08/android-free-preschooler-number.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6192368150097848573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6192368150097848573'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/08/android-free-preschooler-number.html' title='Android Free Preschooler Number Learning Application'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgT0ubeH-7wlc-EDa9Xkb34FPP-N3r6uzlQLZ44Jc_NSfXw2AOYjNUNpld217qjKfEbJm81HFpVBKRlheoamw771pC3NDTtn4f5KzUFdyQkLlym-c12qmaQSK-fEbr6hHzW7w-6TjiOgmwg/s72-c/mainscreen.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-7950804240660354026</id><published>2013-06-22T23:15:00.003-07:00</published><updated>2013-06-22T23:15:46.506-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Beach Buggy Blitz Review"/><category scheme="http://www.blogger.com/atom/ns#" term="Free Android Game"/><category scheme="http://www.blogger.com/atom/ns#" term="Top Free Android Game"/><title type='text'>Top Free Android Game Beach Buggy Blitz Review</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;Beach Buggy Blitz is a gyroscopic game which is a combination of end less running and racing.&lt;br /&gt;If you are a fan of games like Subway Surfers then you will love this game.&lt;/b&gt;&lt;/blockquote&gt;
&lt;span style=&quot;color: #274e13;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;b&gt;&lt;span style=&quot;color: #274e13;&quot;&gt;Rating 4.5/5&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Game Play&lt;/b&gt;&lt;br /&gt;
Use your beach buggy to go as far as possible. You will start with 30 seconds and there are different check points on the way which will extend the time.&lt;br /&gt;
There are various obstacles on the way like giant Crabs, huts , birds and so on. Though it is kind of cool to hit these , it will slow you down from reaching the next check point.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Positives&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Good customization and controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; It is possible to control the vehicle through&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;&lt;ol&gt;
&lt;li&gt;Tilting the device&lt;/li&gt;
&lt;li&gt;Touching the edges of the device.&lt;/li&gt;
&lt;li&gt;Using the Game Pad.&lt;/li&gt;
&lt;li&gt;Controls for break&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Customized for Tablets.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Customized version available for tablets to make use of the full potential.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Graphics is good.&lt;/li&gt;
&lt;li&gt;Integrated to Google Play Game Service.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;One of the early applications to do this.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;All together one of the best free games available in Android market.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Negatives&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Graphics can be still improved.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Even though Graphics is good and enjoyable , at some times it clearly shows the need for improvement.&lt;/li&gt;
&lt;li&gt;For example, the way the birds move , behave when they get hit is not good. Some times the birds just sync in to the sand.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;The time gets added in each check point is too short for the children.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Children try hitting the different obstacles on the way, so even reaching the first check point is difficult for them.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Other riders are not collecting the gold coins.&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;It will be more interesting if other riders (CPU) also collect the available gold coins.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;b&gt;Other Details&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Description from Google Play Store&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #666666; font-family: Roboto, Arial, sans-serif; font-size: 13px; line-height: 19.5px;&quot;&gt;Drive your hot-rod beach buggy as far as you can into the uncharted depths of a mysterious tropical island!&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #666666; font-family: Roboto, Arial, sans-serif; font-size: 13px; line-height: 19.5px; padding: 0px 0px 1em;&quot;&gt;
Swerve and smash through a gorgeously detailed and completely destructible world packed with Tiki statues, grass shacks, giant crabs, lava monsters...even yetis! Explore sun-swept beaches, secret caves, fog-shrouded swamps, ruined temples and erupting volcanoes in this action-packed quest of discovery and mayhem!&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #666666; font-family: Roboto, Arial, sans-serif; font-size: 13px; line-height: 19.5px; padding: 0px 0px 1em;&quot;&gt;
Build a performance-boosting collection of upgrades and powerups! Unlock new vehicles like the Lightning muscle car and Rock Stomper monster truck. Upgrade your cars and customize their paint jobs. Collect wacky new characters. Unlock and upgrade amazing powerups like the fire-spitting Boost, the coin-tastic Coin Bubble, and a Shield that turns you into a unstoppable smash-everything force of destruction!&lt;/div&gt;
&lt;/blockquote&gt;
&lt;b&gt;&lt;i&gt;Developer Website&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.vectorunit.com/&quot;&gt;http://www.vectorunit.com/&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;Screenshots&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhohUfKQ5cpqnqoS4gJ6KQRA2nPgmEuwEFga8HfINWGkDinw6zCc0n4Ygd4-BbRbYEqWAqgE7cLEoPZFB22jD7Il04rvMXku-9iRfdSxNWM9a_3M1l1dqEcm1WDRYr8okp2F9808s4tMTQN/s1600/Screenshot_2013-06-19-19-47-55.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhohUfKQ5cpqnqoS4gJ6KQRA2nPgmEuwEFga8HfINWGkDinw6zCc0n4Ygd4-BbRbYEqWAqgE7cLEoPZFB22jD7Il04rvMXku-9iRfdSxNWM9a_3M1l1dqEcm1WDRYr8okp2F9808s4tMTQN/s320/Screenshot_2013-06-19-19-47-55.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRX0nUOQuJ27-8thfiivCKulIVz7LkOV30S83yr6KqLRLm8qK31sZYFrScRCGcn5Ywl494zt12Tm5aXwG6q7ftHsdJpdt7-q5rbpFHNy0xIZEgYojPRx7NRcuPitGDqHT0t5yHSjNo8L3a/s1600/Screenshot_2013-06-19-19-39-42.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRX0nUOQuJ27-8thfiivCKulIVz7LkOV30S83yr6KqLRLm8qK31sZYFrScRCGcn5Ywl494zt12Tm5aXwG6q7ftHsdJpdt7-q5rbpFHNy0xIZEgYojPRx7NRcuPitGDqHT0t5yHSjNo8L3a/s320/Screenshot_2013-06-19-19-39-42.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdQ9SaqpRS0Je2LMfwr6c7Hats13urF1zswrAWt-vnAsaR_Ixie7qxhcra_gcTgHZwbOjBIf7apy9Hs7Wsq_IcrJq8JOVdYjFVNF1rHTDkq3BkDNuhU8gEDhZDPggS3NP42Hk5CJLqOVrh/s1600/Screenshot_2013-06-19-19-37-31.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdQ9SaqpRS0Je2LMfwr6c7Hats13urF1zswrAWt-vnAsaR_Ixie7qxhcra_gcTgHZwbOjBIf7apy9Hs7Wsq_IcrJq8JOVdYjFVNF1rHTDkq3BkDNuhU8gEDhZDPggS3NP42Hk5CJLqOVrh/s320/Screenshot_2013-06-19-19-37-31.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/7950804240660354026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/top-free-android-game-beach-buggy-blitz.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/7950804240660354026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/7950804240660354026'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/top-free-android-game-beach-buggy-blitz.html' title='Top Free Android Game Beach Buggy Blitz Review'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhohUfKQ5cpqnqoS4gJ6KQRA2nPgmEuwEFga8HfINWGkDinw6zCc0n4Ygd4-BbRbYEqWAqgE7cLEoPZFB22jD7Il04rvMXku-9iRfdSxNWM9a_3M1l1dqEcm1WDRYr8okp2F9808s4tMTQN/s72-c/Screenshot_2013-06-19-19-47-55.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-2391704249261770690</id><published>2013-06-18T10:23:00.000-07:00</published><updated>2013-06-18T10:25:45.623-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Store Adult Content"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Store Content Filtering"/><title type='text'>Google Play Store containing Adult Content</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
What is more difficult than convincing your wife that you don&#39;t need a haircut? &amp;nbsp;It is finding a good application &amp;nbsp;easily in Google Play Store!&lt;br /&gt;
&lt;br /&gt;
To top the difficulty , there are enough adult content freely available in the play store.&lt;br /&gt;
Now imagine , browsing the Play Store with your four year old daughter to find her favorite puzzle game and finding the adult games with nude pictures listed as the &#39;top free&#39; apps.&lt;br /&gt;
&lt;br /&gt;
Check the screenshot below, this is taken from the &#39;Top Free apps&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxE4of-IsJdO-w8ozHBI134RbLGQplyhIu0-dgFoxm9hn5rjymdwa27T2vGy6mUw_Tb6IqaK323iCvyGAYqrNZmUP6JcGZHRzj-UVbXd2Ru3vdT15v1h8JcsTkD-0o38zHToC4IUZlAEYY/s1600/Screenshot_2013-06-18-22-23-32.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxE4of-IsJdO-w8ozHBI134RbLGQplyhIu0-dgFoxm9hn5rjymdwa27T2vGy6mUw_Tb6IqaK323iCvyGAYqrNZmUP6JcGZHRzj-UVbXd2Ru3vdT15v1h8JcsTkD-0o38zHToC4IUZlAEYY/s320/Screenshot_2013-06-18-22-23-32.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I do understand that , people of all age groups use Google Play Store. But being a responsible company, why cant Google set the default content filter to avoid showing the adult content?&lt;br /&gt;
&lt;br /&gt;
Until Google realize this, we will have to explicitly set the content filter to avoid adult content.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Open Google Play Store&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Go to Context Menu&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Click on Settings&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaKo1s8yDxZRcBO_kAPcU_sKuMS95-WF0q-uo8_AXDDSzW54IizPVr-hWP5e-6zyxsBROL2KnMKqJ0I3E-pCMPCdbRF7S-Tg8WukdO9aRsBdcW5n3jXLGp3PQqnuzYEll3WZA1Lpi1OYrh/s1600/Screenshot_2013-06-18-22-20-27.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaKo1s8yDxZRcBO_kAPcU_sKuMS95-WF0q-uo8_AXDDSzW54IizPVr-hWP5e-6zyxsBROL2KnMKqJ0I3E-pCMPCdbRF7S-Tg8WukdO9aRsBdcW5n3jXLGp3PQqnuzYEll3WZA1Lpi1OYrh/s320/Screenshot_2013-06-18-22-20-27.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Click on &#39;Content Filtering&#39;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_8sjisYFqVeUpSW7v-1hr6G2QU0WUw26MA0tqZ7kB74hNi-BXCX3rraiPcDlD_6VyjdTSOWP6Sdw2UpntHYWifHp04UA8PcTHr67yyCw3AntA3g4p9pXccyJXrGHfAH8R2GHJy5wtMUxn/s1600/Screenshot_2013-06-18-22-21-00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_8sjisYFqVeUpSW7v-1hr6G2QU0WUw26MA0tqZ7kB74hNi-BXCX3rraiPcDlD_6VyjdTSOWP6Sdw2UpntHYWifHp04UA8PcTHr67yyCw3AntA3g4p9pXccyJXrGHfAH8R2GHJy5wtMUxn/s320/Screenshot_2013-06-18-22-21-00.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Select &#39;Every one&#39;/ &#39;Low Maturity&#39;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQKKfF9UuKrFXJgn4EaWqNgjcjUfhwumdfEUGZEag-6ej0pJI1mSs0j-XXGTXhtXwm47EdQ_G_yzD4b3oOjftrYHP0Q87DjIfy-L7i8-8bzQ5kVXEFFBu0fYqgibVwp_UUjVd4Hv_eapAA/s1600/Screenshot_2013-06-18-22-21-56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQKKfF9UuKrFXJgn4EaWqNgjcjUfhwumdfEUGZEag-6ej0pJI1mSs0j-XXGTXhtXwm47EdQ_G_yzD4b3oOjftrYHP0Q87DjIfy-L7i8-8bzQ5kVXEFFBu0fYqgibVwp_UUjVd4Hv_eapAA/s320/Screenshot_2013-06-18-22-21-56.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Click on &#39;OK&#39; and provide a PIN when asked for.&lt;br /&gt;
This should prevent the adult content from appearing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/2391704249261770690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/google-play-store-containing-adult.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2391704249261770690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2391704249261770690'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/google-play-store-containing-adult.html' title='Google Play Store containing Adult Content'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxE4of-IsJdO-w8ozHBI134RbLGQplyhIu0-dgFoxm9hn5rjymdwa27T2vGy6mUw_Tb6IqaK323iCvyGAYqrNZmUP6JcGZHRzj-UVbXd2Ru3vdT15v1h8JcsTkD-0o38zHToC4IUZlAEYY/s72-c/Screenshot_2013-06-18-22-23-32.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-5779882484009424661</id><published>2013-06-15T23:34:00.004-07:00</published><updated>2013-06-15T23:34:47.532-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Samsung Galaxy Tab Factory Reset"/><category scheme="http://www.blogger.com/atom/ns#" term="Samsung Galaxy Tab Hangs"/><category scheme="http://www.blogger.com/atom/ns#" term="Samsung Galaxy Tab Sluggish"/><title type='text'>Samsung Galaxy Tab is Sluggish and Hangs after JellyBean Upgrade</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
My Samsung Galaxy Tab2 10.1 started behaving weirdly all of a sudden.&lt;br /&gt;
Symptoms&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Applications are not responding&lt;/li&gt;
&lt;li&gt;Accessing settings options hangs or not responding for a long time.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
The main events which happened before this issue are&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Online upgrade to JellyBean from ICS.&lt;/li&gt;
&lt;li&gt;New micro SD card is added&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Ideally none of the above should cause the device &#39;Sluggish&#39;, But the fact is that my tab became unusable.&lt;br /&gt;
&lt;br /&gt;
After a quick internet research , I was &#39;happy&#39; to realize that there are many unfortunate souls out there who faced the same issue after JellyBean upgrade.&lt;br /&gt;
&lt;br /&gt;
&#39;Factory Reset&#39; seems to be the only solution for this issue.&lt;br /&gt;
But before that I decided to try other options like -&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;The data in the tablet was getting back up to Google server. This could be a costly service So disabled it from the Settings -&amp;gt; Backup And Restore.&lt;/li&gt;
&lt;li&gt;Installed AVG anti virus for tab : In the first scan it identified and disabled an unathorized service which was performing Network access.&lt;/li&gt;
&lt;li&gt;Uninstalled all applications.&lt;/li&gt;
&lt;li&gt;Removed SD card.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Restarted the tablet (Press and hold the power button), and it started working normally.&lt;br /&gt;
But the happiness was short lived, after some time I inserted the micro SD card again. And the hang issues started again!&lt;br /&gt;
&lt;br /&gt;
With this I agreed that Samsung won and I lost and decided to go ahead with the &#39;Factory Reset&#39;.&lt;br /&gt;
For doing this- select the option from Settings-&amp;gt; Backup and Restore-&amp;gt; Factory Reset-&amp;gt; Erase all data.&lt;br /&gt;
&lt;br /&gt;
This operation takes only couple of minutes.&lt;br /&gt;
After this , the devices is back to normal state.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Backup all the data before performing the factory reset.&lt;/li&gt;
&lt;li&gt;Try other options mentioned above before executing Factory reset, it may solve the problem.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/5779882484009424661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/samsung-galaxy-tab-is-sluggish-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5779882484009424661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5779882484009424661'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/samsung-galaxy-tab-is-sluggish-and.html' title='Samsung Galaxy Tab is Sluggish and Hangs after JellyBean Upgrade'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-6879165256258042166</id><published>2013-06-02T00:48:00.000-07:00</published><updated>2013-06-02T00:54:18.750-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android app to SD"/><category scheme="http://www.blogger.com/atom/ns#" term="Android external storage"/><category scheme="http://www.blogger.com/atom/ns#" term="external storage is emulated."/><title type='text'>Moving Apps to External Storage in Samsung Galaxy Tab</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
After updating the Samsung Galaxy Tab2 to JellyBean, I realized that it is no longer possible to move the applications to external storage.&lt;br /&gt;
&lt;br /&gt;
Application like &#39;App2SD&#39; is giving the error message -&lt;br /&gt;
&lt;span style=&quot;background-color: #e1e4f2; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px; font-style: italic;&quot;&gt;&quot;the device does not have a real primary external storage, or the primary external storage is emulated&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #e1e4f2; font-family: verdana, geneva, lucida, &#39;lucida grande&#39;, arial, helvetica, sans-serif; font-size: 13px; font-style: italic;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
The reason is -Android removed the support for moving the apps to external storage in the newer releases of the OS! So if you are using a device with Android version later than 3.0 then moving apps to SD card is not possible.&lt;br /&gt;
There is no easy and reliable app or workaround which will help you to do this.&lt;br /&gt;
&lt;br /&gt;
There are different theories why this happened -&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Google in general trying to kill SD cards.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Remember, google devices like Nexus does not support external storage.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Any thing to do with the Patent issues with Microsoft?&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Android is said to be the most successful mobile operating system of Microsoft, as Microsoft gets $$ for each Android phone sold.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;div&gt;
Read about Google&#39;s explanation for the lack of SD card support in Nexus devices &lt;a href=&quot;http://www.tomshardware.com/news/Google-SD-Card-Nexus-Smartphone,18841.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
May be the basic users will not even notice the lack of SD card support, But this IS a disadvantage for the advanced users. With the new games increasing in size it will be pain to decide which ones to uninstall before installing a new one.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Looks like experts at Google are telling that 8Gb/16Gb in a mobile device is enough for any one.&lt;/div&gt;
&lt;div&gt;
I hope they will remember another famous quote by Bill Gates&amp;nbsp;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.1875px;&quot;&gt;&quot;640K ought to be enough for anybody&lt;/span&gt;&amp;nbsp;&quot;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/6879165256258042166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/moving-apps-to-external-storage-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6879165256258042166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6879165256258042166'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/06/moving-apps-to-external-storage-in.html' title='Moving Apps to External Storage in Samsung Galaxy Tab'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-1732994079663107133</id><published>2013-05-27T19:34:00.000-07:00</published><updated>2013-05-27T19:34:51.230-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Opening Senior Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Opening Tech Lead"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Job Opening"/><title type='text'>Looking for Technical Leaders and Senior Developers</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
There are openings in NokiaSiemensNetworks for the positions of Technical Leaders and Senior Developers for Bangalore location.&lt;br /&gt;
&lt;br /&gt;
Please send the resume , if you have&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Minimum three years of experience.&lt;/li&gt;
&lt;li&gt;Very good &amp;nbsp;technical strength.&lt;/li&gt;
&lt;li&gt;Good software design knowledge.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/1732994079663107133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/05/looking-for-technical-leaders-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/1732994079663107133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/1732994079663107133'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/05/looking-for-technical-leaders-and.html' title='Looking for Technical Leaders and Senior Developers'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-8805783940332208782</id><published>2013-05-26T09:04:00.001-07:00</published><updated>2013-06-03T17:57:30.117-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="how upgrade android"/><category scheme="http://www.blogger.com/atom/ns#" term="Kies upgrade issue"/><category scheme="http://www.blogger.com/atom/ns#" term="Ordinal 7426 could not"/><category scheme="http://www.blogger.com/atom/ns#" term="ordinal 9272 could not"/><category scheme="http://www.blogger.com/atom/ns#" term="Samsung Android Update"/><category scheme="http://www.blogger.com/atom/ns#" term="Samsung Galaxy JellyBean Upgrade"/><category scheme="http://www.blogger.com/atom/ns#" term="samsung galaxy tab upgrade"/><title type='text'>Upgrading Samsung Galaxy Tab2 to JellyBean</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
To my surprise, the Samsung Galaxy Tab2 PT5100 I bought was having Android ICS. So started the experiments on how to get it upgraded to JellyBean.&lt;br /&gt;
&lt;br /&gt;
First what I tried was using the Samsung Kies software available in my laptop for upgrading the firmware, but that was not even recognizing the device!&lt;br /&gt;
&lt;br /&gt;
As any good user of Microsoft Windows does, I too uninstalled Kies completely and installed again the latest version downloaded from &lt;a href=&quot;http://www.samsung.com/ca/support/usefulsoftware/KIES/JSP&quot; target=&quot;_blank&quot;&gt;Kies download link&lt;/a&gt;&amp;nbsp;. Started the new Kies application thinking that will magically upgrade my Tab to JellyBean. But life is never that easy when it comes to Samsung Kies software.&lt;br /&gt;
&lt;br /&gt;
It started giving the error &quot;&lt;span style=&quot;background-color: white; color: #333333; font-family: &#39;Segoe UI&#39;, Arial, sans-serif; font-size: 13px;&quot;&gt;the ordinal 9272 could not be located in the ...&lt;/span&gt;&quot;&lt;br /&gt;
After some research - came to the possible solution of installing the latest &#39;.Net&#39; framework&lt;br /&gt;
&lt;a href=&quot;http://www.microsoft.com/net&quot; target=&quot;_blank&quot;&gt;.Net Framework&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;The moment I see such &#39;for programmer&#39; error message from any software, I know things will not be smooth. Here also, on restart Kies started giving another error &quot;&lt;br /&gt;
&lt;h1 class=&quot;wrapWord&quot; id=&quot;threadTitle&quot; style=&quot;-webkit-font-smoothing: antialiased; background-color: white; border: 0px; color: #333333; font-family: &#39;Segoe UI&#39;, Arial, sans-serif; font-size: 13px; margin: 0px; overflow-x: hidden; padding: 0px 0px 20px; position: relative; vertical-align: top; width: auto; word-wrap: break-word;&quot;&gt;
The ordinal 7426 could not be located in the dynamic link library mfc90u.dll&lt;span style=&quot;background-color: transparent;&quot;&gt;&quot;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: transparent;&quot;&gt;This time possible solution was updating the VisualC++ libraries from here&amp;nbsp;&lt;a href=&quot;http://www.microsoft.com/en-us/download/confirmation.aspx?id=5582&quot; target=&quot;_blank&quot;&gt;VisualC++ download&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Also have a look at this Microsoft discussion thread&amp;nbsp;&lt;a href=&quot;http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/the-ordinal-7426-could-not-be-located-in-the/7d69d3a7-358c-4077-a875-ca81d40826fc&quot; target=&quot;_blank&quot;&gt;discussion forum&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Luckily the problems with the Kies disappeared now(Frankly I was expecting to see couple of more cryptic error messages). But the Kies proudly reported that my Tab is having the latest software and no upgrade is available!&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
With this I stopped my efforts to upgrade the software using Kies.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
But luckily the next day , a notification appeared in Tab indicating that an &quot;Upgrade is available&quot;, I jumped and accepted the notification before it disappears. In around 20 min the device was upgraded to Android 4.1.2 JellyBean. Looks like we can still believe in miracles in this world!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
A request to Samsung -&lt;/div&gt;
&lt;div&gt;
If the intention behind creating Kies is helping the customers in tasks like upgrading Firmware, then there are multiple areas which needs improvement. Starting with the first perception point of executing the software successfully.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
But if the intention is teaching customers about what kind of &#39;ordinals&#39; are in the mfc dll then it is doing the job beautifully.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/8805783940332208782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/05/upgrading-samsung-galaxy-tab2-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8805783940332208782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8805783940332208782'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/05/upgrading-samsung-galaxy-tab2-to.html' title='Upgrading Samsung Galaxy Tab2 to JellyBean'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-2391270925139792004</id><published>2013-04-28T10:57:00.000-07:00</published><updated>2013-07-18T23:10:48.236-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Free Kanban Board Digital"/><category scheme="http://www.blogger.com/atom/ns#" term="Kanban Board"/><category scheme="http://www.blogger.com/atom/ns#" term="Kanban Board Source Code"/><title type='text'>Kanban Board Digital</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Recently I attended a short meeting explaining the benefits of adopting Kanban, it was impressive.&lt;br /&gt;
&lt;div&gt;
What Wikipedia tells about Kanban -&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b style=&quot;background-color: white; font-family: sans-serif; font-size: 12.727272033691406px; line-height: 19.190340042114258px;&quot;&gt;Kanban&lt;/b&gt;&lt;span style=&quot;background-color: white; font-family: sans-serif; font-size: 12.727272033691406px; line-height: 19.190340042114258px;&quot;&gt;&amp;nbsp;is a method for developing software products and processes with an emphasis on just-in-time delivery while not overloading the software developers. In this approach, the process, from definition of a task to its delivery to the customer, is displayed for participants to see and developers pull work from a queue.&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Over all I think the Kanban implementation will help the scrum teams in managing the Feature Components in a more efficient way.&lt;br /&gt;
&lt;br /&gt;
Since having some free time now (having short vacation ;) ), I thought of developing a digital Kanban Board.&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;This is a Java Swing based tool. No third party libraries used.&lt;/li&gt;
&lt;li&gt;No installation is required.&lt;/li&gt;
&lt;li&gt;Completely Free to use.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
You can download the tool from&lt;a href=&quot;https://docs.google.com/file/d/0B5JqCea5Of4eWlNNUE9LTDVSYjA/edit?usp=sharing&quot; target=&quot;_blank&quot;&gt; here.&lt;/a&gt;&lt;br /&gt;
Contents of the zip file are -&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;BacklogNames.txt&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;The names of the backlogs you want to have in the KanbanBoard. Feel free to edit the content.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;KanbanBoard.jar&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Jar file containing all Java code. You can execute this by &#39;double clicking &#39; on it or by executing the command &#39;java -jar&amp;nbsp;KanbanBoard.jar&#39; without quotes in a command prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;run.bat&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Batch file to execute the program in windows machines. &amp;nbsp;Execute the batch file file double clicking on it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
Complete source code is available &lt;a href=&quot;https://docs.google.com/file/d/0B5JqCea5Of4eR0lwY3loekE3Q28/edit?usp=sharing&quot; target=&quot;_blank&quot;&gt;here&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
Please note: This is provide AsIs and there is no guarantee on the quality. Please use it at your own risk.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Look at the video of the tool&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dybEmm9ytzerBAxWHgqSgAsSZ6YpUGuVTEWfHQzjgK6-CJkJm6U-RklYa8Rv5EgRQAGQJAN5ylQhugzu2kLTg&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Screenshot#1&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkxXghZh9imrpwLY1BZxftFbsaQluW7FrQ9fww19c1e7I13h6WP2AsZcf_J8DrwtrGp4bW1Xd0DNr0XgbqAoyHtx5LhqvsQLn4pIbnk_7xQuLduvsFe-f8TCQb7c8mJUrFoW_ssWW1i2uC/s1600/screenshot.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;170&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkxXghZh9imrpwLY1BZxftFbsaQluW7FrQ9fww19c1e7I13h6WP2AsZcf_J8DrwtrGp4bW1Xd0DNr0XgbqAoyHtx5LhqvsQLn4pIbnk_7xQuLduvsFe-f8TCQb7c8mJUrFoW_ssWW1i2uC/s320/screenshot.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Screenshot#2&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4A_1reUUaJZ_RPu73Dc06vGS6bNt9TYtro6VhIlC-98i4Tplz7VWBLCt6PW_i27bn1JHYXRLakYxjYD3SeJ_t71KmHgf8Pz3AhNmpC-GBjhm2jfusYLsYuYpB4kuFZcbNWzbhqFJC4CMi/s1600/screenshot_2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;189&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4A_1reUUaJZ_RPu73Dc06vGS6bNt9TYtro6VhIlC-98i4Tplz7VWBLCt6PW_i27bn1JHYXRLakYxjYD3SeJ_t71KmHgf8Pz3AhNmpC-GBjhm2jfusYLsYuYpB4kuFZcbNWzbhqFJC4CMi/s320/screenshot_2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Current version of the tool uses the file system for persisting the data. But it can be easily enhanced to use database if required.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the next version I will provide the option to integrate with any database.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/2391270925139792004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/04/kanban-board-digital.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2391270925139792004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2391270925139792004'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/04/kanban-board-digital.html' title='Kanban Board Digital'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkxXghZh9imrpwLY1BZxftFbsaQluW7FrQ9fww19c1e7I13h6WP2AsZcf_J8DrwtrGp4bW1Xd0DNr0XgbqAoyHtx5LhqvsQLn4pIbnk_7xQuLduvsFe-f8TCQb7c8mJUrFoW_ssWW1i2uC/s72-c/screenshot.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-6893189381004459993</id><published>2013-03-01T03:46:00.000-08:00</published><updated>2013-03-11T18:48:28.368-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android SmsManager example"/><category scheme="http://www.blogger.com/atom/ns#" term="LocationManager"/><category scheme="http://www.blogger.com/atom/ns#" term="reading cell information"/><category scheme="http://www.blogger.com/atom/ns#" term="TelephonyManager example"/><title type='text'>Creating SoS Android Application in 30 minutes using TelephonyManager</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
There are number of free and paid &#39;SoS&#39; applications in the Android market , which will help the user to send a message with location details to pre-configured numbers.&lt;br /&gt;
&lt;br /&gt;
Let us check here how to develop such an Android application in less than 30 minutes.&lt;br /&gt;
&lt;br /&gt;
Development Environment :&lt;br /&gt;
Android Development Tools Bundle&lt;br /&gt;
Build - v21.0.1-543035&lt;br /&gt;
&lt;br /&gt;
We can start by creating an &#39;Android Application Project&#39;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5hDfpROLiAALZxH5dOl3qZF47-HxO2LiTZ8LaSJ7IpeTeVYDhP4MvFhzyffeTpMulTPGR-4OIpSwrjccxnBt_7B7SojaOyn6X8UPh8JHFzv3QLERzUDNGDXVLFxHZ0Rd3Eueo9j0CPeD0/s1600/createProject.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;273&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5hDfpROLiAALZxH5dOl3qZF47-HxO2LiTZ8LaSJ7IpeTeVYDhP4MvFhzyffeTpMulTPGR-4OIpSwrjccxnBt_7B7SojaOyn6X8UPh8JHFzv3QLERzUDNGDXVLFxHZ0Rd3Eueo9j0CPeD0/s320/createProject.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Click &#39;next&#39; on this and the next two screens.&lt;br /&gt;
Select &#39;FullScreenActivity&#39; in the &#39;Create Activity&#39; page&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKsVRcKe4puMXwyiDyKwAnyZnfvwuBOXsNqMsw_7891-Thoso9f8WAowscpxN7kjCt607bdKJuwloGKt9UdgDJIphqXM0KFCFeoad2T_zwR4bHjyy8cnwbFggzQVaZyhFOYBhPU2kiyuFU/s1600/createActivity.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;296&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKsVRcKe4puMXwyiDyKwAnyZnfvwuBOXsNqMsw_7891-Thoso9f8WAowscpxN7kjCt607bdKJuwloGKt9UdgDJIphqXM0KFCFeoad2T_zwR4bHjyy8cnwbFggzQVaZyhFOYBhPU2kiyuFU/s320/createActivity.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Give the activity name as &#39;BachaoActivity&#39; and click on &#39;Finish&#39;&lt;br /&gt;
The generated activity will have some code for using systemUiHider, we can remove these as the functionality is not required.&lt;br /&gt;
&lt;br /&gt;
After doing the cleanup , the activity code will be like below&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;cpp&quot; name=&quot;code&quot;&gt;package com.team.bachao;
package com.team.bachao;

import com.team.bachao.util.BachaoUtility;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 * 
 */
public class BachaoActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_bachao);
 }

 @Override
 protected void onPostCreate(Bundle savedInstanceState) {
  super.onPostCreate(savedInstanceState);

 }

}
&lt;/pre&gt;
&lt;br /&gt;
Next we need a add a on click listener to the button. This can be done by using&lt;b&gt; android:onClick&lt;/b&gt;&lt;br /&gt;
Complete activity_bachao.xml layout content is given below&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:background=&quot;#0099cc&quot;
    tools:context=&quot;.BachaoActivity&quot; &amp;gt;

    &amp;lt;!--
         This FrameLayout insets its children based on system windows using
         android:fitsSystemWindows.
    --&amp;gt;

    &amp;lt;FrameLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:fitsSystemWindows=&quot;true&quot; &amp;gt;

        &amp;lt;LinearLayout
            android:id=&quot;@+id/fullscreen_content_controls&quot;
            style=&quot;?buttonBarStyle&quot;
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_gravity=&quot;center_vertical|center_horizontal&quot;
            android:background=&quot;@color/black_overlay&quot;
            android:orientation=&quot;horizontal&quot;
            tools:ignore=&quot;UselessParent&quot; &amp;gt;

            &amp;lt;Button
                android:id=&quot;@+id/dummy_button&quot;
                style=&quot;?buttonBarButtonStyle&quot;
                android:layout_width=&quot;0dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:layout_weight=&quot;1&quot;
                android:text=&quot;@string/dummy_button&quot;
                &lt;b&gt;android:onClick&lt;/b&gt;=&quot;onBachao&quot; /&amp;gt;
        &amp;lt;/LinearLayout&amp;gt;
    &amp;lt;/FrameLayout&amp;gt;

&amp;lt;/FrameLayout&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
Now the basic stuff is available. Let us look at what needs to be done when user clicks on the SoS button.&lt;br /&gt;
First we need to read the network information like country code, operator ID and operator name, for this we &amp;nbsp;can use the TelephonyManager provided by android.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
  if (telephonyManager != null) {
   operatorInfo.countryCode = telephonyManager.getNetworkCountryIso(); 
   operatorInfo.operatorID = telephonyManager.getNetworkOperator();
   operatorInfo.operatorName = telephonyManager.getNetworkOperatorName();
  } else {
   Toast.makeText(context, &quot;Unable to read telephony manager&quot;  
      , Toast.LENGTH_SHORT).show();
  }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Another information which will be useful to collect will be the cell location.
But this will be possible only for the GSM connections
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;if (telephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
    GsmCellLocation cellLocation = (GsmCellLocation)telephonyManager.getCellLocation();
    operatorInfo.cellID = cellLocation.getCid();
    operatorInfo.locationAreaCode = cellLocation.getLac();
   }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Next information we want to read is the location coordinates like &lt;b&gt;Lat &lt;/b&gt;and &lt;b&gt;Lon&lt;/b&gt;
For this we can use the &lt;b&gt;LocationManager&lt;/b&gt; provided by Android
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;final LocationManager locationManager;
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
&lt;/pre&gt;
&lt;br /&gt;
Using the location manager instance, we can find the list of location providers available in the device.
Some of the possible providers are 
GPS_PROVIDER - Use GPS to find the location
NETWORK_PROVIDER - Use Network to find the location
PASSIVE_PROVIDER - This is of not much use to us in this context.
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;List&amp;lt;String&amp;gt; providerNames = locationManager.getProviders(true);
  
  String providerName = null;
  if (providerNames != null &amp;amp;&amp;amp; providerNames.size() &amp;gt; 0) {
   if (providerNames.contains(LocationManager.GPS_PROVIDER)) {
    providerName = LocationManager.GPS_PROVIDER;
   } else if (providerNames.contains(LocationManager.NETWORK_PROVIDER)) {
    providerName = LocationManager.NETWORK_PROVIDER;
   }
  }
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
We can also find the provider from location manager which is matching a set of conditions.
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
criteria.setAltitudeRequired(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String providerName = locationManager.getBestProvider(criteria, true);
&lt;/pre&gt;
&lt;br /&gt;
Once the provider is available we can request for the current location information. But for this we need to use a location listener.
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;location = locationManager.getLastKnownLocation(providerName);
   
   LocationListener locationListener = new LocationListener() {

   public void onLocationChanged(Location location) {
    Toast.makeText(context, &quot;on location changed &quot; , Toast.LENGTH_SHORT).show();
    
    locationManager.removeUpdates(this);
    processLocation(context, location);
   }

   public void onProviderDisabled(String arg0) {
    Log.e(&quot;WTF&quot;, &quot;provider disabled!&quot;);
    Toast.makeText(context, &quot;disabled &quot; , Toast.LENGTH_SHORT).show();
   }

   public void onProviderEnabled(String arg0) {
    // do nothing.
   }

   public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    // Do nothing.
   }
   
  };
  
  locationManager.requestLocationUpdates(providerName, 0, 0, locationListener);
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;onLocationChanged&lt;/b&gt; method will be called when the new location is available from the provider.
&lt;br /&gt;
&lt;br /&gt;
Now we have all the information available to send to the emergency contacts. So let us send an SMS with this information. For this we can use the &lt;b&gt;SmsManager&lt;/b&gt; provided by Android
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;StringBuilder sb = new StringBuilder();
  sb.append(&quot;Emergency! Please reach out\n&quot;);
  if (location != null) {
   sb.append(&quot;Lat : &quot; + location.getLatitude() + &quot; Lon : &quot; + location.getLongitude());
  }
  sb.append(&quot; CountryCode : &quot; + operatorInfo.countryCode);
  sb.append(&quot; OperatorID : &quot; + operatorInfo.operatorID);
  sb.append(&quot; OperatorName : &quot; + operatorInfo.operatorName);
  sb.append(&quot; \nCellID : &quot; + operatorInfo.cellID);
  sb.append(&quot; LocationAreaCode : &quot; + operatorInfo.locationAreaCode);

  SmsManager smsManager = SmsManager.getDefault();
  smsManager.sendTextMessage(&quot;%emergencyContactNumber%&quot;, null, sb.toString(), null, null);
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Replace %emergencyContactNumber% with actual mobile number.
Another way to send SMS is through using &lt;b&gt;Intent&lt;/b&gt;, but this will only open the default SMS application with the message , will not send it.
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse(&quot;sms:%emergencyContactNumber%&quot;));
smsIntent.putExtra(&quot;sms_body&quot;, sb.toString());
context.startActivity(smsIntent);
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
But before we use test this application, required permission requests must be added in the AndroidManifest file
&lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot;&amp;gt;
&amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_COARSE_LOCATION&quot;&amp;gt;
&amp;lt;uses-permission android:name=&quot;android.permission.READ_PHONE_STATE&quot;&amp;gt;
&amp;lt;uses-permission android:name=&quot;android.permission.SEND_SMS&quot;&amp;gt;
&amp;lt;/uses-permission&amp;gt;&amp;lt;/uses-permission&amp;gt;&amp;lt;/uses-permission&amp;gt;&amp;lt;/uses-permission&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Complete code for BachaoActivity.java
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;package com.team.bachao;

import com.team.bachao.util.BachaoUtility;
import com.team.bachao.util.SystemUiHider;

import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 * 
 * @see SystemUiHider
 */
public class BachaoActivity extends Activity {
 private BachaoUtility handler;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_bachao);
  handler = new BachaoUtility(BachaoActivity.this);
  Toast.makeText(BachaoActivity.this, &quot;Initialized&quot;, Toast.LENGTH_LONG).show();
 }

 @Override
 protected void onPostCreate(Bundle savedInstanceState) {
  super.onPostCreate(savedInstanceState);

 }

 public void onBachao(View view) {
  handler.bachao();
 }
 
}
&lt;/pre&gt;
&lt;br /&gt;
Complete code for BachaoUtility.java
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;package com.team.bachao.util;

import java.util.List;

import com.team.bachao.BachaoActivity;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.util.Log;
import android.widget.Toast;

public class BachaoUtility {
 
 private Location location;
 private OperatorInfo operatorInfo;
 private BachaoActivity context;
 
 public BachaoUtility(BachaoActivity context) {
  this.context = context;
 }
 
 public void bachao() {
  operatorInfo = new OperatorInfo(); 
  TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
  if (telephonyManager != null) {
   operatorInfo.countryCode = telephonyManager.getNetworkCountryIso(); 
   operatorInfo.operatorID = telephonyManager.getNetworkOperator();
   operatorInfo.operatorName = telephonyManager.getNetworkOperatorName();
   if (telephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
    GsmCellLocation cellLocation = (GsmCellLocation)telephonyManager.getCellLocation();
    operatorInfo.cellID = cellLocation.getCid();
    operatorInfo.locationAreaCode = cellLocation.getLac();
   }
  } else {
   Toast.makeText(context, &quot;Unable to read telephony manager&quot;  
      , Toast.LENGTH_SHORT).show();
  }
  
  //
  // Get the location service.
  
  final LocationManager locationManager;
  locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
  
  
  //
  // Get location coordinates
//  Criteria criteria = new Criteria();
//  criteria.setAccuracy(Criteria.ACCURACY_COARSE);
//  criteria.setAltitudeRequired(false);
//  criteria.setPowerRequirement(Criteria.POWER_LOW);
//  String providerName = locationManager.getBestProvider(criteria, true);
  List&amp;lt;String&amp;gt; providerNames = locationManager.getProviders(true);
  
  String providerName = null;
  if (providerNames != null &amp;amp;&amp;amp; providerNames.size() &amp;gt; 0) {
   if (providerNames.contains(LocationManager.GPS_PROVIDER)) {
    providerName = LocationManager.GPS_PROVIDER;
   } else if (providerNames.contains(LocationManager.NETWORK_PROVIDER)) {
    providerName = LocationManager.NETWORK_PROVIDER;
   }
  }

   
  if (providerName != null) {
   location = locationManager.getLastKnownLocation(providerName);
   
   LocationListener locationListener = new LocationListener() {

   public void onLocationChanged(Location location) {
    Toast.makeText(context, &quot;on location changed &quot; , Toast.LENGTH_SHORT).show();
    
    locationManager.removeUpdates(this);
    processLocation(context, location);
   }

   public void onProviderDisabled(String arg0) {
    Log.e(&quot;WTF&quot;, &quot;provider disabled!&quot;);
    Toast.makeText(context, &quot;disabled &quot; , Toast.LENGTH_SHORT).show();
   }

   public void onProviderEnabled(String arg0) {
    // do nothing.
   }

   public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    // Do nothing.
   }
   
  };
  
  locationManager.requestLocationUpdates(providerName, 0, 0, locationListener);
  }
  
  sendMessage();

  //
  // Send facebook update
  
  //
  // Send twitter update
  
  //
  // record audio
  
  //
  // record video
  
  //
  // Send mail
 }
 
 public void processLocation(BachaoActivity context, Location location) {
  Toast.makeText(context, &quot;Lat : &quot; + location.getLatitude()
    + &quot;\n Lon : &quot; + location.getLatitude(), Toast.LENGTH_LONG).show();
  this.location = location;
  //
  // Send message
  sendMessage();
  
 }

 private void sendMessage() {
  StringBuilder sb = new StringBuilder();
  sb.append(&quot;Emergency! Please reach out\n&quot;);
  if (location != null) {
   sb.append(&quot;Lat : &quot; + location.getLatitude() + &quot; Lon : &quot; + location.getLongitude());
  }
  sb.append(&quot; CountryCode : &quot; + operatorInfo.countryCode);
  sb.append(&quot; OperatorID : &quot; + operatorInfo.operatorID);
  sb.append(&quot; OperatorName : &quot; + operatorInfo.operatorName);
  sb.append(&quot; \nCellID : &quot; + operatorInfo.cellID);
  sb.append(&quot; LocationAreaCode : &quot; + operatorInfo.locationAreaCode);

//  Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse(&quot;sms:%emergencyContactNumber%&quot;));
//  smsIntent.putExtra(&quot;sms_body&quot;, sb.toString());
//  context.startActivity(smsIntent);
  
  SmsManager smsManager = SmsManager.getDefault();
  smsManager.sendTextMessage(&quot;%emergencyContactNumber%&quot;, null, sb.toString(), null, null);
 }
}
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
In the next version I will integrate audio/ video recording, sending the data via mail , updating in facebook/twitter.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/6893189381004459993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2013/03/creating-sos-android-application-in-30.html#comment-form' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6893189381004459993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6893189381004459993'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2013/03/creating-sos-android-application-in-30.html' title='Creating SoS Android Application in 30 minutes using TelephonyManager'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/14704599484687836376</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5hDfpROLiAALZxH5dOl3qZF47-HxO2LiTZ8LaSJ7IpeTeVYDhP4MvFhzyffeTpMulTPGR-4OIpSwrjccxnBt_7B7SojaOyn6X8UPh8JHFzv3QLERzUDNGDXVLFxHZ0Rd3Eueo9j0CPeD0/s72-c/createProject.jpg" height="72" width="72"/><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-9153515853026088523</id><published>2012-06-30T07:37:00.000-07:00</published><updated>2012-06-30T07:38:52.544-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fisherman&#39;s wharf"/><category scheme="http://www.blogger.com/atom/ns#" term="goan food"/><category scheme="http://www.blogger.com/atom/ns#" term="restaurant"/><title type='text'>Lunch @ Fisherman&#39;s Wharf Bangalore</title><content type='html'>&lt;p&gt;
Recently heard about &quot;The Fisherman&#39;s Wharf&quot; and thought of trying it today.
After the usual Saturday shopping went to the restaurant for Launch buffet.
&lt;/p&gt;
&lt;p&gt;
For me the initial and most important perception points when visiting any restaurant are :
&lt;ul&gt;
&lt;li&gt;Car Parking &lt;/li&gt;
&lt;li&gt;Time to get seated&lt;/li&gt;
&lt;li&gt;Time to take the first order&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Car parking was well organized and assistant was also available.
Front desk staff was really quick and got a good table with in minutes.
The restaurant was crowded. Luckily I thought of calling in advance otherwise wait for the table could have been long.
&lt;/p&gt;
&lt;p&gt;
There was a Kannada star in the adjacent table (I think it was Sudeep). luckily he, staff and other guests were acting normally. 
&lt;/p&gt;
&lt;p&gt;
Rating :
The ambiance is very good &lt;br&gt;
&lt;b&gt;9/10&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Food is good. Options for Welcome drink was beer or mock-tail. Only Fosters was available, I hope they will add more varieties. &lt;br&gt;
&lt;b&gt;8/10&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://thefishermanswharf.in/&quot;&gt;http://thefishermanswharf.in&lt;/a&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://thefishermanswharf.in/wp-content/uploads/2012/03/News-Paper-Insert-Front-614x1024.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;1024&quot; src=&quot;http://thefishermanswharf.in/wp-content/uploads/2012/03/News-Paper-Insert-Front-614x1024.jpg&quot; width=&quot;614&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://thefishermanswharf.in/wp-content/uploads/2012/03/News-Paper-Insert-Back1-614x1024.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;1024&quot; width=&quot;614&quot; src=&quot;http://thefishermanswharf.in/wp-content/uploads/2012/03/News-Paper-Insert-Back1-614x1024.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/9153515853026088523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2012/06/lunch-fishermans-wharf-bangalore.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/9153515853026088523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/9153515853026088523'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2012/06/lunch-fishermans-wharf-bangalore.html' title='Lunch @ Fisherman&#39;s Wharf Bangalore'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-3148112661314882969</id><published>2012-06-25T04:00:00.003-07:00</published><updated>2013-09-08T22:11:50.499-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="close"/><category scheme="http://www.blogger.com/atom/ns#" term="force stop"/><category scheme="http://www.blogger.com/atom/ns#" term="TwLauncher"/><title type='text'>TwLauncher &#39;Force Stop&#39; issue</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Yesterday I realized that the desktops in my Samsung Galaxy S is full and for most of the applications there are 3 to 4 links in the desktop (thanks to my daughter). So started a cleanup work by moving the unnecessary links to the recycle bin.&lt;br /&gt;
I was hoping that the phone may be faster once I finish the cleanup, but to my surprise phone stopped responding !!&lt;br /&gt;
&lt;br /&gt;
&#39;Force Close&#39; error message for the TwLauncher started coming continuously. It was not possible to access any applications, settings etc but phone functionality/ contacts was ok. The smartphone almost became a brick.&lt;br /&gt;
&lt;br /&gt;
From Android experience I knew that some how if I reset data for the TwLauncher things should work but the problem was that it was not possible to go to the &#39;Manage Applications&#39; link.&lt;br /&gt;
&lt;br /&gt;
But finally after couple of painful hours I managed to make my phone work again.&lt;br /&gt;
Following are the steps (for other urfortunate guys using TwLauncher)&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt; Try to invoke google search box. This can be done by pressing and holding the context menu button.&lt;br /&gt;
But you will have to really fight with the &#39;Force Close&#39; messages as they will be repeatedly appearing.&lt;br /&gt;
Keep on trying this , if you are lucky after sometime the search box will appear.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt; Ensure that the mode of the search box is &#39;Apps&#39; (mode can be changed by clicking the button to the left of search box ).&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt; Search for &quot;setting &quot;, this will launch the Settings&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt; In Settings, go to &#39;Applications&#39; -&amp;gt; &#39;Manage Applications&#39; -&amp;gt; &#39;All&#39; tab&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt; Select TwLauncher app from the list and click &#39;Clear Data&#39;, this will recover the phone.&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;
Other options considered are&lt;br /&gt;
i. Install another launcher like &#39;GO Launcher&#39;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;This may not help if the issue already occured, but it will be a good idea to install such alternate launcher to help in future.&lt;br /&gt;
&#39;Go Launcher&#39; is available for free from &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.gau.go.launcherex&quot; target=&quot;_blank&quot;&gt;Google Play&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ii. Cleaning the TwLauncher data in USB mode&lt;br /&gt;
Try connecting the phone to Laptop in USB mode, if this works then the Launcher data can be cleared.&lt;br /&gt;
&lt;br /&gt;
iii. Factory reset&lt;br /&gt;
This is the last option if nothing else works.&lt;br /&gt;
&lt;br /&gt;
Note: Your custom screens may be lost once you clear the TwLauncher data.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Are you looking for good free Android educational application for Preschoolers?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Try this -&amp;nbsp;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.fortytwo.mathapps.kidsnumberlearning.activity&quot; target=&quot;_blank&quot;&gt;https://play.google.com/store/apps/details?id=com.fortytwo.mathapps.kidsnumberlearning.activity&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Review is available here -&amp;nbsp;&lt;a href=&quot;http://crashingnhanging.blogspot.in/2013/08/android-free-preschooler-number.html&quot; target=&quot;_blank&quot;&gt;http://crashingnhanging.blogspot.in/2013/08/android-free-preschooler-number.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/3148112661314882969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2012/06/twlauncher-force-stop-issue.html#comment-form' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/3148112661314882969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/3148112661314882969'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2012/06/twlauncher-force-stop-issue.html' title='TwLauncher &#39;Force Stop&#39; issue'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-7098127583803573194</id><published>2012-06-23T23:50:00.001-07:00</published><updated>2012-06-23T23:50:04.255-07:00</updated><title type='text'>g|days in India</title><content type='html'>Finally google days event in India !&lt;br /&gt;
Venues are Chennai, Bangalore, Hyderabad, Delhi and Mumbai&lt;br /&gt;
&lt;br /&gt;
Since the space is limited , register today itself.&lt;br /&gt;
For details visit :&amp;nbsp;&lt;a href=&quot;https://sites.google.com/site/gindia12/&quot;&gt;https://sites.google.com/site/gindia12/&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;color: #636363; font-family: arial, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 16px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/7098127583803573194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2012/06/gdays-in-india.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/7098127583803573194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/7098127583803573194'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2012/06/gdays-in-india.html' title='g|days in India'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-24987965430756719</id><published>2012-01-31T02:04:00.000-08:00</published><updated>2012-01-31T02:05:17.773-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Generate"/><category scheme="http://www.blogger.com/atom/ns#" term="JUnit"/><category scheme="http://www.blogger.com/atom/ns#" term="Mock"/><category scheme="http://www.blogger.com/atom/ns#" term="Unit Test"/><title type='text'></title><content type='html'>&lt;h2&gt;&lt;span style=&quot;color: purple;&quot;&gt;Introduction&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;b&gt;JMock&lt;/b&gt;&amp;nbsp;is the famous library which can be used for working with&amp;nbsp;&lt;b&gt;Mock Objects&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;(Please check www.MockObjects.com to know more about Mock Objects.) . How ever you might be excited to know that Mock Objects are not just Stubs!!&amp;nbsp;&lt;em&gt;They give a different approach to unit testing.&lt;/em&gt;&lt;br /&gt;
So finally testing is also becoming as interesting as Coding.&lt;br /&gt;
In simple words we can say that a mock object is something which can be used for testing the behavior of other objects. It will mimic the behavior of an actual class / interface.&lt;br /&gt;
A Mock object can also observe how other objects uses its methods and compare with the expected behavior. (I will explain this in detail with code sample.)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;This means that we can test and verify how our class uses the available environment.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;Let&#39;s assume you are developing a&amp;nbsp;&lt;b&gt;&lt;em&gt;Customer&lt;/em&gt;&lt;/b&gt;&amp;nbsp;class which has to interact with a&amp;nbsp;&lt;b&gt;&lt;em&gt;BookShop&lt;/em&gt;&lt;/b&gt;class. But unfortunately&amp;nbsp;&lt;b&gt;&lt;em&gt;BookShop&lt;/em&gt;&lt;/b&gt;&amp;nbsp;class your friend is developing and as usual it is not available yet. So naturally we will decide to use a Mock Object of&amp;nbsp;&lt;b&gt;&lt;em&gt;BookShop&lt;/em&gt;&lt;/b&gt;&amp;nbsp;instead of an actual instance.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;Customer has function&amp;nbsp;&lt;b&gt;&lt;em&gt;doTransaction()&lt;/em&gt;&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;b&gt;&lt;em&gt;BookShop&lt;/em&gt;&lt;/b&gt;&amp;nbsp;has methods&amp;nbsp;&lt;b&gt;&lt;em&gt;pay(Money)&lt;/em&gt;&lt;/b&gt;&amp;nbsp;,&amp;nbsp;&lt;b&gt;&lt;em&gt;Book getBook()&lt;/em&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;Using JMock we will be able to specify that&amp;nbsp;&lt;b&gt;&lt;em&gt;getBook()&lt;/em&gt;&lt;/b&gt;&amp;nbsp;is always called only after&amp;nbsp;&lt;b&gt;&lt;em&gt;pay().&lt;/em&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;So if anywhere in our&amp;nbsp;&lt;b&gt;&lt;em&gt;doTransaction&lt;/em&gt;&lt;/b&gt;&amp;nbsp;method if&amp;nbsp;&lt;b&gt;&lt;em&gt;getBook&lt;/em&gt;&lt;/b&gt;&amp;nbsp;is called with out&amp;nbsp;&lt;b&gt;&lt;em&gt;pay()&lt;/em&gt;&lt;/b&gt;&amp;nbsp;it will result in an error with bright red colour while testing it.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;This way we can ensure that our class uses the available interface in the desired way.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;In a&amp;nbsp;&lt;b&gt;TestDrivenDevelopment&lt;/b&gt;&amp;nbsp;environment this means that interface problems can be found even before the actual coding of it starts.&lt;br /&gt;
&lt;b&gt;JMock&lt;/b&gt;&amp;nbsp;makes our life easier by creating mock objects dynamically and providing features to specify expectations (How it should behave, etc).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;&lt;span style=&quot;color: purple;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=7053729872062608420&amp;amp;postID=24987965430756719&quot; name=&quot;UsingJMockinUnitTesting-DownloadLink&quot;&gt;&lt;/a&gt;Download Link&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;The JMock jar/zip can be downloaded from www.JMock.org&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;This can be added as external jar file in your Eclipse project.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;&lt;span style=&quot;color: purple;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=7053729872062608420&amp;amp;postID=24987965430756719&quot; name=&quot;UsingJMockinUnitTesting-UsingJMock&quot;&gt;&lt;/a&gt;Using JMock&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;Here comes the interesting part!&lt;br /&gt;
Lets develop as class called&amp;nbsp;&lt;b&gt;&lt;em&gt;DispFile&lt;/em&gt;&lt;/b&gt;&amp;nbsp;, which is a highly useful class for displaying a given file in console.&lt;br /&gt;
&lt;b&gt;&lt;em&gt;DispFile&lt;/em&gt;&lt;/b&gt;&amp;nbsp;class uses the&amp;nbsp;&lt;b&gt;&lt;em&gt;IFileHandler&lt;/em&gt;&lt;/b&gt;&amp;nbsp;interface for the file operations .&lt;br /&gt;
&lt;b&gt;Code for IFileHandler&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;public interface IFileHandler {   public void open(String filename) ;   public void close() ;   public String read() ;    } &lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;b style=&quot;font-family: Georgia, serif; font-size: 16px; white-space: normal;&quot;&gt;Code for DispFile&lt;/b&gt; &lt;/pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;public class DispFile {     public DispFile() &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;{     }    &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;     /**      * Business method to display the given file line by line      */     public boolean display(String filename) &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;{         &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;  &lt;/span&gt;Boolean status = true;         &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;  &lt;/span&gt;try &lt;span class=&quot;Apple-tab-span&quot;&gt;  &lt;/span&gt;{             &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;   &lt;/span&gt;IFileHandler fileIntf = new FileHandler();             &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;   &lt;/span&gt;fileIntf.open(filename);             &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;   &lt;/span&gt;String line = null;             &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;   &lt;/span&gt;while ((line = fileIntf.read()) != null) &lt;span class=&quot;Apple-tab-span&quot;&gt;   &lt;/span&gt;{                 &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;    &lt;/span&gt;System.out.println(line);             &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;   &lt;/span&gt;}            &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;   &lt;/span&gt;fileIntf.close();         } catch (Exception e)   &lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;{             &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt;  &lt;/span&gt;Status = false;         &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;}        &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;return status;     } } &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt; Here the line &quot;new FileHandler&quot; is the problem! We know the actual implementation is not yet available. So we have to use a MockObject for IFileHandler instead of an actual instance.  We must change the class to make it testable . The changes are minimal and it is a low price to pay for getting the testability with Mock Objects. This refactoring also makes the design cleaner.  The modified code is given below. &lt;/span&gt;
&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;
&lt;/span&gt;
&lt;div&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;public class DispFile {  &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;... /** Business method to display the given file line by line */  &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;public boolean display(String filename) {   &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Boolean status = true;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Try {    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;IFileHandler fileIntf = getFileHandler();    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt; ....      &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;}catch (Exception e) {&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Status = false&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;}    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;return status; &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt; }  &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;/**   Its true that this method seems nonsense, but it is very important forUnit testing with Mock Object technology. */&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;protected IFileHandler getFileHandler() { &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;return new FileHandler();&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;}   &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;} &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;b&gt;
&lt;/b&gt;&lt;/pre&gt;&lt;pre&gt;&lt;b&gt;Code for Test Class&lt;/b&gt; &lt;/pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;package chkJMock; &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;import junit.framework.TestCase; &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;import org.jmock.*; &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;public class DispFileTest extends MockObjectTestCase {  &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;/ *    * Test method for &#39;chkJMock. DispFile.display(fileName)&#39;    */  &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;public void testDisplay() { ....   } &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;} &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;We will check the code             required in testDisplay method in detail. &lt;/span&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;
&lt;/span&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;//set up the Mock Object .&lt;/span&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;//First we have to &lt;em&gt;set up&lt;/em&gt; the context             in which our test will execute.&lt;/span&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;//We have to create a DispFile to test. We             have to create a mock IFileHandler that       &lt;/span&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;//should receive the message. We then             register the mock  IFileHandler with the DispFile.&lt;/span&gt;
&lt;div class=&quot;preformatted&quot;&gt;&lt;div class=&quot;preformattedContent&quot;&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Mock mockFileHandler = mock(IFileHandler.class);&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;final IFileHandler intf = (IFileHandler) mockFileHandler.proxy();    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;DispFile df = new DispFile() {     &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;protected IFileHandler getFileHandler() {       &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// I hope now the use of silly looking getFileHandler method is clear.         &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;return intf;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// expectations    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// Here we specify how DispFile class is expected to use the IFileHandler interface.     &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;//    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// The method open should be called only once with the argument file (String            // containing name of the file to display).    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;String file = &quot;E:\\@Com XML CorbaTask.xml&quot;;    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;mockFileInterface.expects(once()).method(&quot;open&quot;).with(eq(file));        &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;//    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// The method close should be called only once and it must be called after the method      &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// open . (Unless you want to close a file which is not yet opened! ).    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;mockFileInterface.expects(once()).method(&quot;close&quot;).after(&quot;open&quot;);     &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// The method read should be called one or more times (we are reading lines in a loop.)    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// It should return a null string when it is invoked.    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;mockFileInterface.expects(atLeastOnce()).method(&quot;read&quot;).withNoArguments()     .will(returnValue(null));        &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// execute    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;// Call the business method we were waiting for    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;boolean status;    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;status = lf.list(file);    &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;assertTrue(&quot;Error displaying file : &quot; + file, status);  &lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px; text-align: left;&quot;&gt;&lt;/pre&gt;&lt;pre style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;This when executed ensures that the methods in the interface (Mock object ) are invoked in correct order and in specified way. If anything is violated (e.g- if close is called without calling open , open called multiple times ) , it will result in test error. &lt;/span&gt; &lt;/pre&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h3 style=&quot;font-size: 13px;&quot;&gt;&lt;a href=&quot;http://www.blogger.com/post-edit.g?blogID=7053729872062608420&amp;amp;postID=24987965430756719&quot; name=&quot;UsingJMockinUnitTesting-Note%3A&quot;&gt;&lt;/a&gt;Note :&lt;/h3&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif;&quot;&gt;To mock concrete class jmock-cglib extension and cglib jar should             be added to the eclipse project. Testcase should derive from cglib.MockObjectTestCase.&lt;/span&gt; 

&lt;div style=&quot;font-size: 13px;&quot;&gt;&lt;/div&gt;&lt;pre style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Eg:-         &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;Mock mockTaskDetailsClient = mock(TaskDetailsClient.class,&quot;mockTaskDetailsClient&quot;); &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;final TaskDetailsClient taskDetailsClient = (TaskDetailsClient)mockTaskDetailsClient.proxy() ;  &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;ctr with args. mock(TaskDetailsClient.class,&quot;mockTaskDetailsClient&quot;, class[],Object[]); &lt;/span&gt;&lt;/pre&gt;&lt;div style=&quot;font-size: 13px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif; text-align: left;&quot;&gt;There are many tools/ services available now which will help in generating unit test for the existing legacy code base. One such service is&lt;a href=&quot;http://www.unittestfactory.com/&quot; target=&quot;_blank&quot;&gt; www.UnitTestFactory.com&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Times, &#39;Times New Roman&#39;, serif; text-align: left;&quot;&gt; &lt;/span&gt;
&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/24987965430756719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2012/01/introduction-jmock-famous-library-which.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/24987965430756719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/24987965430756719'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2012/01/introduction-jmock-famous-library-which.html' title=''/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-8737690177954532333</id><published>2011-07-12T21:07:00.001-07:00</published><updated>2011-07-12T21:08:13.286-07:00</updated><title type='text'></title><content type='html'>&lt;div&gt;&lt;span   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;The top 7 reasons to love JBoss  AS7:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; color: rgb(0, 0, 0); &quot;&gt;(taken from JBoss AS7 webinar)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; color: rgb(0, 0, 0); &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt;1) Blazing fast start-up time - up  to 10X faster!&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;2) Java EE 6 - leading the pack.  again.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;3) Very lightweight - exceptionally  small footprint and aggressive memory management mean you can run it practically  everywhere.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;4) Modular core - delivers true  application isolation.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;5) Elegant management - simplified  console and APIs.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;6) Domain management - manage  servers as groups.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span   &gt;7) Testable by design - simplified  in-container testing via the Arquillian project speeds development.  &lt;/span&gt;&lt;/div&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span&gt;I hope some body from WAS team is also reading these data :)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/8737690177954532333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2011/07/top-7-reasons-to-love-jboss-as7-taken.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8737690177954532333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8737690177954532333'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2011/07/top-7-reasons-to-love-jboss-as7-taken.html' title=''/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-9162125328592563082</id><published>2011-03-15T10:37:00.000-07:00</published><updated>2011-03-15T10:47:54.615-07:00</updated><title type='text'>Hacking Tool for Dummies - FireSheep</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;You might have already heard about FireSheep - an interesting FireFox extension.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It can be used to intercept unencrypted cookies from websites by using Packet Sniffing.&lt;/div&gt;&lt;div&gt; In plain english - if you are accessing sites like Facebook, Twitter in a public Wifi , a person using FireSheep extension can find out what you are doing and may be even impersonate you as the FireSheep user may get your login credentials.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; It is developed by Eric Butler and currently available for Mac OS X and Windows.&lt;/div&gt;&lt;div&gt;More details can be found here &lt;a href=&quot;http://codebutler.com/firesheep&quot;&gt;http://codebutler.com/firesheep&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/9162125328592563082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2011/03/hacking-tool-for-dummies-firesheep.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/9162125328592563082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/9162125328592563082'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2011/03/hacking-tool-for-dummies-firesheep.html' title='Hacking Tool for Dummies - FireSheep'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-2599308387398171169</id><published>2011-02-01T21:44:00.001-08:00</published><updated>2011-02-01T22:10:28.786-08:00</updated><title type='text'>Another tool from Google - AppInventor, I&#39;m loving it.</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Hope you guys heard about Google App Inventor.&lt;div&gt;It is tool for developing Android applications , all you need is browser (and internet connection).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To use the tool you need to register with Google.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are mainly three parts to the App Inventor&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. &lt;b&gt;Designer Part&lt;/b&gt; - This is the main application which will open in the browser window.&lt;/div&gt;&lt;div&gt;Here we can drag and drop different components (e.g.- buttons, images, media etc) to design our own application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. &lt;b&gt;Blocks Editor&lt;/b&gt; - This window can be opened from the Designer window. Here we will be mentioning what are the expected functionality of the different components we added in the designer part.  For example - what should happen when the button is clicked.&lt;/div&gt;&lt;div&gt;If the intention is to play a music file when the button is clicked , then we will be dragging and connecting different blocks like button.onClick mediaFile.play &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. &lt;b&gt;Simulator&lt;/b&gt; - what fun it is if we can not see our world class application in action. Simulator is for that. It can be opened through the blocks editor.  What ever changes we are making in the Designer and Blocks editor will be visible in the simulator.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are couple of tutorials in Google to get started with App Inventor.&lt;/div&gt;&lt;div&gt;I had developed a paint program with out writing a single line of code :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But do not get all excited, AppInventor is still in Beta state. There are many functionalities missing. I was really surprised at the long list of missing things. For example - there is no way to add menu items. How can Google miss out such basic features? (even if it is Beta version).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Important Links &lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://appinventor.googlelabs.com/learn/whatis/index.html&quot;&gt;http://appinventor.googlelabs.com/learn/whatis/index.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://appinventor.googlelabs.com/learn/setup/index.html&quot;&gt;http://appinventor.googlelabs.com/learn/setup/index.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://appinventor.googlelabs.com/learn/tutorials/index.html&quot;&gt;http://appinventor.googlelabs.com/learn/tutorials/index.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that instead of using simulator you can also connect your mobile. But I would recommend to use the simulator and once the basic application is ready install it in the phone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The different steps to install application (apk file) in the phone are &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. From the AppInventor, package the application in the computer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. In phone go to settings and enable installation from &lt;b&gt;unknown source.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Connect the phone to computer as USB Mass storage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. Copy the apk file to phone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5. Phone should have a file manager application. If you are not having one, download a file manager application from Android market (for example - Astro).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6.  After this click on the copied apk file in the phone and select the option &lt;b&gt;Open with TaskManager, &lt;/b&gt; this will install the application.&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/2599308387398171169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2011/02/another-tool-from-google-appinventor-im.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2599308387398171169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/2599308387398171169'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2011/02/another-tool-from-google-appinventor-im.html' title='Another tool from Google - AppInventor, I&#39;m loving it.'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-6824470732618413589</id><published>2009-12-20T23:46:00.000-08:00</published><updated>2009-12-21T00:12:22.230-08:00</updated><title type='text'>Real Time Web Application Development Challenges and HTML 5</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;In the traditional web architecture the reliable message flow between the server and the browser is a problem , as the server is not only forwarding the message but also most of the other work like translating the messages. This might result in Server becoming non scalable.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There were many attempts to simulate two way communication initiated by the server towards the client. One of the most notable approach is Comet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Comet uses a technique referred as hanging GET or pending POST. In this the completion of an HTTP response is delayed until the server has something to send. This is generally implemented in JavaScript.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But there are some problems with this approach -&lt;/div&gt;&lt;div&gt;-Resource consumption is high as many connections are opened and closed.&lt;/div&gt;&lt;div&gt;-Setup and teardown of connections will consume more resources if secure connections are used.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HTML 5 may be the answer to these issues.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This provides many enhancements to the browsers and will redefine how internet communicates. The communication section of HTML 5 specification defines WebSockets and ServerSentEvents. These features will enable two way communication a reality for browsers. This will change the way in which real time  web applications are created.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The main features are &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Web Sockets&lt;/b&gt; : Usually most of what is transmitted in web will be protocol information and padding. Web Sockets establishes a true two-way connection between server and the browser. This is essentially a pure TCP socket through which any application data can flow in either direction. This is more efficient than traditional HTTP requests as the non payload information is not required.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Server sent Events&lt;/b&gt; : Two-way real time communication pattern common in web today is not taken into account in traditional HTTP. Through Sever Sent Events, a server can initiate the transmission of data. This is a standard describing how servers can initiate transmission of data to client once the initial connection with client is established.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Cross Document Messaging&lt;/b&gt; : This provides a system in which different documents are  allowed to securely communicate across different origins. This will allow an application to communicate with server over many different channels.&lt;/li&gt;&lt;li&gt;C&lt;b&gt;ross Origin resource Sharing&lt;/b&gt; : This will allow browsers to do site aggregation. Result may be better performance.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/6824470732618413589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/real-time-web-application-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6824470732618413589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/6824470732618413589'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/real-time-web-application-development.html' title='Real Time Web Application Development Challenges and HTML 5'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-7253337234310866816</id><published>2009-12-14T00:31:00.000-08:00</published><updated>2009-12-14T01:26:07.792-08:00</updated><title type='text'>Java EE 6 Features</title><content type='html'>Lets look at the new sexy Java EE6 features&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000099;&quot;&gt;EJB Lite&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;EJB Lite is coming from the fact that- most of the ejb applications simply use features like persistence management, declarative transaction, stateless session beans etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;EJB Lite will allow simple , lightweight implementations. This will also reduce the learning curve required (It might be just learning a handful of annotations).  Very soon there may be Java EE application servers which implement EJB Lite instead of the complete Ejb3.1 spec.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of the features in the EJB Lite are &lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Stateless, State full,  Singleton session beans&lt;/li&gt;&lt;li&gt;Interceptors &lt;/li&gt;&lt;li&gt;Declarative Security&lt;/li&gt;&lt;li&gt;Declarative Transactions etc&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;EJB Lite does not have the following features&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Message driven beans&lt;/li&gt;&lt;li&gt;Remote interfaces&lt;/li&gt;&lt;li&gt;Asynchronous invocation&lt;/li&gt;&lt;li&gt; Corba interoperability etc.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Read about Java EE6 profiles here &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Times New Roman&#39;; font-size: medium; &quot;&gt;&lt;a href=&quot;http://weblogs.java.net/blog/robc/archive/2008/02/profiles_in_the_1.html.&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000000;&quot;&gt;http://weblogs.java.net/blog/robc/archive/2008/02/profiles_in_the_1.html. &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;Times New Roman&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, serif; font-size: 16px; &quot;&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#000099;&quot;&gt;Managed Beans 1.0&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;This is simply a POJO which is treated as a managed component by the container.&lt;/div&gt;&lt;div&gt;It can make use of some of the predefined Java EE features like lifecycle management and injection.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;@Resource&lt;/li&gt;&lt;li&gt;@PostConstruct&lt;/li&gt;&lt;li&gt;@PreDestroy etc&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More Later...&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/7253337234310866816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/java-ee-6-features.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/7253337234310866816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/7253337234310866816'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/java-ee-6-features.html' title='Java EE 6 Features'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-8144073991742004809</id><published>2009-12-06T21:07:00.000-08:00</published><updated>2009-12-06T22:08:05.949-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jdk 7"/><category scheme="http://www.blogger.com/atom/ns#" term="New features"/><category scheme="http://www.blogger.com/atom/ns#" term="Project COIN"/><title type='text'>Project COIN</title><content type='html'>Project coin is aiming to find out the small language changes that should be added to the JDK.&lt;div&gt;Around 70 proposals were submitted in the period of Feb-27, 2009 to Mar-30, 2009 and discussed in coin developer forum.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Out of these proposals 5 or so are selected for including in Jdk7.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of the accepted proposals are -&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. &lt;b&gt;Using Strings in switch&lt;/b&gt;&lt;/div&gt;&lt;div&gt; - Ability to switch on string values&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. &lt;b&gt;Automatic resource management&lt;/b&gt;&lt;/div&gt;&lt;div&gt; - Having &lt;b&gt;try&lt;/b&gt; like statement to declare one or more Resources. Scope of the resource is limited by that of the statement. When the statement completes normally or abruptly , all the resources are closed automatically.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. &lt;b&gt;Improved Type Inference for Generic Instance Creation&lt;/b&gt;&lt;/div&gt;&lt;div&gt; - When the full parameterized type is obvious from the context, then the parameterized type of the constructor could be replaced with empty set of type parameters.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. &lt;b&gt;Simplified Varargs method invocation.&lt;/b&gt; &lt;/div&gt;&lt;div&gt; - Reduces the total number of warnings reported to and suppressed by programmers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5. &lt;b&gt;Language support for JSR 292&lt;/b&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some of the proposals which are considered but not accepted are &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. &lt;a href=&quot;http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000003.html&quot;&gt;Improved exception handling for Java&lt;/a&gt;&lt;/div&gt;&lt;div&gt;2. &lt;a href=&quot;http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000047.html&quot;&gt;Elvis and other null safe operators&lt;/a&gt;&lt;/div&gt;&lt;div&gt;3. &lt;a href=&quot;http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000869.html&quot;&gt;Large Arrays&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mailing List : &lt;a href=&quot;http://mail.openjdk.java.net/mailman/listinfo/coin-dev&quot;&gt;http://mail.openjdk.java.net/mailman/listinfo/coin-dev&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Blogs : &lt;a href=&quot;http://blogs.sun.com/main/tags/projectcoin&quot;&gt;http://blogs.sun.com/main/tags/projectcoin&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Wiki : &lt;span class=&quot;Apple-style-span&quot;   style=&quot;  line-height: 15px; font-family:&#39;Bitstream Vera Sans&#39;, &#39;Luxi Sans&#39;, Verdana, Arial, Helvetica;font-size:13px;&quot;&gt;&lt;a href=&quot;http://wikis.sun.com/display/ProjectCoin/Home&quot;&gt;http://wikis.sun.com/display/ProjectCoin/Home&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;font-family:&#39;Bitstream Vera Sans&#39;, &#39;Luxi Sans&#39;, Verdana, Arial, Helvetica;font-size:100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 15px;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;font-family:&#39;Bitstream Vera Sans&#39;, &#39;Luxi Sans&#39;, Verdana, Arial, Helvetica;font-size:100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 15px;font-size:13px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  line-height: normal; font-family:Georgia, serif;font-size:16px;&quot;&gt;This project is sponsored by &lt;a href=&quot;http://openjdk.java.net/groups/compiler/&quot;&gt;The Compiler Group&lt;/a&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;font-family:&#39;Bitstream Vera Sans&#39;, &#39;Luxi Sans&#39;, Verdana, Arial, Helvetica;font-size:100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 15px;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;font-family:&#39;Bitstream Vera Sans&#39;, &#39;Luxi Sans&#39;, Verdana, Arial, Helvetica;font-size:100%;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; line-height: 15px;font-size:13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/8144073991742004809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/project-coin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8144073991742004809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/8144073991742004809'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/project-coin.html' title='Project COIN'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7053729872062608420.post-5719971473623502776</id><published>2009-12-02T01:22:00.000-08:00</published><updated>2009-12-02T01:51:33.195-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="Project Lombok"/><title type='text'>Project Lombok</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;How much boilerplate code we write in our Java classes? Most of the time it will be minimum 100 lines. Even if we have a simple pojo - we have to write all the getters and setters, toString, equals, hashcode method etc. &lt;div&gt;Finally with all these code it will be easy to lose any bug which is hidden in the code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Project Lombok &lt;/b&gt;is the answer to this problem (if you think this is a problem :) )&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Instead of writing all these boilerplate code we can just give the annotation &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3366FF;&quot;&gt;@Data.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3366FF;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;Lombok is completely integrated with Eclipse , so all these generated methods will be visible in the outline view.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3366FF;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;To make Lombok work with &lt;b&gt;Javac&lt;/b&gt;, just add lombok.jar to the classpath.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;Other annotation provided by Lombok is &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;@Getter&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;@Setter.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;Another interesting annotation is &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;@Cleanup &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;- this will help by automatically generate &lt;b&gt;try &lt;/b&gt;&lt;b&gt;finally &lt;/b&gt;blocks to call&lt;b&gt; close&lt;/b&gt; on resource objects.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;The full list can be found here - &lt;a href=&quot;http://projectlombok.org/features/index.html&quot;&gt;Project Lombok Overview&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3333FF;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#3366FF;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#330033;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); font-family: &#39;Bitstream Vera Sans&#39;, &#39;Luxi Sans&#39;, Verdana, Arial, Helvetica; font-size: 13px; line-height: 15px; &quot;&gt;&lt;h1 style=&quot;font-size: 12.5pt; font-weight: bold; padding-top: 0pt; padding-right: 0pt; padding-bottom: 0pt; padding-left: 0pt; margin-top: 0ex; margin-right: 0.5ex; margin-bottom: 1ex; margin-left: 0pt; &quot;&gt;Project Jigsaw&lt;/h1&gt;&lt;div&gt;Project Jigsaw is focused on the goal of modularizing JDK. Such a thing will allow applications to be installed with only the required components of JDK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the upcoming Jdk7 SUN&#39;s primary goal is to modularize jdk.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://crashingnhanging.blogspot.com/feeds/5719971473623502776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/project-lombok.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5719971473623502776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7053729872062608420/posts/default/5719971473623502776'/><link rel='alternate' type='text/html' href='http://crashingnhanging.blogspot.com/2009/12/project-lombok.html' title='Project Lombok'/><author><name>Ratheesh Ravindran</name><uri>http://www.blogger.com/profile/03722066653728087183</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYAGE26xARH_AoCpMmYkjmWAcfZ6GyPDhTXxrNVDiceNhaf31GiPKXg2o6x3Z97y-WUYL7cPBRmO5aALwJw910clZEbr-kIpgBvDDksnZC1_U-FhH8G2vP7Hpim3yQ_5s/s220/IMG_0414_1-1.JPG'/></author><thr:total>0</thr:total></entry></feed>