<?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-2278045605255062379</id><updated>2012-02-17T02:42:45.157+08:00</updated><category term='ruby'/><category term='facebook'/><category term='shindig'/><category term='challenge'/><category term='java'/><category term='smart'/><category term='authentication'/><category term='exist'/><category term='programming'/><category term='filipina woman'/><category term='restful'/><category term='pinay'/><category term='woman'/><category term='language'/><category term='filipina'/><category term='projects'/><category term='open source'/><category term='MySpace'/><category term='application'/><category term='canonical'/><category term='sexy filipina'/><category term='cebu'/><category term='opensocial'/><category term='Platform'/><category term='android'/><category term='captcha'/><category term='social networking'/><category term='twitter'/><category term='pageonce'/><category term='ASF'/><category term='rails'/><category term='delicious'/><category term='sports'/><category term='saas'/><category term='ror'/><category term='morph'/><category term='developer'/><category term='ubuntu'/><category term='capistrano'/><category term='simple_captcha'/><category term='training'/><category term='google'/><category term='wall climbing'/><category term='deploy'/><title type='text'>On thoughts... bits and pieces</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-8445046351679429450</id><published>2008-07-08T20:05:00.006+08:00</published><updated>2008-12-09T23:11:12.392+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wall climbing'/><category scheme='http://www.blogger.com/atom/ns#' term='sports'/><category scheme='http://www.blogger.com/atom/ns#' term='exist'/><title type='text'>Exist Goes Indoor Wall Climbing</title><content type='html'>&lt;a href="http://www.exist.com/"&gt;Exist Global&lt;/a&gt; goes to sports for the month of June and July and last weekend June 05, 2008 Exist folks leave their laptops to go &lt;a href="http://en.wikipedia.org/wiki/Climbing_wall"&gt;wall climbing&lt;/a&gt;!&lt;br /&gt;Most of us, including me were first time climbers but of course some are already mountain climbers like Emman.&lt;br /&gt;&lt;br /&gt;Our instructor made a quick run through on the basics of &lt;a href="http://en.wikipedia.org/wiki/Climbing_wall"&gt;wall climbing&lt;/a&gt; since we haven't a little bit of idea on it.&lt;br /&gt;First, he showed us the *harness and the step by step process of wearing it to protect us while we are climbing.&lt;br /&gt;Then, what to observe while climbing like the rope should be in front between our shoulders and not at the back or at the side of the body so may not get hurt in case we fall.&lt;br /&gt;And when going down you can let go and free fall and let the *belay take your load down, securing your feet on the wall to prevent bumping.&lt;br /&gt;You can be a *belayer too while you are not climbing or be a photographer hehehe.&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;*Harness - a support consisting of an arrangement of straps for holding something to the body (especially one supporting a person suspended &lt;/span&gt;&lt;br /&gt;*Belay - &lt;span style=""&gt;a rope management technique used to ensure that a fall taken by a climber can be quickly arrested; belay techniques are also used for additional safety/control in rappelling, raising and lowering systems, and for mountain stream crossings.&lt;br /&gt;*Belayer - t&lt;/span&gt;&lt;span style=""&gt;he person paying out or taking in the rope for a climber.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A little stretching and now we are ready to climb. Better say it with pictures!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNebc9o_vI/AAAAAAAAC5U/hH7tUjak4Ew/s1600-h/2645137473_66f8478834.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNebc9o_vI/AAAAAAAAC5U/hH7tUjak4Ew/s200/2645137473_66f8478834.jpg" alt="" id="BLOGGER_PHOTO_ID_5220620218776747762" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I_EwMDjUD_s/SHNebvQ0A8I/AAAAAAAAC5k/-0E4a_H_yAc/s1600-h/2645135945_38b4417ecf.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_I_EwMDjUD_s/SHNebvQ0A8I/AAAAAAAAC5k/-0E4a_H_yAc/s200/2645135945_38b4417ecf.jpg" alt="" id="BLOGGER_PHOTO_ID_5220620223688999874" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I_EwMDjUD_s/SHNebUQmLcI/AAAAAAAAC5c/Vem04LaDC8g/s1600-h/2645135861_f1f880ea95.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_I_EwMDjUD_s/SHNebUQmLcI/AAAAAAAAC5c/Vem04LaDC8g/s200/2645135861_f1f880ea95.jpg" alt="" id="BLOGGER_PHOTO_ID_5220620216440335810" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNfy18ug8I/AAAAAAAAC6U/PUi0xAOQS7M/s1600-h/100_2276.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNfy18ug8I/AAAAAAAAC6U/PUi0xAOQS7M/s200/100_2276.jpg" alt="" id="BLOGGER_PHOTO_ID_5220621720132420546" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNebHHhQ-I/AAAAAAAAC5M/HMmQxiItwjs/s1600-h/2645135485_b5131e737f.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNebHHhQ-I/AAAAAAAAC5M/HMmQxiItwjs/s200/2645135485_b5131e737f.jpg" alt="" id="BLOGGER_PHOTO_ID_5220620212912604130" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I_EwMDjUD_s/SHNezVJte0I/AAAAAAAAC58/sQsyo9PyL1E/s1600-h/2645139173_eecbd8c359.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_I_EwMDjUD_s/SHNezVJte0I/AAAAAAAAC58/sQsyo9PyL1E/s200/2645139173_eecbd8c359.jpg" alt="" id="BLOGGER_PHOTO_ID_5220620628996750146" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNezZ2wRGI/AAAAAAAAC6E/jcmEBiUIhVQ/s1600-h/v.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNezZ2wRGI/AAAAAAAAC6E/jcmEBiUIhVQ/s200/v.jpg" alt="" id="BLOGGER_PHOTO_ID_5220620630259418210" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNfyr1L5ZI/AAAAAAAAC6M/hsYCHWQaJj4/s1600-h/2645137985_1158d3e01d.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNfyr1L5ZI/AAAAAAAAC6M/hsYCHWQaJj4/s200/2645137985_1158d3e01d.jpg" alt="" id="BLOGGER_PHOTO_ID_5220621717416437138" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I_EwMDjUD_s/SHNebiEBmNI/AAAAAAAAC5s/Rizh2An7U60/s1600-h/2645138887_0a4fb0868f.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_I_EwMDjUD_s/SHNebiEBmNI/AAAAAAAAC5s/Rizh2An7U60/s200/2645138887_0a4fb0868f.jpg" alt="" id="BLOGGER_PHOTO_ID_5220620220145703122" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-8445046351679429450?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/8445046351679429450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=8445046351679429450&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/8445046351679429450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/8445046351679429450'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/07/exist-goes-indoor-wall-climbing.html' title='Exist Goes Indoor Wall Climbing'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_I_EwMDjUD_s/SHNebc9o_vI/AAAAAAAAC5U/hH7tUjak4Ew/s72-c/2645137473_66f8478834.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-590473158371487237</id><published>2008-06-13T18:44:00.002+08:00</published><updated>2008-12-09T23:11:12.650+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='woman'/><category scheme='http://www.blogger.com/atom/ns#' term='smart'/><category scheme='http://www.blogger.com/atom/ns#' term='filipina woman'/><category scheme='http://www.blogger.com/atom/ns#' term='pinay'/><category scheme='http://www.blogger.com/atom/ns#' term='filipina'/><category scheme='http://www.blogger.com/atom/ns#' term='sexy filipina'/><title type='text'>Reshaping The Filipina Image Online</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://filipinaimages.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_I_EwMDjUD_s/SFJRLI5NL9I/AAAAAAAACuY/UYMTATjN_K0/s400/sexy_filipina.jpg" alt="" id="BLOGGER_PHOTO_ID_5211316970628919250" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-590473158371487237?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/590473158371487237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=590473158371487237&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/590473158371487237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/590473158371487237'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/06/reshaping-filipina-image-online.html' title='Reshaping The Filipina Image Online'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_I_EwMDjUD_s/SFJRLI5NL9I/AAAAAAAACuY/UYMTATjN_K0/s72-c/sexy_filipina.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-1691344117618871893</id><published>2008-06-10T18:49:00.005+08:00</published><updated>2008-07-04T16:05:02.927+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='ror'/><category scheme='http://www.blogger.com/atom/ns#' term='deploy'/><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><category scheme='http://www.blogger.com/atom/ns#' term='morph'/><category scheme='http://www.blogger.com/atom/ns#' term='capistrano'/><title type='text'>Deploying Rails Application in Morph AppSpace</title><content type='html'>&lt;p&gt;Deploy your Rails applications in a fault-tolerant environment&lt;br /&gt;with load balancers, private database, backups, and monitoring&lt;br /&gt;— instantly expandable on the fly in case you get slashdotted.&lt;br /&gt;&lt;br /&gt;Deploying your Rails application to a Morph AppSpace is a snap.&lt;br /&gt;You create an account and then download a pre-configured Capistrano&lt;br /&gt;recipe. Make a quick update of your SVN location and run the CAP command.&lt;br /&gt;That’s it. Within a few minutes, your application is up and running,&lt;br /&gt;ready for the world. (taken from &lt;a href="http://mor.ph/"&gt;Mor.ph&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I know you are quite familiar with Morph AppSpace&lt;br /&gt;and this is just a quick simple steps on how to do deploy&lt;br /&gt;your rails application in Morph.&lt;/p&gt;&lt;h2&gt;Assumptions:&lt;/h2&gt;&lt;p&gt;&lt;br /&gt;1. Your are using Subversion in your Rails application,&lt;br /&gt;if not refer to this &lt;a href="http://forum.morphexchange.com/forums/8/topics/25"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2. You need to have an existing Morph Account, if none&lt;br /&gt;you can sign-up for free &lt;a href="http://mor.ph/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3. You have already installed &lt;a href="http://capify.org/install"&gt;Capistrano&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. Deploying should be done in Linux environment (currently)&lt;/p&gt;&lt;p&gt;*Updated: I first tried deploying the application using Windows but it had errors during deployment. Since I had Linux and the deployment in Linux is pretty sweet with no errors at all, that's why I assumed it won't work for Windows. &lt;/p&gt;&lt;p&gt;But hey am wrong hehehe :) you need to tweak things in Windows (as usual) to make it work.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;Steps:&lt;/h2&gt;&lt;p&gt;1. Go to &lt;a href="http://panel.mor.ph/"&gt;Morph Panel&lt;/a&gt; and create a new subscription&lt;/p&gt;&lt;p&gt;&lt;img style="width: 548px; height: 408px;" src="http://img59.imageshack.us/img59/2059/newsubscription2dy6.png" border="0" /&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;2. Click "Create Data Base". This will create an initial database setup&lt;br /&gt;for your application.&lt;br /&gt;&lt;br /&gt;3. Click "Download CAP File". This is the pre-configured Capistrano recipe&lt;br /&gt;that Morph created for deploying your rails application.&lt;/p&gt;&lt;p&gt; &lt;img src="http://img341.imageshack.us/img341/9936/newappox8.png" border="0" /&gt;&lt;/p&gt;&lt;p&gt;4. Update the CAP(Capistrano) file, by setting your repository location.&lt;br /&gt;e.g.&lt;br /&gt;set :repository, nil =&gt; set :repository, '&lt;a href="http://svn.exist.com/svn/railsapp/trunk"&gt;http://svn.exist.com/svn/railsapp/trunk&lt;/a&gt;'&lt;br /&gt;&lt;br /&gt;5. Run the CAP file.&lt;br /&gt;&gt;&gt; cap -f morph_deploy.rb morph:deploy&lt;br /&gt;&lt;br /&gt;a. This will get the application's code in svn.&lt;br /&gt;b. If prompted for Morph Authentication, enter your Morph username/password.&lt;br /&gt;c. Then this will upload the code in a S3.&lt;br /&gt;d. If message is "Code upload is Done",  your application is now ready for the world. &lt;/p&gt;&lt;p&gt;You can access it using the domain you specified in your subscription.&lt;br /&gt;e.g &lt;a href="http://your_apps_domain.morphexchange.com/"&gt;http://your_apps_domain.morphexchange.com/&lt;/a&gt;&lt;br /&gt;Your rails application is now available 24/7 via Morph AppSpace! &lt;img src="https://our.exist.com/inside/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif" alt="Laughing" title="Laughing" border="0" /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Example Rails App:&lt;/p&gt;&lt;p&gt;&lt;a href="http://panaghigalaay.morphexchange.com/"&gt;&lt;strong&gt;PANAGHIGALAAY&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://codersblock.morphexchange.com/"&gt;&lt;strong&gt;CODERS'BLOCK&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://slummies.morphexchange.com/"&gt;&lt;strong&gt;SLUMMIES&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-1691344117618871893?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/1691344117618871893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=1691344117618871893&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/1691344117618871893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/1691344117618871893'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/06/deploying-rails-application-in-morph.html' title='Deploying Rails Application in Morph AppSpace'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-2845814354707633740</id><published>2008-06-05T09:40:00.001+08:00</published><updated>2008-06-05T09:42:38.091+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>The END 0f J4VA!!!</title><content type='html'>I'd like to share this interesting link about the &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=49473"&gt;The END 0f J4VA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-2845814354707633740?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/2845814354707633740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=2845814354707633740&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2845814354707633740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2845814354707633740'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/06/end-0f-j4va.html' title='The END 0f J4VA!!!'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-2852814824830853252</id><published>2008-06-04T12:18:00.002+08:00</published><updated>2008-06-05T11:21:45.745+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ror'/><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Our RoR App Deployed in Morph AppSpace</title><content type='html'>&lt;table border="0" cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="cattitle"&gt;&lt;a rel="bookmark" href="http://gretchengapol.multiply.com/journal/item/20/Our_RoR_App_Deployed_in_Morph_AppSpace"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="itemsubsub"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   After almost a month of learning the curves of &lt;a href="http://en.wikipedia.org/wiki/Ruby_language"&gt;Ruby Language&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Ruby_on_Rails"&gt;Rails Framework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;we successfully deployed our application in &lt;a href="http://mor.ph/"&gt;Morph AppSpace&lt;/a&gt;&lt;br /&gt;here's our RoR App available 24/7: &lt;a href="http://codersblock.morphexchange.com/"&gt;Coders'Block Application&lt;/a&gt;&lt;br /&gt;Thanks to Morph! &lt;img src="http://images.multiply.com/common/smiles/smile.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;About Coders'Block:&lt;br /&gt;&lt;/strong&gt;Lets developers paste their code online and share files to everyone. Codes Posted has Syntax Highlighter which depends on the programming language written. This is useful for when the developer needs help in debugging his code. Other developers can give their comments and suggestions on the posted items too!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creators:&lt;br /&gt;Diana, Gwen, and Gretchen&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;*Feel free to share you suggestions, we know it needs more tweaking hehehe it's a 5days work application so bear with us.&lt;br /&gt;&lt;br /&gt;Other RoR Apps Deployed by other teams:&lt;br /&gt;&lt;a href="http://panaghigalaay.morphexchange.com"&gt;Panaghigalaay&lt;/a&gt;&lt;br /&gt;&lt;a href="http://slummies.morphexchange.com"&gt;Slummies&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-2852814824830853252?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/2852814824830853252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=2852814824830853252&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2852814824830853252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2852814824830853252'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/06/our-ror-app-deployed-in-morph-appspace.html' title='Our RoR App Deployed in Morph AppSpace'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-2156537619121286031</id><published>2008-06-02T14:49:00.003+08:00</published><updated>2008-06-02T15:11:23.920+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ror'/><category scheme='http://www.blogger.com/atom/ns#' term='restful'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>RestFul Authentication</title><content type='html'>&lt;span style="font-family: trebuchet ms;"&gt;I am an RoR noob myself and having different Rails plugins at my fingertips proves to be helpful.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;If you want to add an authentication in your RoR application you can use Restful Authentication. Without you doing the code for logging feature so you have ample time for main features in your application. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;Steps:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;1. In your app root dir:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;&gt;&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:100%;" &gt;ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication&lt;br /&gt;&lt;br /&gt;2. Then generate authenticated files:&lt;br /&gt;&gt;&gt; ruby script/generate Authenticated Sessions User&lt;br /&gt;( or if you want to activation add: --include-activation )&lt;br /&gt;&lt;br /&gt;3. Edit the migration file if you want to add/remove fields and do the migration:&lt;br /&gt;&gt;&gt; rake db:migrate&lt;br /&gt;&lt;br /&gt;Viola! You have the logging feature added.&lt;br /&gt;You can further update the models and add activation and an signup emailer if you want to. :)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-2156537619121286031?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/2156537619121286031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=2156537619121286031&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2156537619121286031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2156537619121286031'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/06/restful-authentication.html' title='RestFul Authentication'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-4331359887974737051</id><published>2008-06-02T14:15:00.003+08:00</published><updated>2008-06-02T14:42:37.977+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ror'/><category scheme='http://www.blogger.com/atom/ns#' term='captcha'/><category scheme='http://www.blogger.com/atom/ns#' term='simple_captcha'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>Adding Captcha to your Application</title><content type='html'>&lt;span style="font-family: courier new;"&gt;Are you developing an RoR application and want to add CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart)  Authentication in it?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;*Note&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;1. simple_captcha plugin is being used here if you want to use other plugin, you can find it in the net.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;2. You must have &lt;/span&gt;&lt;a style="font-family: courier new;" href="http://rmagick.rubyforge.org/"&gt;RMagick&lt;/a&gt;&lt;span style="font-family: courier new;"&gt; installed. (This is a prerequisite.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Here's the simple steps in adding a captcha image:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;1. Type this command in your app root dir: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&gt;&gt; ruby script/plugin install svn://rubyforge.org/var/svn/expressica/plugins/simple_captcha&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;2. After successful installation.&lt;/span&gt;&lt;strong style="font-family: courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;span style="font-family: courier new;"&gt;&lt;span&gt;&gt;&gt; rake simple_captcha&lt;/span&gt;&lt;span class="symbol"&gt;:setup&lt;br /&gt;&lt;br /&gt;(Am using Rails 2.x version for &lt; 2.0 do&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-family: courier new;"&gt;&lt;span&gt;&gt;&gt; rake simple_captcha&lt;/span&gt;&lt;span class="symbol"&gt;:setup_old)&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;br /&gt;&lt;span class="symbol"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;span class="symbol"&gt;&lt;/span&gt;3. Then do the migration.&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&gt;&gt; rake db:migrate&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;4. Add this  line of code to you config/routes.rb&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;span&gt;map.simple_captcha &lt;span class="string"&gt;'/simple_captcha/:action'&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span class="symbol"&gt;:controller&lt;/span&gt;&lt;span&gt; =&gt; &lt;/span&gt;&lt;span class="string"&gt;'simple_captcha'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;5.  Add this line in the file app/controllers/application.rb&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;span&gt;include SimpleCaptcha::ControllerHelpers&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;span&gt;6. In your view add:&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;span&gt;&lt;%= show_simple_captcha(&lt;/span&gt;&lt;span class="symbol"&gt;:object&lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span class="string"&gt;"user"&lt;/span&gt;) %&gt; &lt;br /&gt;&lt;/p&gt;&lt;span style="font-family: courier new;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;7. In your model add:&lt;br /&gt;&lt;/span&gt;  apply_simple_captcha &lt;br /&gt;&lt;br /&gt;8. Validating with captcha:&lt;br /&gt;  &lt;span class="variable"&gt;@user&lt;/span&gt;&lt;span&gt;.valid_with_captcha? &lt;br /&gt;&lt;/span&gt;&lt;span class="variable"&gt;&lt;br /&gt;9. Saving with captcha:&lt;br /&gt;  @user&lt;/span&gt;&lt;span&gt;.save_with_captcha&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;h4 style="font-family: courier new;"&gt;View Options&lt;/h4&gt; &lt;p style="font-family: courier new;"&gt;&lt;strong&gt;:label&lt;/strong&gt;&lt;br /&gt;provides the custom below the image, default is “(type the code from the image)”&lt;/p&gt; &lt;p style="font-family: courier new;"&gt;&lt;strong&gt;:image_style&lt;/strong&gt;&lt;br /&gt;Provides the specific image style for the captcha image.&lt;br /&gt;There are eight different styles available with the plugin as…&lt;/p&gt; &lt;ul style="font-family: courier new;"&gt;&lt;li&gt;simply_blue&lt;/li&gt;&lt;li&gt;simply_red&lt;/li&gt;&lt;li&gt;simply_green&lt;/li&gt;&lt;li&gt;embosed_silver&lt;/li&gt;&lt;li&gt;all_black&lt;/li&gt;&lt;li&gt;distorted_black&lt;/li&gt;&lt;li&gt;charcoal_grey&lt;/li&gt;&lt;li&gt;almost_invisible&lt;/li&gt;&lt;/ul&gt; &lt;p style="font-family: courier new;"&gt;Default is ’simply_blye’&lt;br /&gt;You can also specify ‘random’ to select the random image style.&lt;/p&gt; &lt;p style="font-family: courier new;"&gt;&lt;strong&gt;:distortion&lt;/strong&gt;&lt;br /&gt;Handles the complexity of the image. The :distortion can be set to ‘low’, ‘medium’&lt;br /&gt;or ‘high’. Default is ‘low’.&lt;/p&gt; &lt;p style="font-family: courier new;"&gt;&lt;strong&gt;:code_type&lt;/strong&gt;&lt;br /&gt;Handles the text of the captcha image. Available options are ‘numeric’ or ‘alphabetic’.&lt;br /&gt;Default is ‘alphabetic’.&lt;/p&gt; &lt;p style="font-family: courier new;"&gt;&lt;strong&gt;:object&lt;/strong&gt;&lt;br /&gt;the name of the object of the model class, to implement the model based captcha.&lt;/p&gt; &lt;p style="font-family: courier new;"&gt;&lt;em&gt;&lt;strong&gt;How to change the CSS for SimpleCaptcha DOM elements ?&lt;/strong&gt;&lt;br /&gt;You can change the CSS of the SimpleCaptcha DOM elements as per your need in this file…&lt;br /&gt;For Rails &gt;= 2.0 the partial view file wiil reside as…&lt;br /&gt;“/app/views/simple_captcha/_simple_captcha.erb”&lt;br /&gt;For Rails &lt; 2.0 the partial view file will reside as…&lt;br /&gt;“/app/views/simple_captcha/_simple_captcha.rhtml”&lt;br /&gt;&lt;/em&gt;&lt;/p&gt; &lt;h4 style="font-family: courier new;"&gt;View’s Examples&lt;/h4&gt; &lt;p style="font-family: courier new;"&gt;&lt;img src="http://expressica.com/wp-content/uploads/2008/01/simple_captcha.png" alt="simple_captcha" /&gt;&lt;/p&gt;&lt;span style="font-family: courier new;"&gt;&lt;span&gt; &lt;br /&gt;&lt;/span&gt;&lt;span&gt; for detailed info:&lt;br /&gt;http://expressica.com/simple_captcha/&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre style="display: none;" name="code" class="ruby"&gt;ApplicationController &lt;&gt; &lt;strong&gt;NOTE:&lt;/strong&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-4331359887974737051?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/4331359887974737051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=4331359887974737051&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/4331359887974737051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/4331359887974737051'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/06/adding-captcha-to-your-application.html' title='Adding Captcha to your Application'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-2619921282103783635</id><published>2008-04-25T14:51:00.002+08:00</published><updated>2008-04-25T17:10:51.097+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='ror'/><category scheme='http://www.blogger.com/atom/ns#' term='cebu'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='training'/><title type='text'>First Day High!</title><content type='html'>&lt;p&gt;hehehe it should have been RoR first day!&lt;br /&gt;yep, April 25 or simply put today was the first day&lt;br /&gt;of the RoR training.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ms Mafe (blooming in her white attire)&lt;img src="http://inside.int.exist.com/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif" alt="Laughing" title="Laughing" border="0" /&gt; opened the training&lt;br /&gt;with the trainee's RoR training expectations (taken from the survey) and there are lots of them,&lt;br /&gt;(take note it's an intensive training so better fasten your seat belt!)&lt;br /&gt;and of course there are managament's expectations too.&lt;br /&gt;&lt;br /&gt;Then Ms. Jackie gives us the training schedule, topics&lt;br /&gt;to be discussed, and the RoR gurus that would share their knowledge throughout the training.&lt;br /&gt;&lt;br /&gt;Finally Stephen (a.k.a Popol, formal mode &lt;img src="http://inside.int.exist.com/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif" alt="Wink" title="Wink" border="0" /&gt;) takes the stage.&lt;br /&gt;He is our first instructor for Ruby Basics and that would be Ruby Background.&lt;br /&gt;&lt;br /&gt;He give us a brief history on how Ruby was conceived in the world.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tiny bits of Ruby history:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;    Created by Yukihiro Matsumoto(Matz)&lt;/li&gt;&lt;li&gt;    1993, February 24: Matz started to work on Ruby.&lt;/li&gt;&lt;li&gt;    1995, December: First release 0.95.&lt;/li&gt;&lt;li&gt;    1996, December: 1.0 is released.&lt;/li&gt;&lt;li&gt;    2003, August 4: 1.8.0 is released.&lt;/li&gt;&lt;li&gt;    1.9.0/ December 26, 2007 (2007-12-26)&lt;/li&gt;&lt;li&gt;    Influenced by: Smalltalk, Perl, Lisp, Scheme, Python, CLU, Eiffel, Ada, Dylan&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;The Semantics and Features of Ruby:&lt;br /&gt;&lt;/strong&gt;Ruby is object oriented - every data type is an object (classes and types which other languages designate as primitives).&lt;br /&gt;It has support for introspection, reflection and metaprogramming, as well as interpreter-based threads,&lt;br /&gt;dynamic typing, and parametric polymorphism.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Ruby Philosophies: &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;(Stephen said this can guide you if Ruby is meant for you in the long run.)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;productive and fun&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;simple and friendly API&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;consistent and regular&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;principle of least surprise&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;we are the masters, they are the slaves (for the time being)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Less is more&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The ruby way&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;* Ruby is designed for programmer productivity and fun,&lt;br /&gt;following the principles of good user interface design.&lt;br /&gt;The systems design needs to emphasize human, rather&lt;br /&gt;than computer needs.&lt;/p&gt;&lt;p&gt;*It follows the principle of least surprise (POLS),&lt;br /&gt;meaning that the language should behave in such a way&lt;br /&gt;as to minimize confusion for experienced users.&lt;br /&gt;&lt;br /&gt;As Stephen discusses these things in reality there are things&lt;br /&gt;that are going on in the background.&lt;br /&gt;(I know what your thinking but it isn't what I mean.)&lt;br /&gt;We (the trainees) are actually setting up the environment needed.&lt;br /&gt;Good thing I have everything set up but unfortunately I have to change my Rails&lt;br /&gt;version to a lower version. :(&lt;br /&gt;&lt;br /&gt;After losing connection from time to time, I guess almost everyone&lt;br /&gt;had installed Ruby, Rails, and Aptana as our IDE (this am not sure).&lt;br /&gt;&lt;br /&gt;Yeah, their are questions and Stephen answered everything quite well.&lt;br /&gt;He also showed us some simple tricks, that is changing the state of an object.&lt;br /&gt;Since in Ruby each objects knows its own state.&lt;br /&gt;So if you know you know your state you can play around with it right?&lt;/p&gt;&lt;p&gt;I somewhat got interested with "final" objects that are supposed to be&lt;br /&gt;final but still Ruby can get his hands on. lol Yes, Stephen clarifies that&lt;br /&gt;Ruby has a power to freeze and unfreeze (final) objects!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;The more interesting part is metaprogramming.&lt;br /&gt;Metaprogramming is writing programs that write programs.&lt;br /&gt;Analogy: "Writing Ruby that can write Ruby."&lt;/p&gt;A question that is left unanswered:&lt;br /&gt;Does Java had metaprogramming?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's all for 0.5 day!  Maybe I'd miss some important things so kindly share it, you are very much appreciated. &lt;img src="http://inside.int.exist.com/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif" alt="Laughing" title="Laughing" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-2619921282103783635?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/2619921282103783635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=2619921282103783635&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2619921282103783635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/2619921282103783635'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/04/first-day-high.html' title='First Day High!'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-847381949769570743</id><published>2008-04-11T13:46:00.000+08:00</published><updated>2008-04-11T13:47:41.728+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Learning a new language</title><content type='html'>&lt;p&gt;Learning a new language.&lt;/p&gt;  &lt;p&gt;(A new language for me to learn but is in the industry for a long time.)&lt;/p&gt;  &lt;p&gt;Yeah, I'll definitely going to learn a new language.&lt;br /&gt;I've been with Java since my college years and it's my favorite language since.&lt;br /&gt;There is something similar to it (Java) and they are born at the same time or&lt;br /&gt;more accurately Ruby is a wee bit older.&lt;/p&gt;  &lt;p&gt;They say Ruby is sleek, beautiful/sexy, hehehe it's easy and fun!&lt;br /&gt;A language that is more developer friendly.&lt;br /&gt;The codes are pretty readable even for a newbie like me. :)&lt;/p&gt;  &lt;p&gt;Ruby on Rails will be my girlfriend for now.&lt;br /&gt;Yes, Ruby on Rails.&lt;br /&gt;Using Rails framework (for web apps)&lt;br /&gt;and Ruby language, in short Ruby on Rails. ;)&lt;/p&gt;  &lt;p&gt;Hope we will have fun together as I get to know her better. :D&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-847381949769570743?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/847381949769570743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=847381949769570743&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/847381949769570743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/847381949769570743'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/04/learning-new-language.html' title='Learning a new language'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-7679055948321303320</id><published>2008-03-14T15:16:00.000+08:00</published><updated>2008-03-14T15:21:07.958+08:00</updated><title type='text'>Refactoring:Improving the Design of Existing Code</title><content type='html'>&lt;strong&gt;Watch for warning signs in your own code –- that is "code smells" !!!&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The Lunch 'N Learn session really did not start with that line, but that is the most important guideline in refactoring.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Every Lunch 'N Learn Sessions is something to look forward to hmmmm free lunch? Well you may think it is but there is something more to it, lots of ideas were shared during these small talks from the Exist Gurus and this time it's one of Exist best, Ms. Deng.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is Refactoring?&lt;/strong&gt;  Ms. Deng, gives quite an opening through asking a question.&lt;br /&gt;Everybody seems dumbstruck, well maybe because it's the first time that the participants are being asked early in the discussion even before they can do so or they are just quiet familiar with the word or they're full of ideas? I bet they have been refactoring all there programming life, everybody does right?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What really is Refactoring?&lt;/strong&gt;&lt;br /&gt;Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.&lt;br /&gt;&lt;br /&gt;Its heart is a series of small behavior preserving transformations. Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why should you refactor?&lt;/strong&gt;&lt;br /&gt;– Refactoring improves the design of software&lt;br /&gt;– Refactoring makes software easier to understand&lt;br /&gt;– Refactoring helps you find bugs&lt;br /&gt;– Refactoring helps you program faster&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;But when should you refactor?&lt;/strong&gt;&lt;br /&gt;– Refactor when you add a function&lt;br /&gt;– Refactor when you need to fix a bug&lt;br /&gt;– Refactor when you do a code review&lt;br /&gt;&lt;br /&gt;In short refactor when your system changes otherwise its pointless, refactoring a changing software so it can be easily changed in the future gives you a payback.&lt;br /&gt;Take note when you refactor you should also test, &lt;strong&gt;testing is very important underpinning to refactoring&lt;/strong&gt;, as Fowler says:&lt;br /&gt;“Think of it as walking a tightrope without a net. If you are good at walking a tightrope, and it's not that high up, then you might try it. But if you've never walked a tightrope before, and it's over Niagara Falls, you probably want a good net.”&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code smells or code that smells bad.  &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;      Duplicated Code &lt;/li&gt;&lt;li&gt;      Long Method&lt;/li&gt;&lt;li&gt;      Large Class&lt;/li&gt;&lt;li&gt;      Long Parameter List    &lt;/li&gt;&lt;li&gt;      Divergent Change    &lt;/li&gt;&lt;li&gt;      Shotgun Surgery   &lt;/li&gt;&lt;li&gt;      Feature Envy&lt;/li&gt;&lt;li&gt;      Data Clumps&lt;/li&gt;&lt;li&gt;      Primitive Obsession&lt;/li&gt;&lt;li&gt;      Switch Statements   &lt;/li&gt;&lt;li&gt;      Parallel Inheritance Hierarchies&lt;/li&gt;&lt;li&gt;      Lazy Class  &lt;/li&gt;&lt;li&gt;      Speculative Generality&lt;/li&gt;&lt;li&gt;      Temporary Field    &lt;/li&gt;&lt;li&gt;      Message Chains&lt;/li&gt;&lt;li&gt;      Middle Man&lt;/li&gt;&lt;li&gt;      Inappropriate Intimacy&lt;/li&gt;&lt;li&gt;      Alternative Classes with Different Interfaces&lt;/li&gt;&lt;li&gt;      Incomplete Library Class&lt;/li&gt;&lt;li&gt;      Data Class&lt;/li&gt;&lt;li&gt;      Refused Bequest&lt;/li&gt;&lt;li&gt;      Comments&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Listed above are just the 22 code smells, but there are 73 code smell refactorings in 7 categories. &lt;/p&gt;&lt;h2 class="title hid"&gt;Lazy Class&lt;/h2&gt;&lt;p&gt;A class that isn't doing enough to pay for itself should be eliminated. A class isn't doing very much.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Move all its features into another class and delete it. &lt;/em&gt;Useless components are subjected to &lt;strong&gt;Inline Class&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;img style="width: 425px; height: 107px;" src="http://sourcemaking.com/files/sm/images/07fig04.gif" align="middle" border="0" /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h2 class="title hid"&gt;Extract Hierarchy&lt;/h2&gt;                                                                  &lt;p&gt;You have a class that is doing too much work, at least in part through many conditional statements.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Create a hierarchy of classes in which each subclass represents a special case.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="width: 408px; height: 474px;" src="http://sourcemaking.com/files/sm/images/12fig14.gif" align="middle" border="0" /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;For more on refactoring read: &lt;/strong&gt;&lt;br /&gt;Refactoring:Improving the Design of Existing Code by Martin Fowler&lt;a href="http://www.tigersurvey.com/survey.php?survey=5233"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-7679055948321303320?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/7679055948321303320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=7679055948321303320&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/7679055948321303320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/7679055948321303320'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/03/refactoringimproving-design-of-existing.html' title='Refactoring:Improving the Design of Existing Code'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-5860589278810439837</id><published>2008-03-12T18:44:00.000+08:00</published><updated>2008-03-12T18:45:15.057+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySpace'/><category scheme='http://www.blogger.com/atom/ns#' term='opensocial'/><title type='text'>MySpace Soft Launch!!!</title><content type='html'>Few weeks ago (February 5) they had launched MDP (Myspace Developer Platform) to developers for them to play with the OpenSocial API and MySpace's Platform. So its dev facing MySpace/OpenSocial. And promise to go live to MySpace end-users after a month, this time MySpace end-users facing MySpace 3rd party Apps.&lt;br /&gt;&lt;div class="post"&gt;&lt;p&gt;&lt;br /&gt;Tomorrow, March 13, 2008 (Thursday),  MySpace will be&lt;br /&gt;&lt;br /&gt;having a DevJam, a soft launch for its 3rd party social&lt;br /&gt;&lt;br /&gt;applications which uses OpenSocial API. A week before the&lt;br /&gt;&lt;br /&gt;said soft launch an uproar occurs, the current platform&lt;br /&gt;&lt;br /&gt;supports OpenSocial API 0.6 but most of the developers&lt;br /&gt;&lt;br /&gt;wants MySpace to support OpenSocial API 0.7 which Google&lt;br /&gt;&lt;br /&gt;releases on the same date MDP goes live to&lt;br /&gt;&lt;br /&gt;developers. And they go as far as creating a poll to&lt;br /&gt;&lt;br /&gt;let developers have a say whether to support v0.7 later&lt;br /&gt;&lt;br /&gt;and continue with v0.6 or support it now. &lt;/p&gt;&lt;p&gt;OpenSocial v0.6 and 0.7 has viral changes. &lt;/p&gt;&lt;p&gt;In 0.6 there is only one package, the "opensocial.*" package. &lt;/p&gt;&lt;p&gt;In 0.7, the packages includes: opensocial, gadgets(core), and gadgets(feature-specific). &lt;/p&gt;&lt;p&gt;Days before the soft launch OpenSocial 0.7 goes Live!&lt;br /&gt;Every developers are burning their candles for tomorrows event!&lt;/p&gt;&lt;p&gt; &lt;/p&gt;            &lt;div class="weblog_keywords"&gt;             &lt;p&gt;                 Keywords: &lt;a href="http://inside.manila.exist.com/search/index.php?weblog=myspace&amp;amp;ref=178&amp;amp;owner=99"&gt;myspace&lt;/a&gt;, &lt;a href="http://inside.manila.exist.com/search/index.php?weblog=opensocial&amp;amp;ref=178&amp;amp;owner=99"&gt;opensocial&lt;/a&gt;, &lt;a href="http://inside.manila.exist.com/search/index.php?weblog=social+networking&amp;amp;ref=178&amp;amp;owner=99"&gt;social networking&lt;/a&gt;             &lt;/p&gt;             &lt;/div&gt;         &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-5860589278810439837?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/5860589278810439837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=5860589278810439837&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/5860589278810439837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/5860589278810439837'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/03/myspace-soft-launch.html' title='MySpace Soft Launch!!!'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-5587452977228902091</id><published>2008-03-12T18:43:00.000+08:00</published><updated>2008-03-12T18:44:29.491+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySpace'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='Platform'/><category scheme='http://www.blogger.com/atom/ns#' term='opensocial'/><title type='text'>MySpace Developer Platform?</title><content type='html'>&lt;h2&gt;MySpace Developer Platform?&lt;/h2&gt; &lt;p&gt;The MySpace Developer Platform is a combination of services that provides third party application developers with hooks into MySpace's data and functionality. These services include:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;A suite of online tools for creating and publishing applications (and debugging them).set of RESTful APIs (provided in json, xml, and other formats as needed) that provide endpoints for browser-to-site and site-to-site interaction. These are implemented over the http protocol using a simple, intuitive uri scheme.&lt;/li&gt;&lt;li&gt;A mechanism for your application to exchange data with your own site.&lt;/li&gt;&lt;li&gt;A system for end users to find and install applications on their profiles.&lt;/li&gt;&lt;li&gt;Security mechanisms for protecting end users' identity, as well as communications verification between MySpace servers and your site.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;OpenSocial + MySpace Developer Platform do they fit together?&lt;/h2&gt; &lt;p&gt;OpenSocial and the MySpace Developer Platform are a series of JavaScript and server-side components that work together to provide you with a standard interface to write your apps against.&lt;/p&gt;&lt;p&gt; Your app is hosted in an IFrame and your code has a reference first to "opensocialreference.js", then to "MyOpenSpace.js"&lt;/p&gt;&lt;p&gt;&lt;strong&gt; MyOpenSpace.js&lt;/strong&gt; is dependent on &lt;strong&gt;opensocialreference.js&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;OpenSocial&lt;/strong&gt; defines several basic social networking objects, as well as implementations for how to get and update those objects. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;MyOpenSpace&lt;/strong&gt; maps those objects to MySpace server-side API calls and it also extends the objects. &lt;/p&gt;&lt;p&gt;The following code is the official OpenSocial request for the friends of the "Owner" (the person who has installed the application):&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;span&gt;&lt;a name="code snippet1" title="code snippet1"&gt;&lt;/a&gt; &lt;pre&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; init()&lt;br /&gt;{&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; dataRequest &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; opensocial.newDataRequest();&lt;br /&gt;  &lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Create a request for the owner's friends&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; friendRequest &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; dataRequest.newFetchPeopleRequest(opensocial.DataRequest.Group.OWNER_FRIENDS);&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Add the request for processing.&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    dataRequest.add(friendRequest);&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Send the request, passing in a callback.            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    dataRequest.send(response);&lt;br /&gt;  &lt;br /&gt;}&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-5587452977228902091?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/5587452977228902091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=5587452977228902091&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/5587452977228902091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/5587452977228902091'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/03/myspace-developer-platform.html' title='MySpace Developer Platform?'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-7892837718207078893</id><published>2008-03-12T18:42:00.001+08:00</published><updated>2008-04-23T09:44:30.455+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySpace'/><category scheme='http://www.blogger.com/atom/ns#' term='opensocial'/><title type='text'>RAD on OpenSocial</title><content type='html'>We started with OpenSocial around mid of February. After 2weeks of learning about the API, its basic how to's and running simple samples along the way with errors and headaches. Having MySpace developers forum and irc channel really helps. Getting answers from the MySpace Dev team and 3rd party devs.&lt;br /&gt;&lt;br /&gt;First thing first is having a sandbox access to social sites or the container which supports OpenSocial, like MySpace dev sandbox, Orkut, Ning, Hi5.&lt;br /&gt;&lt;br /&gt;MySpace took me 3 days to have an access to their dev sandbox, while in Orkut only one day. I later found out that my application for sandbox access wasn't approved for they want more info on me, making sure that the access is given to a real developer and not just spam boots, well enough of that.&lt;br /&gt;&lt;br /&gt;For it is a sandbox access your application can only be added to at most three users (now they changed the limit to 20 users) who are friends of your application (for security purposes) so, you can not just add millions of users or anyone on MySpace. Every application you create has a separate MySpace Accounts. So every application has a different set of friends.&lt;br /&gt;&lt;br /&gt;MDP has its own application builder and Caja test tools (which they currently removed).&lt;br /&gt;Applications can either be a pure html or js, a flash app, or an external IFrame. Since they currently don't support REST APIs you need to host your apps data. Since not all fields are in the OpenSocial API, MySpace extends those APIs.&lt;br /&gt;As of now OpenSocial's Activities and Data API's are not yet supported.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-7892837718207078893?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/7892837718207078893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=7892837718207078893&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/7892837718207078893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/7892837718207078893'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/03/rad-on-opensocial.html' title='RAD on OpenSocial'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-5491846667179615016</id><published>2008-03-06T13:00:00.000+08:00</published><updated>2008-03-06T13:01:06.944+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shindig'/><category scheme='http://www.blogger.com/atom/ns#' term='ASF'/><category scheme='http://www.blogger.com/atom/ns#' term='opensocial'/><title type='text'>Shindig Basics</title><content type='html'>&lt;div class="post"&gt;&lt;!-- Open class post --&gt;             &lt;strong&gt;What is Shindig? &lt;/strong&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;As for the famous &lt;span&gt;wikipedia&lt;/span&gt;:&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;                            Shindig&lt;/strong&gt; refers to any sort of clever party, covered dish gathering, box social, a brawl, or it can refer to a dance party with lots of music. &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;Well, we are not talking of dance parties or music here and not about brawl either. Now I wonder why they named the project Shindig?&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;Shindig&lt;/strong&gt; is an open source project in the Apache Software Foundation incubator which began in December, 2007, to provide an open source implementation of the &lt;u&gt;&lt;a href="http://code.google.com/apis/opensocial/docs/spec.html"&gt;OpenSocial specification&lt;/a&gt;&lt;/u&gt; and &lt;u&gt;&lt;a href="http://code.google.com/apis/gadgets/docs/spec.html"&gt;gadgets specification&lt;/a&gt;&lt;/u&gt;.  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;The software contains both server-side and client-side code. Once the project is mature, an installation of this product will be capable of rendering OpenSocial gadgets in a web browser. &lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;Shindig's goal&lt;/strong&gt; is to allow new sites to start hosting social applications under an hour's worth of work.  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;An hour's work? Now that is quite handy and useful guys!  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Lets get going...&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;The architectural components of Shindig: &lt;/strong&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;blockquote&gt;Gadget Container JavaScript -- core JavaScript foundation for general gadget functionality. This JavaScript manages security, communication, UI layout, and feature extensions, such as the OpenSocial API. &lt;/blockquote&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;blockquote&gt;Gadget Server -- an open source version of gmodules.com, which is used to render the gadget xml into JavaScript and HTML for the container to expose via the container JavaScript. &lt;/blockquote&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;blockquote&gt;OpenSocial Container JavaScript -- JavaScript environment that sits on top of the Gadget Container JS and provides OpenSocial specific functionality (profiles, friends, activities). &lt;/blockquote&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;li&gt;&lt;blockquote&gt;OpenSocial Gateway Server -- an open source implementation of the server interface to container-specific information, including the OpenSocial REST APIs, with clear extension points so others can connect it to their own backends.&lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;The Gadget Container JavaScript provides code to generate IFRAMES pointing to gmodules.com, offers some basic gadgets functionality (e.g. dynamic height), a layout manager, the edit dialog box, a cookie-based user preferences store, and an option to point IFRAMES at your Gadget Server instance instead of gmodules.com. &lt;/p&gt; &lt;p&gt;The initial Gadget Server written in Java provides extensible scaffolding for processing gadgets: retrieving XML, parsing it, and processing it into a form that allows rendering of the gadget to a user or retrieval of its metadata.&lt;br /&gt;&lt;br /&gt;The initial contribution of the Gadget Server was written in Java, Shindig is language neutral. Ning is planning to contribute an initial version of a PHP Gadget Server, and rumors of C#, Perl, and Ruby. &lt;/p&gt;  &lt;div id="downloadDiv" dir="ltr"&gt;  &lt;h3 class="western"&gt;Downloads&lt;/h3&gt;  &lt;p&gt;Currently they do not have an automated builds infrastructure set up to offer periodic builds yet, but it will be available soon. &lt;/p&gt; &lt;/div&gt; &lt;div id="buildingDiv" dir="ltr"&gt;  &lt;h3 class="western"&gt;Building and running Shindig   &lt;/h3&gt;  &lt;p&gt;The following steps provide useful information on how to build  and run Shindig.   &lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Prequisites     &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Get   the code    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Build   and run the code (with Maven)    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Setting   up an Eclipse project    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;Running   with Caja    &lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;h4&gt;&lt;a name="preReqs" title="preReqs"&gt;&lt;/a&gt;Prequisites before building Shindig&lt;/h4&gt;  &lt;p&gt;In order to build Shindig, you must have the following:   &lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Java (JDK/JRE) 1.5 or later   installed on your system and the JAVA_HOME environment variable   set.    &lt;/p&gt;   &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;See: &lt;a href="http://java.sun.com/"&gt;http://java.sun.com/&lt;/a&gt;    for installation instructions.&lt;/p&gt;   &lt;/li&gt;&lt;/ul&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;A Subversion client installed in   order to checkout the code.    &lt;/p&gt;   &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Instructions for downloading and    installing Subversion can be found here:    &lt;a href="http://subversion.tigris.org/"&gt;http://subversion.tigris.org/&lt;/a&gt;&lt;/p&gt;   &lt;/li&gt;&lt;/ul&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Apache Maven installed to perform   the build.    &lt;/p&gt;   &lt;ul&gt;&lt;li&gt;&lt;p&gt;Instructions for downloading and installing Maven can be    found here: &lt;a href="http://maven.apache.org/download.html"&gt;http://maven.apache.org/download.html&lt;/a&gt;&lt;/p&gt;   &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;h4&gt;&lt;a name="getTheCode" title="getTheCode"&gt;&lt;/a&gt;Getting the code&lt;/h4&gt;  &lt;p&gt;Create a subdirectory and checkout the Shindig code from its  Subversion repository&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;mkdir ~/src/shindig   (or wherever you'd like to put it)    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;cd ~/src/shindig    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;svn co   &lt;a href="http://svn.apache.org/repos/asf/incubator/shindig/trunk/"&gt;http://svn.apache.org/repos/asf/incubator/shindig/trunk/&lt;/a&gt; .    &lt;/p&gt;  &lt;/li&gt;&lt;/ol&gt;  &lt;h4&gt;&lt;a name="buildTheCode" title="buildTheCode"&gt;&lt;/a&gt;Building and running the code (with  Maven)&lt;/h4&gt;  &lt;p&gt;To build a Web Archive (WAR) file for the Gadget server and run  tests, perform the following:   &lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Make sure you have the   &lt;a href="http://incubator.apache.org/shindig/#preReqs"&gt;prerequisites&lt;/a&gt;   installed first.    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;cd   ~/src/shindig/java/gadgets    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;mvn package    &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;Once the build successfully completes, you can install the built WAR file (gadgets.war) located in the /target subdirectory onto your JEE server. &lt;/p&gt;  &lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;To build the code (with no tests) and start a Jetty server that  will run on at localhost:8080:   &lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;mvn jetty:run-war    &lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;To run the Jetty server on a different port, use:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;mvn -Djetty.port=&lt;port&gt; jetty:run&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Once you've either installed the WAR file on your JEE server, or are running locally using the Jetty server, you can test the Gadget server using:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://localhost/"&gt;http://localhost:&lt;/a&gt;&lt;port&gt;/gadgets/ifr?url=&lt;a href="http://www.labpixies.com/campaigns/todo/todo.xml"&gt;http://www.labpixies.com/campaigns/todo/todo.xml&lt;/a&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;h4&gt;&lt;a name="eclipseProject" title="eclipseProject"&gt;&lt;/a&gt;Setting up an Eclipse project to  build Shindig&lt;/h4&gt;  &lt;p&gt;These steps, after completing the previous section, will allow you to build from within Eclipse using the Maven2 plugin. You should first install the Maven plugin, then create the new Java project. &lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;Create ~/.m2/settings.xml consisting solely of    &lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;pre&gt;&lt;settings&gt;&lt;br /&gt;&lt;/settings&gt;&lt;/pre&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Install the Maven2 plugin    &lt;/p&gt;   &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Help -&gt; Software Updates -&gt;    Find and Install     &lt;/p&gt;    &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Search for new features to    install     &lt;/p&gt;    &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Create a new remote update site    for the Maven 2 plugin     &lt;/p&gt;    &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Name: Maven2 - Codehaus      &lt;/p&gt;     &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;URL:     &lt;a href="http://m2eclipse.codehaus.org/update/"&gt;http://m2eclipse.codehaus.org/update/&lt;/a&gt;      &lt;/p&gt;    &lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Select the site and click    "Finish"     &lt;/p&gt;    &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Select only the Maven    Integration plug-in (mylyn and subclipse integration have other    dependencies.)     &lt;/p&gt;    &lt;/li&gt;&lt;li&gt;&lt;p&gt;Complete the installation     &lt;/p&gt;   &lt;/li&gt;&lt;/ol&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Setup new workspace and   project&lt;br /&gt;Creating a new workspace eliminates the performance cost   from existing projects and makes it easier to manage the code.    &lt;/p&gt;   &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;File -&gt; Switch Workspace -&gt;    Other...     &lt;/p&gt;    &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Select directory to store    workspace     &lt;/p&gt;    &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Do not select a parent directory of the shindig source (e.g. ~/src/shindig) as Eclipse won't allow you to create the Java project. &lt;/p&gt;     &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Something like     ~/eclipse/workspaces/shindig would work fine      &lt;/p&gt;    &lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;File -&gt; New -&gt; Java    Project     &lt;/p&gt;    &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Select 'Create project from     existing source' and navigate to:&lt;br /&gt;~/src/shindig/java/gadgets      &lt;/p&gt;     &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Click Finish      &lt;/p&gt;     &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;If you see a dialog for "Open Associated Perspective", click Ok. Don't worry about the errors after loading as they will be fixed in the next step. &lt;/p&gt;    &lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Right-click the project, select    Maven : Enable Dependency Management     &lt;/p&gt;    &lt;/li&gt;&lt;li&gt;&lt;p&gt;Right-click the project, select Maven : Update Source    Folders     &lt;/p&gt;   &lt;/li&gt;&lt;/ol&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;h4&gt;&lt;a name="caja" title="caja"&gt;&lt;/a&gt;Running with Caja   &lt;/h4&gt;  &lt;p&gt;Caja is an important part of OpenSocial that greatly enhances JavaScript security. Caja is managed in a separate open source project hosted by Google code projects. For more information on Caja, see: &lt;a href="http://code.google.com/p/google-caja/wiki/CajaEasyIntro"&gt;http://code.google.com/p/google-caja/wiki/CajaEasyIntro&lt;/a&gt;   &lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Load this page:   &lt;a href="http://localhost:8080/gadgets/samplecontainer/samplecontainer.html" target="_top"&gt;http://localhost:8080/gadgets/samplecontainer/samplecontainer.html&lt;/a&gt;     &lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;Point it to this gadget:   &lt;a href="http://www.google.com/url?sa=D&amp;amp;q=http%3A%2F%2Fhosting.gmodules.com%2Fig%2Fgadgets%2Ffile%2F117247905274371511495%2FSocialHelloWorld.xml" target="_top"&gt;http://hosting.gmodules.com/ig/gadgets/file/117247905274371511495/SocialHelloWorld.xml&lt;/a&gt;     &lt;/p&gt;  &lt;/li&gt;&lt;/ol&gt;  &lt;p&gt;To see the cajoled code (Firefox only), right-click inside the  iframe and do "This Frame -&gt; View Frame Source"&lt;/p&gt; &lt;/div&gt; &lt;div id="contributeDiv" dir="ltr"&gt;  &lt;h3 class="western"&gt;References&lt;/h3&gt; &lt;/div&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;a href="http://en.wikipedia.org/"&gt;http://en.wikipedia.org&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;            &lt;div class="weblog_keywords"&gt;             &lt;p&gt;                 Keywords: ASF, opensocial, shindig             &lt;/p&gt;             &lt;/div&gt;         &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-5491846667179615016?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/5491846667179615016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=5491846667179615016&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/5491846667179615016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/5491846667179615016'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/03/shindig-basics.html' title='Shindig Basics'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-8437334248314132874</id><published>2008-03-06T10:31:00.000+08:00</published><updated>2008-03-06T10:56:05.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='challenge'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Want some challenge?</title><content type='html'>&lt;p style="margin-bottom: 0in;"&gt;Want some challenge?  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Google Android has something right for you...&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;  &lt;/p&gt; &lt;p&gt;Google has launched the Android Developer Challenge, of  &lt;strong&gt;$10 million&lt;/strong&gt;&lt;b&gt; in awards &lt;/b&gt;&lt;span style=""&gt;for great and cool mobile applications built on the Android platform. &lt;/span&gt; &lt;/p&gt; &lt;h3 class="western"&gt;How It Works  &lt;/h3&gt; &lt;p&gt;The award money will be distributed equally between two Android Developer Challenges:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Android Developer Challenge I:  Submissions from January 2 through April 14, 2008   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;Android Developer Challenge II: This part will launch after  the first handsets built on the platform become available in the  second half of 2008   &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3 class="western"&gt;Build Your Favorite Mobile Application&lt;/h3&gt; &lt;p&gt;All types of applications are accepted as long as it is innovative and useful applications that make use of Android's capabilities to deliver a better mobile experience.  &lt;/p&gt; &lt;p&gt;Suggested areas of focus:  &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Social networking   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Media consumption, management,  editing, or sharing, e.g., photos   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Productivity and collaboration  such as email, IM, calendar, etc.   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Gaming   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;News and information   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Rethinking of traditional user  interfaces   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Use of mash-up functionality   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Use of location-based services   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Humanitarian benefits   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;Applications in service of global  economic development   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p&gt;Whatever you're excited about!   &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Reference/s:&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;a href="http://code.google.com/android/what-is-android.html"&gt;Google Android &lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-8437334248314132874?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/8437334248314132874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=8437334248314132874&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/8437334248314132874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/8437334248314132874'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/03/want-some-challenge.html' title='Want some challenge?'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-4023435597737423066</id><published>2008-03-06T10:21:00.000+08:00</published><updated>2008-12-09T23:11:13.216+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social networking'/><category scheme='http://www.blogger.com/atom/ns#' term='delicious'/><category scheme='http://www.blogger.com/atom/ns#' term='pageonce'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>On Social Networking</title><content type='html'>&lt;p style="margin-bottom: 0in;"&gt;Different social networking sites proliferates these days, and well am one of those millions of users.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;These are the social sites on my list:&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_I_EwMDjUD_s/R89V2GqHUZI/AAAAAAAAChA/5yQhtF-DQQc/s1600-h/delicious.42px.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_I_EwMDjUD_s/R89V2GqHUZI/AAAAAAAAChA/5yQhtF-DQQc/s320/delicious.42px.gif" alt="" id="BLOGGER_PHOTO_ID_5174448884860539282" border="0" /&gt;&lt;/a&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;&lt;strong&gt;Delicious&lt;/strong&gt; a social bookmarking site. &lt;p style="margin-bottom: 0in;"&gt;You can access you bookmarks anywhere without your pc! You're no longer dependent in your own machine for the pages that you bookmarked with.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_I_EwMDjUD_s/R89Wz2qHUaI/AAAAAAAAChI/Z3j_O9Y__VY/s1600-h/twitter.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_I_EwMDjUD_s/R89Wz2qHUaI/AAAAAAAAChI/Z3j_O9Y__VY/s320/twitter.png" alt="" id="BLOGGER_PHOTO_ID_5174449945717461410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Twitter &lt;/strong&gt;a micro-blogging site.&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt; Twitter lets you update what you've been doing and letting your followers/friends know it and you will be updated of your friends too. Quite helpful if your following interesting people, you'll learn cool and interesting things in just a matter of seconds. &lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;Another thing is tracking keywords in Twitter. Let's say your tracking google: “track google”. Just a simple entry but you IM goes ballistics! Whew! Imagine when you track google and each twitter user &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;around the globe who updates with the word google will be sent to you even if you're not friends. Quiet handy. &lt;img src="http://inside.manila.exist.com/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif" alt="Wink" title="Wink" border="0" /&gt; You can update using IM, Phone, Web, etc. You can use Twittr, Twitteriffic, Twitbin, TwitterFox, Twhirl, and lots of tools out there!&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;Facebook&lt;/strong&gt; for network of friends/social graph, joining a cause, and usually I visit it for gaming.&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt; Lots of 3&lt;sup&gt;rd&lt;/sup&gt; party applications to play around with. Some are helpful some are nuances that requires you to invite your friends before seeing the actual application itself. Beware you're data in FaceBook will remain even if you will delete your account. Yeah, they will delete your account but your data is Archived which means its still available (for them to use maybe) but just deactivated.  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;YouTube&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Well for videos YouTube is quite popular, though I use MySpaceTV sometimes.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;Friendster&lt;/strong&gt;  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;It needs further development but it's nice that they are adding 3&lt;sup&gt;rd&lt;/sup&gt; party applications now. They are now supporting Google's OpenSocial. &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Old friends are friendster users, well friendster is quite popular in the Philippines.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Lets you post pictures, bulletins, and giving testimonials or comments to friends. Spread some love! &lt;img src="http://inside.manila.exist.com/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif" alt="Laughing" title="Laughing" border="0" /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;Hi5/Imeem&lt;/strong&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; I usually use this sites for my music needs.  &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;PageOnce&lt;/strong&gt;&lt;img src="http://inside.manila.exist.com/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif" alt="Cool" title="Cool" border="0" /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;PageOnce is very useful if you have multiple email accounts and lots of social networking sites.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;It will let  you add all your accounts, so you can manage all your accounts in just one site. Great!&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;There are more social sites out there, connecting with your friends and learning sure brings the fun! &lt;img src="http://inside.manila.exist.com/mod/tinymce/lib/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif" alt="Laughing" title="Laughing" border="0" /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;strong&gt;What Social Networking Sites are you using? Why? &lt;/strong&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt; &lt;/p&gt;            &lt;div class="weblog_keywords"&gt;             &lt;p&gt;&lt;br /&gt;          &lt;/p&gt;             &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-4023435597737423066?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/4023435597737423066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=4023435597737423066&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/4023435597737423066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/4023435597737423066'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2008/03/on-social-networking.html' title='On Social Networking'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_I_EwMDjUD_s/R89V2GqHUZI/AAAAAAAAChA/5yQhtF-DQQc/s72-c/delicious.42px.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2278045605255062379.post-6842789457380845843</id><published>2007-12-14T11:44:00.000+08:00</published><updated>2008-01-22T19:10:34.547+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='canonical'/><title type='text'>Projects | Canonical</title><content type='html'>&lt;a href="http://canonical.com/projects"&gt;Projects | Canonical&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2278045605255062379-6842789457380845843?l=ggapol.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ggapol.blogspot.com/feeds/6842789457380845843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2278045605255062379&amp;postID=6842789457380845843&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/6842789457380845843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2278045605255062379/posts/default/6842789457380845843'/><link rel='alternate' type='text/html' href='http://ggapol.blogspot.com/2007/12/projects-canonical.html' title='Projects | Canonical'/><author><name>ggapol</name><uri>http://www.blogger.com/profile/11356968598419588513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://bp3.blogger.com/_I_EwMDjUD_s/R78eahw0vvI/AAAAAAAABGE/FzuWEGG9-as/S220/me.JPG'/></author><thr:total>0</thr:total></entry></feed>
