<?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: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-6078948329797457697</id><updated>2012-01-27T21:32:59.163-08:00</updated><category term='data matrix'/><category term='C Programming'/><category term='J2ME'/><category term='rajasthan cuisine food vinod dua ndtv india udaipur ranavat jodhpur jaipur'/><category term='two dimensional barcode'/><category term='crisis camp haiti programming hackathon silicon valley'/><category term='ECC encrypt-decrypt Elliptic Curve Cryptography ECIES BouncyCastle El Gamal Encryption'/><category term='cc command not found'/><category term='java swing date picker calendar'/><category term='javascript object notation'/><category term='bollywood hindi radio android htc'/><category term='SIP session initiation protocol Android Mjsip VOIP voice over ip'/><category term='android 2.1 update droid eris verizone wireless'/><category term='mobile application'/><category term='Solaris 10'/><category term='disabled form html check box checkbox browser web development'/><category term='JSON'/><category term='Sun Studio'/><category term='Java Swing Form Data Entry JGoodies MigLayout Android FLex SpringLayout SpringUtilities'/><category term='2D Barcode'/><category term='compiler'/><title type='text'>tecknolojia</title><subtitle type='html'>The blog covers topics on technology such as Internet, Web 2.0, Mobile Computing and Security. May deviate to some diverse topics such as music and politics. Please feel free to use the code in the blog in any way you wish. However, please acknowledge the third party libraries being used and myself :-). Finally, use the code here at your own risk.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-7148415996363094696</id><published>2010-05-23T00:12:00.000-07:00</published><updated>2010-05-23T00:22:04.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android 2.1 update droid eris verizone wireless'/><title type='text'>Android 2.1 Update on Verizone Wireless Droid Eris</title><content type='html'>Recently received an OTA (Over the air) update to Android 2.1 on my Droid Eris device. It went fairly well. I noticed complaints on the internet about the contacts being deleted but for me they seem to be restored. It could be that I have already backed up my contacts on My Verizon and a Verizon service restored these contacts from there. Anyway, here are at some very useful features and tips to exploit the new features of the phone:&lt;br /&gt;&lt;br /&gt;1. Check out the Google Voice Based GPS Navigation.&lt;br /&gt;2. Seven home screens. Add some HTC Widgets or Android Widgets such as Facebook, Twitter, etc to individual home screens. These widgets give you a quick preview of any latest updates.&lt;br /&gt;3. Pinching inwards shows a preview of all seven home screens.&lt;br /&gt;4. Set up free Yahoo email finally from &lt;a href="http://phandroid.com/2009/11/09/motorola-droid-yahoo-email/"&gt;here&lt;/a&gt;. Note this requires 3G on.&lt;br /&gt;5. Now, on other home screens, you can also add the Mail widget. The most impressive part of this option is it lets you choose which account to preview within the widget. Hence, I have my office email preview on one home screen and personal Yahoo email preview on another home screen.&lt;br /&gt;&lt;br /&gt;However, there is one annoying feature in the phone which seems to occur as a result of adhering to some security policies of Microsoft Exchange. You will need to set up an unlock password on your phone and re-enter it each time, you wish to wake the phone up from its idle state.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-7148415996363094696?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/7148415996363094696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=7148415996363094696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7148415996363094696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7148415996363094696'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2010/05/android-21-update-on-verizone-wireless.html' title='Android 2.1 Update on Verizone Wireless Droid Eris'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-7137946607761597851</id><published>2010-05-10T23:10:00.001-07:00</published><updated>2010-05-10T23:56:20.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rajasthan cuisine food vinod dua ndtv india udaipur ranavat jodhpur jaipur'/><title type='text'>Cuisine of Rajasthan</title><content type='html'>My Ranavat lineage originates from the western state of &lt;a href="http://en.wikipedia.org/wiki/Rajasthan"&gt;Rajasthan&lt;/a&gt; in India. It is a state of beautiful forts, amazing sand dunes and has a rich history of battles fought by Rajputs with the invaders of medieval times who came from modern day Afghanistan, et al. Of course, one of the most fascinating aspect of this state is its food and is something that never fails to mesmerize me. Here I would like to share three videos on the Rajasthani cuisine from a TV series that comes on an Hindi News Channel in India called NDTV India. Now what's special about this TV series, is that the anchor, &lt;a href="http://en.wikipedia.org/wiki/Vinod_Dua"&gt;Vinod Dua&lt;/a&gt;, visits small towns and cities across the country and visits the eateries that are popular among the locals and do not necessarily find a place on an average tourist's itinerary. But after watching the episodes, I am sure you will realize that your trip to Rajasthan would be incomplete without visiting one of these eateries in cities such as Jodhpur, Jaipur, Udaipur and Sreenathji:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ndtv.com/news/videos/video_player.php?id=1189841"&gt;Video 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ndtv.com/news/videos/video_player.php?id=1196169"&gt;Video 2&lt;/a&gt;&lt;br /&gt;&lt;a href=" http://www.ndtv.com/news/videos/video_player.php?id=1205018"&gt;Video 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ndtv.com/news/videos/video_player.php?id=1213256"&gt;Video 4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-7137946607761597851?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/7137946607761597851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=7137946607761597851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7137946607761597851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7137946607761597851'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2010/05/rajasthan.html' title='Cuisine of Rajasthan'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-4028441335974710705</id><published>2010-04-19T21:12:00.001-07:00</published><updated>2010-04-19T21:17:02.252-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bollywood hindi radio android htc'/><title type='text'>Bollywood radio on Android</title><content type='html'>I possess a HTC Droid Eris smartphone (Verizon Wireless, Android 1.5) and recently found a nice way to listen to online Hindi/Bollywood radio stations. Here are the steps:&lt;br /&gt;&lt;br /&gt;1. Download &lt;a href="http://www.streamfurious.com/"&gt;StreamFurious &lt;/a&gt; application from Android Marketplace.&lt;br /&gt;2. I usually listen to online radio stations that are run on &lt;a href="http://www.shoutcast.com"&gt;Shoutcast&lt;/a&gt;&lt;br /&gt;3. Go to Shoutcast in your browser, search for the radio station and click "Tune In"&lt;br /&gt;&lt;br /&gt;One of my favorites is Radio Teentaal  for a mix of popular Hindi Film and pop songs and .977 FM for Latest English Hits&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-4028441335974710705?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/4028441335974710705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=4028441335974710705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/4028441335974710705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/4028441335974710705'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2010/04/bollywood-radio-on-android.html' title='Bollywood radio on Android'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-5641963401370677371</id><published>2010-04-12T22:58:00.001-07:00</published><updated>2010-04-12T23:01:51.414-07:00</updated><title type='text'>Satyam scandal inspires spamsters</title><content type='html'>The recent &lt;a href="http://www.businessweek.com/globalbiz/content/jan2009/gb2009017_807784.htm"&gt;Satyam fiasco&lt;/a&gt; in India has inspired creative spamsters to impersonate a family member of the Ramalingam family and send spam messages. Quite creative and I will publish a message that I received here in the hope that my blog does not get blocked :)&lt;br /&gt;&lt;br /&gt;"Namastey,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My name is Radha  Ramalinga,I am the wife of Rama Ramalinga,the younger brother of Byrraju Ramalinga Raju,former chairman,founder and owner of Satyam Computers.&lt;br /&gt;&lt;br /&gt;I do have a proposal for you,which would be of immense financial benefits to you and I.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My husband and his brother are currently in big trouble in India,I need your assistance to help me move some funds from Holland to India  or anywhere where it would at least be of some help to our family.&lt;br /&gt;&lt;br /&gt;I would give you more details of this proposal if you show yourself willing to take on it,I assure you that you would most certainly be compensated but please I would kindly request you to keep this matter confidential.&lt;br /&gt;&lt;br /&gt;I am currently here in the UK where it is a bit safe for me and my kids.&lt;br /&gt;&lt;br /&gt;You can reach me on my personal email id which is dsfsdf@sdfsdf.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yours sincerely,&lt;br /&gt;&lt;br /&gt;R.Ramalinga&lt;br /&gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-5641963401370677371?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/5641963401370677371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=5641963401370677371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/5641963401370677371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/5641963401370677371'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2010/04/satyam-scandal-inspires-spamsters.html' title='Satyam scandal inspires spamsters'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-7016119183947339731</id><published>2010-02-11T23:29:00.000-08:00</published><updated>2010-02-13T16:17:47.491-08:00</updated><title type='text'>Network Infrastructure After a Crisis has occurred</title><content type='html'>Interestingly there is an organization for this purpose too. Check out &lt;a href="http://www.nethope.org/"&gt;NetHope&lt;/a&gt; . They go around establishing network infrastructure to mitigate the dire need for access to information technology to aid in collaboration in relief work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-7016119183947339731?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/7016119183947339731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=7016119183947339731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7016119183947339731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7016119183947339731'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2010/02/network-infrastructure-after-crisis-has.html' title='Network Infrastructure After a Crisis has occurred'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-668974158859959223</id><published>2010-02-02T23:51:00.001-08:00</published><updated>2010-02-03T00:14:59.522-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crisis camp haiti programming hackathon silicon valley'/><title type='text'>Crisis Camp for Haiti Earthquake Victims</title><content type='html'>I recently attended a session organized by &lt;a href="http://crisiscommons.org"&gt;Crisis Commons&lt;/a&gt; at Yahoo Campus in Sunnyvale, CA to build applications that could be used by NGO and other relief organizers in Haiti working to help earthquake victims. My honest intention was to observe the kind of applications that people are building for such purpose and I have to admit I came back quite impressed with the plethora of applications. &lt;br /&gt;&lt;br /&gt;Similar camps were being organized across the country. Conference calls were being held between volunteer project managers at different locations discussing project status, needs and hand-over of projects from the east coast locations to other locations at the end of the day. There was even a deployment environment provided for such applications. There were some stumbling blocks - such as scattered information on wikis, twitter and IRC channels and long searches for projects that needed developers. If you were a Ruby on Rails or an Android programmer or a translator, there were several projects that required urgent programmers. Several applications were being built around using &lt;a href="http://wiki.crisiscommons.org/wiki/OpenStreetMap"&gt;maps to aid in emergency response&lt;/a&gt; and scraping twitter feeds and news articles to increase awareness. Mobile applications were being built as interface to several applications to help people on the field quickly communicate. &lt;br /&gt;&lt;br /&gt;I would like to list the two projects that I believe could go a long way in aiding earthquake victims:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.wehaveweneed.org/"&gt;We Have We Need&lt;/a&gt;: A Craigslist type website to help people post needs and providers responds to those needs. The needs range from demands for crutches to requests to private plane owners to fly in relief supplies to Haiti&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://wiki.crisiscommons.org/wiki/Person_Finder_Mobile_Project"&gt;Person Finder&lt;/a&gt;: A mobile application to report the condition of individual people in Haiti.&lt;br /&gt;&lt;br /&gt;I personally teamed up with few talented programmers who attempted to search twitter for tweets that were demanding help of different kinds in Haiti. The aim was to take a Twitter feed and put it under a generic category of different types of requests for help. We were not close to completing the project but I learnt several things about how Natural Language Processing Libraries such as Word Net could be used to identify the subject and context of the tweet and that of course using the Twitter API is a piece of cake.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For more information, check out the &lt;a href="http://wiki.crisiscommons.org/wiki/Projects"&gt;Crisis Commons Wiki&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-668974158859959223?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/668974158859959223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=668974158859959223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/668974158859959223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/668974158859959223'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2010/02/crisis-camp-for-haiti-earthquake.html' title='Crisis Camp for Haiti Earthquake Victims'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-1083328154303200303</id><published>2009-07-30T23:41:00.000-07:00</published><updated>2009-07-30T23:50:33.461-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cc command not found'/><category scheme='http://www.blogger.com/atom/ns#' term='C Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris 10'/><title type='text'>cc command not found issue on Solaris 10</title><content type='html'>The cc command is used to compile C programs on Solaris 10. After much investigation, this is how I fixed the issue of "cc command not found":&lt;br /&gt;&lt;br /&gt;1. Install Sun Studio 11. Sun Studio is available on the Sun Website&lt;br /&gt;2. Set the path to SUNWspro like this:&lt;br /&gt;&lt;br /&gt;“Export PATH=/opt/SUNWspro/bin${PATH:+:}${PATH}”&lt;br /&gt;&lt;br /&gt;And that's it. The CC command should now work. happy compiling!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-1083328154303200303?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/1083328154303200303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=1083328154303200303' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/1083328154303200303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/1083328154303200303'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2009/07/cc-command-not-found-issue-on-solaris.html' title='cc command not found issue on Solaris 10'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-8922666843289572547</id><published>2009-02-21T13:58:00.000-08:00</published><updated>2009-02-21T14:21:16.994-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data matrix'/><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript object notation'/><category scheme='http://www.blogger.com/atom/ns#' term='two dimensional barcode'/><category scheme='http://www.blogger.com/atom/ns#' term='2D Barcode'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile application'/><title type='text'>Use JSON to transfer information in a Mobile Application or encode information in a 2D Barcodes</title><content type='html'>I was introduced to JSON being used as a very lightweight data interchange format while working on building Web 2.0 applications at work. I realized the immense advantages of JSON while working on a mobile application project dealing with two dimensional project at San Jose State. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So first what is JSON, there are good links out there already: &lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.hiteshagrawal.com/java/json-in-java"&gt;JSON in Java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In short, an XML Doc &lt;doc&gt;&lt;name&gt;Horror Book&lt;name&gt;&lt;author&gt;Smith&lt;/author&gt; can be shown in JSON as: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;  "name": "Horror Book"&lt;br /&gt;  "author":"Smith"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Where we used JSON and Why?&lt;br /&gt;&lt;br /&gt;First, the project required us to exchange information between a client on a mobile phone emulator and a web server. XML is the first obvious choice or just a series of comma separated values, etc. We chose JSON since there were good libraries to place information in a structured manner in JSON and to read it on the other side. No need of using some XML parser and stuff. Space saved for closing tags, etc.&lt;br /&gt;&lt;br /&gt;Second, the application was designed such that receipt of purchase would be stored in a 2D Barcode and sent to the mobile phone emulator. As per the project, in the real world, the user would take the barcode to the retailer as a proof of receipt. There were other security related use of 2D Barcodes as well. Again, 2D barcodes cannot save a lot of information. JSON and its libraries would provide us a very  compact way to store info in the barcode and read it back.&lt;br /&gt;&lt;br /&gt;Today, I also noticed an article discussing other uses of JSON in mobile apps &lt;a href="http://java.sun.com/developer/technicalArticles/javame/json-me/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See &lt;a href="https://meapplicationdevelopers.dev.java.net/mobileajax.html"&gt;here &lt;/a&gt;for using JSON in J2ME&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-8922666843289572547?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/8922666843289572547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=8922666843289572547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/8922666843289572547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/8922666843289572547'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2009/02/use-json-to-transfer-information-in.html' title='Use JSON to transfer information in a Mobile Application or encode information in a 2D Barcodes'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-3220892067094531799</id><published>2008-11-05T23:57:00.000-08:00</published><updated>2008-11-06T00:02:29.958-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disabled form html check box checkbox browser web development'/><title type='text'>Disabled Form Elements in HTML are never submitted</title><content type='html'>Maybe I am too naive. But if a check box in a form is checked but disabled, it will never be submitted by the browser. This is what the W3 spec says "Disabled form controls are not successful" (&lt;a href="http://www.w3.org/TR/html4/interact/forms.html#h-17.12.1"&gt;Reference here&lt;/a&gt;). I am not sure if the Spec is correct in its design choice. But that's what it is.&lt;br /&gt;&lt;br /&gt;A simple workaround to overcome this is to of course to add a hidden variable in the form with the same name as the check box. The hidden variable can contain the value that corresponds to a checked check box.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-3220892067094531799?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/3220892067094531799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=3220892067094531799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/3220892067094531799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/3220892067094531799'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/11/disabled-form-elements-in-html-are.html' title='Disabled Form Elements in HTML are never submitted'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-7457249514131196335</id><published>2008-09-27T15:13:00.000-07:00</published><updated>2008-09-27T15:35:41.849-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Swing Form Data Entry JGoodies MigLayout Android FLex SpringLayout SpringUtilities'/><title type='text'>Creating Forms In Java Swing (Manually)</title><content type='html'>Such a simple topic but sadly google does not throw up good results on how to create a simple form in Java Swing.  This definition is not needed but by form, I mean, a simple data entry utility like one where a user can add a contact to an address book application. This post assumes that you prefer coding out the form manually instead of using an IDE. This is essential when you want more control over the form code. Of course it is more complex and if you have an option always is an IDE like Netbeans, go for it. Manual coding, for example could be useful when coding in an existing application.There are about 3 ways that I researched on but tried just the first one:&lt;br /&gt;&lt;br /&gt;1. Using A SpringLayout and SpringUtilities&lt;br /&gt;&lt;br /&gt;I am not going to explain what a Spring Layout. My aim is just to provide a Java Developer for links to investigate and hopefully to save their time.&lt;br /&gt;&lt;br /&gt;This is what a Spring Layout is: http://java.sun.com/docs/books/tutorial/uiswing/layout/spring.html&lt;br /&gt;&lt;br /&gt;A Very Useful Utility:&lt;br /&gt;&lt;br /&gt;http://java.sun.com/docs/books/tutorial/uiswing/examples/layout/SpringGridProject/src/layout/SpringUtilities.java&lt;br /&gt;&lt;br /&gt;Here is a quick example, of course taken from Sun's javadoc. This creates a simple form with two columns (the left column contains labels such as name and the right column contains a text field to enter data):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//these are your labels in the form&lt;br /&gt;String[] labels = {"Name: ", "Fax: ", "Email: ", "Address: "};&lt;br /&gt;int numPairs = labels.length;&lt;br /&gt;&lt;br /&gt;//Create and populate the panel.&lt;br /&gt;JPanel p = new JPanel(new SpringLayout());&lt;br /&gt;for (int i = 0; i &lt; l =" new" textfield =" new"&gt;&lt;br /&gt;where rows is number of items in the form, cols is the number of columns (here it is two one for label and other for textfield), initX is the initial X position from where you can start the form and initY is the initial Y position from where you can start the form. xPad is the amount of space between each row and ypad is the amount of space between each column.&lt;br /&gt;&lt;br /&gt;There are other complex Layout such as GridBag Layout and GroupLayout which are not good for manual coding.&lt;br /&gt;These layouts are used mainly in code that is auto generated by IDEs&lt;br /&gt;&lt;br /&gt;2. If you have been a web developer like me and like to make use of CSS like styling properties to make UIs (as in Google Android, Flex), then this one is for you: http://www.miglayout.com/&lt;br /&gt;&lt;br /&gt;3. Similarly, there is one called JGoodies Forms which seems to be very popular. http://www.jgoodies.com/freeware/forms/index.html. JGoodies has a wonderful demo where you can manually play around with form elements and view their properties.&lt;br /&gt;&lt;br /&gt;2 and 3 are open source and free to use.&lt;br /&gt;&lt;br /&gt;4. If you wish to use your own form layout utility, you can begin from here: http://www.javaworld.com/javaworld/jw-10-2002/jw-1004-dialog.html?page=2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-7457249514131196335?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/7457249514131196335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=7457249514131196335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7457249514131196335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7457249514131196335'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/09/creating-forms-in-java-swing-manually.html' title='Creating Forms In Java Swing (Manually)'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-1327721912009969093</id><published>2008-09-21T14:05:00.000-07:00</published><updated>2008-09-21T14:14:11.260-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java swing date picker calendar'/><title type='text'>My Tryst with Date/Calendar Pickers for Java Swing</title><content type='html'>For one of my recent projects, I had to work on Java Swing and check out some date/calendar pickers for Java Swing. My expectations were not stringnet. I could use any Date Picker as long it was free and open source :). Customization was not important either. So I narrowed down on the following three simple Date Picker which are available as Swing components:&lt;br /&gt;&lt;br /&gt;1. JCalendar: https://jcalendar.dev.java.net/ - Seems to have a lot of options to customize&lt;br /&gt;2. JxDatePicker - http://wiki.java.net/bin/view/Javadesktop/SwingXCalendar. It is part of a much larger Swing component Library called SwingX.&lt;br /&gt;3. Finally Settled on Microba Date Picker - http://microba.sourceforge.net/&lt;br /&gt;&lt;br /&gt;There are many more options. The free ones are fairly useful and each of them have many customization options such as timezone, setting the date at instantiation time, look and feel, number of years a user is allowed to navigate to, etc that must be looked into and exploited&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-1327721912009969093?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/1327721912009969093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=1327721912009969093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/1327721912009969093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/1327721912009969093'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/09/my-tryst-with-datecalendar-pickers-for.html' title='My Tryst with Date/Calendar Pickers for Java Swing'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-4164329001539811376</id><published>2008-04-30T13:50:00.001-07:00</published><updated>2008-04-30T13:51:31.288-07:00</updated><title type='text'>HSC releases the SIP UA Port for Android alongwith a non-working RTP Impl</title><content type='html'>Check out the &lt;a href="http://www.hsc.com/resourceCenter/whitepapers.aspx"&gt;link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-4164329001539811376?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/4164329001539811376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=4164329001539811376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/4164329001539811376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/4164329001539811376'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/04/hsc-releases-sip-ua-port-for-android.html' title='HSC releases the SIP UA Port for Android alongwith a non-working RTP Impl'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-6057588448322526999</id><published>2008-04-25T16:45:00.000-07:00</published><updated>2009-02-21T13:49:40.853-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SIP session initiation protocol Android Mjsip VOIP voice over ip'/><title type='text'>SIP User Agent for Android</title><content type='html'>A legend: when I refer to "mjsip User Agent", I am talking of                           &lt;a href="http://mjsip.org/mjua.html"&gt;MjSip UA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For a class assignment, I decided to build a VOIP client for Android. But it turns out Android does not have any inbuilt support for the session initiation protocol (SIP) and real time protocol (RTP). However, guys at HSC.com have ported the Java based open source SIP stack mjsip (&lt;a href="http://www.mjsip.org"&gt;http://www.mjsip.org&lt;/a&gt;) and have discussed it &lt;a href="http://blog.roychowdhury.org/2008/03/10/we-have-sip-working-on-android/"&gt;here&lt;/a&gt;. They have even shown a screencast in which they show up a client on Android and call a Xlite soft phone. The source code of the stack is also available on the same site. However, they have not released the SIP User Agent yet and this is what I am going to do here (I would suggest you track their site for a more concrete and practical implementation later).&lt;br /&gt;&lt;br /&gt;Note that the Android user agent can only make a call to another non-Android SIP Client. A SIP call establishment is done and no voice converstion is possible since Android emulator does not allow coice capture yet. I will try to stream a media file later over the same call. My next step would be to stream a media file using RTP from the Android client to the non-android SIP client. (The mjsip User Agent also has RTP implementation)&lt;br /&gt;&lt;br /&gt;However, the code that I have has been made over a night long session.  Not technically challenging but required some patience. And so, I have mixed up all the classes of the standard mjsip User agent at mjsip.org and the android port of the stack at hsc.com. I had to replace all System.out statements with the Android logging at info level. There is no GUI yet for the user agent that I have developed.  When the application starts up it initates a call and you can hear a ring on the non-Android Client. You will have to step through the code to understand what I have done and to be able to use it in your application. Also, the constructors for the SIP Stack, SIP Provider, etc take a file name as a string, I added a new constructor in some classes to take an InputStream.  Its not a neat implementation but should help until HSC.com releases a nicer client and if you have been eager to do some VOIP based or to be more general SIP-based applications. So this is how to run it:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the binaries for &lt;a href="http://mjsip.org/mjua.html"&gt;MjSip UA&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Download the project that I made from &lt;a href="http://www.4shared.com/file/88840970/e8b35e42/VOIPOnAndroid1.html"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Copy the file /Non-AndroidClient/non-android.cfg into the /lib folder of the MjSip UA&lt;/li&gt;&lt;li&gt;In non-android.cfg do this:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;The parameter from_url="Bob" &lt;sip:bob@169.254.25.129&gt;. After the '@ ' sign put the IP address of your local machine.&lt;/li&gt;&lt;li&gt;Let "realm" be also equal to the IP address of the same machine&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;To start up the mjSip User Agent, co to your command prompt and enter the root of the mjsip files you just downloaded and type in "uaw -f config\non-android.cfg"&lt;/li&gt;&lt;li&gt;Now lets see what to with Android. Somehow try to import the files stored in /AndroidUA into an Android Project in Eclipse IDE (IDE must come with the Android extension and SDK) and include/copy the Activity class that I have created.&lt;/li&gt;&lt;li&gt;In the android project, open to /res/raw/a.txt and edit it as explained:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Change the "call_to" parameter to be: call_to= sip:&lt;ip&gt;:5080&lt;br /&gt; where the "IP addr" is the IP address in 4. This file is now actually added as a resource/asset to the application and will be opened by the reference to the Activity instance like this:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;this.getResources().openRawResource(R.raw.a) which returns an InputStream and hence, I had to change many methods/constructors to take an inputstream instead of a string file name.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;li&gt;Thats it. You are done. Start up the Android client and voila...you shall here a ring on the non-Android client&lt;/li&gt;&lt;/ol&gt;Though HSC.com has shown a screencast on their blog, if you want me to do the same, please drop a line and I can try to  make one. Questions/comments are most welcome. And thanks to people at hsc.com and mjsip.org. Please feel free the use the code the way you want and spare me if there is any problemo :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-6057588448322526999?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/6057588448322526999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=6057588448322526999' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/6057588448322526999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/6057588448322526999'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/04/sip-user-agent-for-android.html' title='SIP User Agent for Android'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-4896927198893431854</id><published>2008-03-27T22:22:00.000-07:00</published><updated>2008-03-27T22:36:22.678-07:00</updated><title type='text'>InvalidJadException in Netbeans Mobility Pack</title><content type='html'>If one comes across the following error in Netbeans 5.5 Mobility Pack with Sun Wireless Toolkit 2.5, then a possible reason could be that you copied the Midlet from another project and placed it into the mobile project where this error is occuring.&lt;br /&gt;&lt;br /&gt;com.sun.kvem.midletsuite.InvalidJadException: Reason = 22&lt;br /&gt;The manifest or the application descriptor MUST contain the attribute: MIDlet-1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is how I fixed the problem:&lt;br /&gt;&lt;br /&gt;In your problematic Netbeans Mobility Project go to /nbproject/project.properties&lt;br /&gt;Search for the property "manifest.midlets". In my case, this property had no value and so I had to add one like this&lt;br /&gt;&lt;br /&gt;manifest.midlets=MIDlet-1: &lt;midlet&gt;, , &lt;class&gt;\n&lt;br /&gt;&lt;br /&gt;Put a new line feed "\n" if using Notepad in Windows. and include the space between the two commas above.&lt;br /&gt;&lt;br /&gt;So for example:&lt;br /&gt;&lt;br /&gt;manifest.midlets=MIDlet-1: HelloMidlet, , com.midlet.HelloMidlet&lt;br /&gt;&lt;br /&gt;If there are other reasons/solutions to this above problems, please drop a line&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-4896927198893431854?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/4896927198893431854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=4896927198893431854' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/4896927198893431854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/4896927198893431854'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/03/invalidjadexception-in-netbeans.html' title='InvalidJadException in Netbeans Mobility Pack'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-7895097001429952615</id><published>2008-03-27T22:14:00.000-07:00</published><updated>2008-03-27T22:21:40.840-07:00</updated><title type='text'>Amazon EC2 and S3 Simplified</title><content type='html'>Amazon S3 is known as Simple Storage Services. It lets web sites store images, videos, and other heavy content on an Amazon Storage Server. As per the video below which gives more simplified information on this service, when you use twitter, the image icons are pulled from Amazon Storage services. Now, what is Elastic Computing Cloud (EC2).....it is a service that allows developers and startups, etc to build and provide their applications over a highly scalable server. The scalability increases with increase in number of requests. So basically S3 rents storage space and EC2 rents processing power. A set of services that can even let individual developers launch their applications at a cheap cost and high availability. Please view the video for more simplified description on these services and head on to Amazon for detailed information or to use it :)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hkl24cYc09g&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/hkl24cYc09g&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-7895097001429952615?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/7895097001429952615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=7895097001429952615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7895097001429952615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7895097001429952615'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/03/amazon-ec2-and-s3-simplified.html' title='Amazon EC2 and S3 Simplified'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-6747345617547994207</id><published>2008-03-08T23:10:00.000-08:00</published><updated>2008-03-08T23:24:35.695-08:00</updated><title type='text'>J2ME Wireless Toolkit creates temporary folder for its emulators</title><content type='html'>So you are using the &lt;a href="http://developers.sun.com/mobility/apis/articles/fileconnection/"&gt;FileConnection Optional Package&lt;/a&gt; in J2ME and you are wondering why the hell you can't read the files, you created. Well, &lt;a href="http://forum.java.sun.com/thread.jspa?threadID=5250026"&gt;this post&lt;/a&gt; helped me. It turns out, the first time you run your Wireless Toolkit Emulator, say with the DefaultColorSkin, WTK creates a in.use file in the $WTKHomeDir\emulator\appdb\DefaultColorPhone directory. Now, in my case, after closing the emulator, this file did not get deleted. Hence, the next time, I started the emulator, I could not see the files are saw the first time. This is because, the original DefaultColorPhone folder, is now locked by the presence of the in.use file. Hence, WTK creates a temporary folder like temp.DefaultCOlorPhone44 to run the midlet instead. Now you must either create your files in the fileSystem folder of this folder or delete the in.use file in the original, so that the emulator uses the original DefaultColorPhone folder and you can now see the files/folders created when you first ran the midlet&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-6747345617547994207?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/6747345617547994207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=6747345617547994207' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/6747345617547994207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/6747345617547994207'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/03/j2me-wireless-toolkit-creates-temporary.html' title='J2ME Wireless Toolkit creates temporary folder for its emulators'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-7162878896747574199</id><published>2008-02-13T23:49:00.000-08:00</published><updated>2008-02-13T23:55:52.344-08:00</updated><title type='text'>Avoiding DataLengthException in Bouncy Castle</title><content type='html'>This exception occurs usually when the output buffer is too small to accomodate the result of an encryption/decryption/has computation, etc. A (possible) way to avoid it is like this:&lt;br /&gt;&lt;br /&gt;PaddedBufferedBlockCipher padBufBlockCipher = new PaddedBufferedBlockCipher(new AESEngine());&lt;br /&gt; byte[] key = ......&lt;br /&gt; KeyParameter keyParam = new KeyParameter(key);&lt;br /&gt; padBufBlockCipher.init(true, keyParam);&lt;br /&gt;&lt;br /&gt;String l_message = "Himanshu";&lt;br /&gt;byte[]  out = new byte[padBufBlockCipher.getOutputSize(l_message.getBytes().length)];&lt;br /&gt;&lt;br /&gt;Now the output buffer will be set to a minimum size that can accomodate a block generated while encrypting a block of length l_message.getBytes().length&lt;br /&gt;&lt;br /&gt;Another method for reference is  BufferedBlockCipher.getUpdateOutputSize(). Refer javadoc for Bouncy Castle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-7162878896747574199?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/7162878896747574199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=7162878896747574199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7162878896747574199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/7162878896747574199'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/02/avoiding-datalengthexception-in-bouncy.html' title='Avoiding DataLengthException in Bouncy Castle'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-3652328965173886154</id><published>2008-02-07T23:26:00.000-08:00</published><updated>2008-02-10T00:58:12.678-08:00</updated><title type='text'>Converting Time Object of Bouncy Castle into a Date Object</title><content type='html'>Platforms: J2ME CLDC 1.1 MIDP 2.1&lt;br /&gt;BouncyCastle LightweightCryptoAPI for J2ME (www.bouncycastle.org)&lt;br /&gt;&lt;br /&gt;The code fragment here is to convert an instance of org.bouncycastle.asn1.x509.Time into a J2ME java.util.Date instance that contains the current time according to the timezone and time specified as per UTC. This code can be used for example, to get a Date instance of  TBSCertificateStructure.getStartDate() or getEndDate(). The Date objects can than be used to check if the certificate has not expired.&lt;br /&gt;&lt;br /&gt;One requirement would be to get the current timezone of the user somehow. Right now, I have hardcoded it as "-08:30" for PST. For an Indian timezone, it must be "+05:30" and so on.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;import java.util.Calendar;&lt;br /&gt;import java.util.Date;&lt;br /&gt;import java.util.TimeZone;&lt;br /&gt;import org.bouncycastle.asn1.x509.Time;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;*&lt;br /&gt;* @author Himanshu Ranavat&lt;br /&gt;*/&lt;br /&gt;public class BouncyCastleDateUtil {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /** Creates a new instance of BouncyCastleDateUtil */&lt;br /&gt;  public BouncyCastleDateUtil() {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public Date convertTime2Date(Time time) {&lt;br /&gt;&lt;br /&gt;  //get string representation of Time Object. will be usually as per GMT+00:00&lt;br /&gt;  String date = time.getTime();&lt;br /&gt;&lt;br /&gt;  //eg: time = 2008 0207 2300 00 GMT + 00:00&lt;br /&gt;  int year = getIntValueForString(date.substring(0, 4)) ;&lt;br /&gt;&lt;br /&gt;  int month = getIntValueForString(date.substring(4,6));&lt;br /&gt;&lt;br /&gt;  int day = getIntValueForString(date.substring(6,8));&lt;br /&gt;&lt;br /&gt;  int hour = getIntValueForString(date.substring(8,10));&lt;br /&gt;&lt;br /&gt;  int minutes = getIntValueForString(date.substring(10,12));&lt;br /&gt;&lt;br /&gt;  int seconds = getIntValueForString(date.substring(12,14));&lt;br /&gt;&lt;br /&gt;  String meanTime = date.substring(14,17);&lt;br /&gt;&lt;br /&gt;  //check if mean time is UTC or GMT is supported&lt;br /&gt;  meanTime = getActualMeanTime(meanTime);&lt;br /&gt;&lt;br /&gt;  String timeZoneDetails = date.substring(17);&lt;br /&gt;  long timeZoneHr = getLongValueForString(timeZoneDetails.substring(1,3)) * 60 * 60 * 1000;&lt;br /&gt;  long timeZoneMin = getLongValueForString(timeZoneDetails.substring(4,6)) * 60 * 1000;&lt;br /&gt;   //get current time zone offset in milliseconds as +ve or -ve&lt;br /&gt;  long timeZoneOffset = 0;&lt;br /&gt;&lt;br /&gt;  if ( timeZoneDetails.charAt(0) == '-' ) {   //adjust time as per GMT&lt;br /&gt;      timeZoneOffset = timeZoneHr + timeZoneMin;&lt;br /&gt;  } else {&lt;br /&gt;      timeZoneOffset = -(timeZoneHr + timeZoneMin);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  //set the calendar object with the parameters passed in from Time object&lt;br /&gt;  Calendar cal = Calendar.getInstance();&lt;br /&gt;&lt;br /&gt;  cal.setTimeZone(TimeZone.getTimeZone(meanTime));&lt;br /&gt;&lt;br /&gt;  cal.set(Calendar.YEAR, year);&lt;br /&gt;&lt;br /&gt;  //reduce month by 1 since 0 indicates January&lt;br /&gt;  cal.set(Calendar.MONTH, month - 1);&lt;br /&gt;&lt;br /&gt;  cal.set(Calendar.DAY_OF_MONTH, day);&lt;br /&gt;&lt;br /&gt;  cal.set(Calendar.HOUR_OF_DAY, hour);&lt;br /&gt;&lt;br /&gt;  cal.set(Calendar.MINUTE, minutes);&lt;br /&gt;&lt;br /&gt;  cal.set(Calendar.SECOND, seconds);&lt;br /&gt;&lt;br /&gt;  //date in Calendar instance is as per GMT or UTC. we need to add the time zone offset&lt;br /&gt;  //obtained from the Time object&lt;br /&gt;  return new Date(cal.getTime().getTime() + timeZoneOffset);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;  private int getIntValueForString (String p_value){&lt;br /&gt;  return Integer.valueOf(p_value).intValue();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private long getLongValueForString (String p_value){&lt;br /&gt;  return Integer.valueOf(p_value).longValue();&lt;br /&gt;  } &lt;br /&gt;&lt;br /&gt;  private String getActualMeanTime(String p_meanTime){&lt;br /&gt;      String[] zones = TimeZone.getAvailableIDs();&lt;br /&gt;&lt;br /&gt;      for (int i = 0 ; i &lt; defaulttimezone = "GMT"&gt;&lt;br /&gt;&lt;br /&gt;Sample Output:&lt;br /&gt;&lt;br /&gt;Thu Feb 07 23:49:00 UTC 2008  - for a Time instance whose getTime method returns "20080207234900GMT+00:00"&lt;br /&gt;Thu Feb 07 23:49:43 UTC 2008  - Date representation of the same time as in example&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The precision is not to the seconds as shown by the sample output but I think it should be sufficient. It servers my purpose and hope it helps you'll too. Please leave me comments or suggestions to improve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-3652328965173886154?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/3652328965173886154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=3652328965173886154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/3652328965173886154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/3652328965173886154'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/02/converting-time-object-of-bouncy-castle.html' title='Converting Time Object of Bouncy Castle into a Date Object'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-614438139352699607</id><published>2008-02-02T22:57:00.000-08:00</published><updated>2008-02-02T23:11:26.336-08:00</updated><title type='text'>KeyTool IUI to generate and manage EC keys and certificates</title><content type='html'>Came across this neat tool to generate EC/Elliptic Curve keys and certificates (in addition to DSA and RSA Keys). Keys can be stored in a keystore of a JKS/JCEKS format. It is a nice GUI based tool that can even create certificates from entries stored in the key store.&lt;br /&gt;&lt;br /&gt;Some quick steps on how to get started with your first EC Key Pair and certificate:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select View -&gt; Select -&gt; Create -&gt; KeyStore and create a keystore&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select View -&gt; Select -&gt; Create -&gt; KeyStore Entry -&gt; EC Key to create a EC Key&lt;/li&gt;&lt;ol&gt;&lt;li&gt;EC Keys can be created with 192, 239 and 256 bits&lt;/li&gt;&lt;li&gt;Signature algorithms are available SHA1withECDSA upto SHA512ECDSA&lt;/li&gt;&lt;li&gt;It supports X500 Certificate v1 and v3&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Go to View -&gt; Select Task -&gt; Export -&gt; Certificate -&gt; From Private Key Entry to create your first EC Certificate.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Voila !!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KeyTool IUI is available here: &lt;a href="http://yellowcat1.free.fr/index_ktl.html"&gt;http://yellowcat1.free.fr/index_ktl.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another link on how to do certain tasks using this tool: &lt;a href="http://yellowcat1.free.fr/howto/ktl/20/howto.html#_ecc_"&gt;http://yellowcat1.free.fr/howto/ktl/20/howto.html#_ecc_&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-614438139352699607?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/614438139352699607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=614438139352699607' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/614438139352699607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/614438139352699607'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/02/keytool-iui-to-generate-and-manage-ec.html' title='KeyTool IUI to generate and manage EC keys and certificates'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-2386629865122584997</id><published>2008-01-30T02:55:00.000-08:00</published><updated>2008-01-30T03:11:25.102-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ECC encrypt-decrypt Elliptic Curve Cryptography ECIES BouncyCastle El Gamal Encryption'/><title type='text'>Elliptic Curve Cryptography is not your usual encrypt-decrypt</title><content type='html'>When I began work on my security project for securing m-commerce transactions,  I made all the design around the single concept (used in SSL, etc),  of encrypting a secret/symmetric key with a public key of party X and sending it to the party X who will decrypt it with its private key. Subsequent communication will occur using the symmetric key. This encrypt-decrypt can happen using RSA.&lt;br /&gt;&lt;br /&gt;However, after coming across many online documents and posts on the Bouncy Castle forums, I realized that ECC is not designed this way, at least in Bouncy Castle. You need to use something called as ECIES or Elliptic Curve Integrated Encryption Scheme. (&lt;a href="http://en.wikipedia.org/wiki/ECIES"&gt;See Wikipedia&lt;/a&gt;). ECIES takes care of key exchange (Diffie-Hellman)  to establish a symmetric key (Confidentiality) and Message Authentication for Integrity.&lt;br /&gt;&lt;br /&gt;However, encrypt-decrypt in ECC can be done using El Gamal Encryption over an Elliptic Curve.  An open source Java library has been developed in this direction at the National University of Ireland Maynooth. Check out the publication and software section &lt;a href="http://www.crypto.cs.nuim.ie/software/"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I learnt my lessons the hard way and need to stick to Bouncy Castle due to several reasons and had to change my design extensively. However, the library provided by the Irish University seems promising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-2386629865122584997?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/2386629865122584997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=2386629865122584997' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/2386629865122584997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/2386629865122584997'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/01/elliptic-curve-cryptography-is-not-your.html' title='Elliptic Curve Cryptography is not your usual encrypt-decrypt'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-6431218638676475482</id><published>2008-01-28T02:10:00.000-08:00</published><updated>2008-01-28T02:19:49.721-08:00</updated><title type='text'>TOP 10 Tech Startups</title><content type='html'>Top 10 Start ups selected at an awards show called &lt;a href="http://crunchies.techcrunch.com/"&gt;Crunchies  &lt;/a&gt;:-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And yes, there are no surprises, Facebook is in the list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-6431218638676475482?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/6431218638676475482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=6431218638676475482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/6431218638676475482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/6431218638676475482'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/01/top-10-start-ups-selected-at-awards.html' title='TOP 10 Tech Startups'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-1676029366932778163</id><published>2008-01-28T01:24:00.000-08:00</published><updated>2008-01-28T01:26:50.812-08:00</updated><title type='text'>Getting your J2ME project working with Netbeans Mobility Pack and Bouncy Castle Lightweight API</title><content type='html'>&lt;p&gt;This is just a quick way to get started with BC API and ECC. It is not the best or perfect way.&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;Visit &lt;a href="http://www.bouncycastle.org/latest_releases.html"&gt;Bouncy Castle Download Page&lt;/a&gt;. Download Lightweight API for J2ME zip file. Search for Lightweight API or J2ME on the page to find the exact file.&lt;/li&gt;&lt;li&gt;Unzip the file to say folder /BouncyCastle.&lt;/li&gt;&lt;li&gt;Create a Mobile Application Project in Netbeans.&lt;/li&gt;&lt;li&gt;Go to Project Properties -&gt; Build -&gt; Libraries and Resources -&gt;Click on Add Jar/Zip&lt;/li&gt;&lt;li&gt;Add BouncyCastle/lightwt....j2me/zips/cldc_classes.zip&lt;/li&gt;&lt;li&gt;Go to Project Properties -&gt; Build -&gt; Obfuscation -&gt; Select High Obfuscation Level and add  following to Additional Obfuscation Settings.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;-dontskipnonpubliclibraryclasses&lt;/p&gt;&lt;p&gt; -dontskipnonpubliclibraryclassmembers&lt;/p&gt;&lt;p&gt; -ignorewarnings&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-1676029366932778163?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/1676029366932778163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=1676029366932778163' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/1676029366932778163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/1676029366932778163'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/01/getting-your-j2me-project-working-with.html' title='Getting your J2ME project working with Netbeans Mobility Pack and Bouncy Castle Lightweight API'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6078948329797457697.post-9209951165363598159</id><published>2008-01-28T01:14:00.000-08:00</published><updated>2008-01-30T03:25:22.728-08:00</updated><title type='text'>Using ASN.1 Notation DER Encoded ECDSA Signature in BC Lightweight API</title><content type='html'>So this is my first post and my first attempt to give back to the open source software community...&lt;br /&gt;&lt;br /&gt;I have been working on a secure mobile payment system project for the past few months at university (www.sjsu.edu).  We are using elliptic curve cryptography for our security needs. For implementation purposes, I am using Bouncy Castle Light Weight API for J2ME (http://www.bouncycastle.org/latest_releases.html).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Currently, I am attempting to create Certificate Requests using the API and I came across a hurdle that the API does not have a supporting Signature class that lets one create ASN.1 form of EC DSA (Elliptic curve DSA signatures) signatures that are embedded in certificates and so I set about creating one and is available &lt;a href="http://rapidshare.com/files/87230299/ECDSASignaturePackage.zip.html"&gt;here&lt;/a&gt; and &lt;a href="http://www.4shared.com/file/36389483/2190b527/ECDSASignaturePackage.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This class was made to fulfil my need for a class that mimics the ECDSA functionality of java.Security.Signature and org.bouncycastle.jce.provider.JDKDSASignature.  However, the class does not extend the Signature class since the Signature class in BC Lite API does not have a constructor.  The class can be used to create and verify an ECDSA Signature in J2ME with the Bouncy Castle Lightweight Crypto API for J2ME.&lt;br /&gt;&lt;br /&gt;The ECDSA Signature in ASN.1 Notation, this string is given as:&lt;br /&gt;  SEQUENCE {&lt;br /&gt;       r INTEGER,&lt;br /&gt;       s INTEGER&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;Signatures can be made of a CertificateRequestInfo Object and used to create a CertificationRequest (a pkcs 10 certificate request)&lt;br /&gt;&lt;br /&gt;All classes mentioned above are classes of BouncyCastle Lightweight J2ME API and is needed to run this class as well.&lt;br /&gt;&lt;br /&gt;Please refer comments in the file and accompanying test classes to understand the proper usage.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope to make available the PKI Infrastructure asap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6078948329797457697-9209951165363598159?l=tecknolojia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tecknolojia.blogspot.com/feeds/9209951165363598159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6078948329797457697&amp;postID=9209951165363598159' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/9209951165363598159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6078948329797457697/posts/default/9209951165363598159'/><link rel='alternate' type='text/html' href='http://tecknolojia.blogspot.com/2008/01/using-asn1-notation-der-encoded-ecdsa.html' title='Using ASN.1 Notation DER Encoded ECDSA Signature in BC Lightweight API'/><author><name>Himanshu</name><uri>http://www.blogger.com/profile/16378792853389299314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_jvK7kV_AthY/SQPabRxsMVI/AAAAAAAACSo/--cY1cR05n0/S220/s575540244_4192940_4260.jpg'/></author><thr:total>7</thr:total></entry></feed>
