<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CU8CQnw5cSp7ImA9WhBbFUk.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606</id><updated>2013-05-14T23:04:23.229+08:00</updated><category term="800706ba" /><category term="Chinese Character" /><category term="liarliar" /><category term="Wordpress" /><category term="SQL" /><category term="Hack" /><category term="Encoding" /><category term="Bootstrap" /><category term="Amazon" /><category term="AsiaPay" /><category term="TinyMCE" /><category term="Customization" /><category term="Credit Card" /><category term="Thoughts" /><category term="APK" /><category term="CodeIgniter" /><category term="Windows" /><category term="Apple" /><category term="Firmware" /><category term="Fix" /><category term="Testing" /><category term="MongoDB" /><category term="make" /><category term="Openinviter" /><category term="Amazon EC2" /><category term="Git" /><category term="SKU" /><category term="Git Push" /><category term="eclipse" /><category term="Solution" /><category term="Fat-Free Framework" /><category term="News" /><category term="eBook" /><category term="Raspberry Pi" /><category term="SmartScreen" /><category term="jQuery" /><category term="MySQL" /><category term="CSS" /><category term="Javascript" /><category term="Macbook Pro" /><category term="Gmail" /><category term="XML" /><category term="Design" /><category term="AMI" /><category term="Tips" /><category term="DirectAdmin" /><category term="Zend" /><category term="Haskell" /><category term="Guide" /><category term="Bugs" /><category term="Bug Fix" /><category term="Cron" /><category term="CMS" /><category term="Notes" /><category term="CSC" /><category term="GPS" /><category term="i9100 Galaxy S2" /><category term="distclean" /><category term="PayDollar" /><category term="Github" /><category term="Excel" /><category term="Unix" /><category term="Windows Mobile" /><category term="Unicode Numeric Entities" /><category term="Technology" /><category term="Root" /><category term="ARM" /><category term="Windows Live" /><category term="Tutorial" /><category term="Hotmail" /><category term="RAM" /><category term="DMARC" /><category term="Test-case" /><category term="Programming" /><category term="i9000 Galaxy S" /><category term="Brainwave" /><category term="reCaptcha" /><category term="Chrome" /><category term="Leak" /><category term="Google Map" /><category term="Exim" /><category term="CyanogenMod" /><category term="Mozart Oz" /><category term="Android" /><category term="Facebook" /><category term="Rank" /><category term="DevCon" /><category term="Icons" /><category term="Windows 7" /><category term="Mobile" /><category term="i8000 Omnia 2" /><category term="Windwos 8" /><category term="snippet" /><category term="Tutorial Series" /><category term="Sleep Problem" /><category term="Android Market" /><category term="Messenger" /><category term="CSF" /><category term="About" /><category term="Magento" /><category term="Infographic" /><category term="BlackBerry" /><category term="Java" /><category term="Open Source" /><category term="Quick Start" /><category term="C#" /><category term="PHP" /><category term="Redis" /><category term="USB Startup" /><category term="Joomla" /><category term="Markdown" /><category term="Newline" /><category term="CSS3" /><category term="Acajoom" /><category term="VirtueMart" /><category term="Zend Framwork" /><category term="Ubuntu" /><category term="Samsung" /><category term="Asynchronous" /><category term="Kies" /><category term="Tips and Tricks" /><category term="Google Apps" /><category term="Rom" /><category term="Facebook Puzzle" /><category term="PHP Extensions" /><category term="Character" /><title>gbinghan[dev-blog]</title><subtitle type="html">/* Life runs on code */</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.gbinghan.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>97</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/gbinghan/IXhJ" /><feedburner:info uri="gbinghan/ixhj" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>gbinghan/IXhJ</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CU8CQnw_cSp7ImA9WhBbFUk.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-2194635115862073451</id><published>2013-05-14T23:04:00.001+08:00</published><updated>2013-05-14T23:04:23.249+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-14T23:04:23.249+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><category scheme="http://www.blogger.com/atom/ns#" term="Brainwave" /><title>List of Brainwave Headbands</title><content type="html">&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-_xDp5Kt9Y40/UZJRb9x4Q-I/AAAAAAAAaoc/xuSyqMCWni8/s1600/b5c4122addff09ef6d6476f5733ff998_large.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="179" src="http://2.bp.blogspot.com/-_xDp5Kt9Y40/UZJRb9x4Q-I/AAAAAAAAaoc/xuSyqMCWni8/s320/b5c4122addff09ef6d6476f5733ff998_large.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Melon&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;Melon - $79 on Kickstarter&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Webpage: &lt;a href="http://www.usemelon.com/"&gt;http://www.usemelon.com/&lt;/a&gt;&lt;br /&gt;
Kickstarter:&amp;nbsp;&lt;a href="http://www.kickstarter.com/projects/806146824/melon-a-headband-and-mobile-app-to-measure-your-fo"&gt;http://www.kickstarter.com/projects/806146824/melon-a-headband-and-mobile-app-to-measure-your-fo&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YAcNDRf51oQ/UZJRDHx6bOI/AAAAAAAAaoU/Um1W2YdHOg4/s1600/banner_image_1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="136" src="http://1.bp.blogspot.com/-YAcNDRf51oQ/UZJRDHx6bOI/AAAAAAAAaoU/Um1W2YdHOg4/s320/banner_image_1.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Muse&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;b&gt;Muse - $199&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Webpage:&amp;nbsp;&lt;a href="http://www.interaxon.ca/muse/"&gt;http://www.interaxon.ca/muse/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/RZ1RjBVXIJo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/2194635115862073451/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2013/05/list-of-brainwave-headbands.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2194635115862073451?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2194635115862073451?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/RZ1RjBVXIJo/list-of-brainwave-headbands.html" title="List of Brainwave Headbands" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-_xDp5Kt9Y40/UZJRb9x4Q-I/AAAAAAAAaoc/xuSyqMCWni8/s72-c/b5c4122addff09ef6d6476f5733ff998_large.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2013/05/list-of-brainwave-headbands.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAEQHk9eSp7ImA9WhBbFEQ.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-3904935120396635144</id><published>2013-05-14T10:31:00.000+08:00</published><updated>2013-05-14T10:31:41.761+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-14T10:31:41.761+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Testing" /><category scheme="http://www.blogger.com/atom/ns#" term="AsiaPay" /><category scheme="http://www.blogger.com/atom/ns#" term="PayDollar" /><category scheme="http://www.blogger.com/atom/ns#" term="Credit Card" /><title>PayDollar Test Credit Cards</title><content type="html">Was looking for Test Credit cards to test integration with AsiaPay/PayDollar via Google but couldn't find any. But manage to find one in the &lt;a href="https://test.paydollar.com/b2cDemo/eng/merchant/support/php_DirectServerSide_EN.zip"&gt;PHP sample source code&lt;/a&gt;.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Card number:&amp;nbsp;4918914107195005&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;CCV: 123&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Expiry Date: 07 2015&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Card Holder: Test Card&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Extras&lt;/u&gt;.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
For first timer like me, I find PayDollar website &amp;amp; documentation slightly messy, and sometimes, the links on the site are broken.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Integration Guide&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;a href="http://www.paydollar.com/eng/index.html"&gt;Home Page&lt;/a&gt;, &lt;a href="http://www.paydollar.com/pdf/PayDollar%20PayGate%20Integration%20Guide%20(v3.21).pdf"&gt;v3.21&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;Sample Source Codes&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Can be found in&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="font-family: Courier New, Courier, monospace;"&gt;Merchant Administration page &amp;gt; Support &amp;gt;&amp;nbsp;Developer Corner&lt;/span&gt;&lt;/blockquote&gt;
The direct links are as follow:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Client Post: &lt;a href="https://test.paydollar.com/b2cDemo/eng/merchant/support/php_SimpleClientPost_EN.zip"&gt;PHP&lt;/a&gt;&lt;br /&gt;
Direct Client Side: &lt;a href="https://test.paydollar.com/b2cDemo/eng/merchant/support/php_DirectClientPost_EN.zip"&gt;PHP&lt;/a&gt;&lt;br /&gt;
Direct Server Side: &lt;a href="https://test.paydollar.com/b2cDemo/eng/merchant/support/php_DirectServerSide_EN.zip"&gt;PHP&lt;/a&gt;&lt;/blockquote&gt;
&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/VZoCQVDRepA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/3904935120396635144/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2013/05/paydollar-test-credit-cards.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/3904935120396635144?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/3904935120396635144?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/VZoCQVDRepA/paydollar-test-credit-cards.html" title="PayDollar Test Credit Cards" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2013/05/paydollar-test-credit-cards.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQGRXY6eCp7ImA9WhNWEUw.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-2441897377950950595</id><published>2012-12-10T12:20:00.001+08:00</published><updated>2012-12-10T12:22:04.810+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-10T12:22:04.810+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Github" /><category scheme="http://www.blogger.com/atom/ns#" term="Markdown" /><title>GitHub Wiki - Anchor link for page headers</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="267" src="http://2.bp.blogspot.com/-wEey-e-XBkg/UMVfYg_oErI/AAAAAAAAVCQ/dbTknXGSwTE/s320/Capture.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Example &lt;a href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet"&gt;"Table of Content"&lt;/a&gt; on &lt;a href="https://github.com/adam-p/markdown-here"&gt;"markdown-here"&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Was trying to do a &lt;i&gt;table of content&lt;/i&gt;&amp;nbsp;in Github Wiki just now and realize there aren't much guide on that. After searching for a while, I found this &lt;a href="https://github.com/github/gollum/issues/229#issuecomment-5564305"&gt;comment on Github&lt;/a&gt; that shows how to do it.&lt;br /&gt;
&lt;br /&gt;
1. Add anchor for the header that you want to link to&lt;br /&gt;
&lt;pre style="background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;"&gt;&lt;code style="background-color: transparent; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;# &amp;lt;a name="heading1"/&amp;gt; Heading 1&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
2. Add the link to the anchor&lt;br /&gt;
&lt;pre style="background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;"&gt;&lt;code style="background-color: transparent; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px;"&gt;[link to heading 1](#wiki-heading1)&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/4248353.js?file=gistfile1.md"&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/ZVUs2ue69WM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/2441897377950950595/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/12/github-wiki-anchor-link-for-page-headers.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2441897377950950595?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2441897377950950595?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/ZVUs2ue69WM/github-wiki-anchor-link-for-page-headers.html" title="GitHub Wiki - Anchor link for page headers" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-wEey-e-XBkg/UMVfYg_oErI/AAAAAAAAVCQ/dbTknXGSwTE/s72-c/Capture.PNG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/12/github-wiki-anchor-link-for-page-headers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCRn09eyp7ImA9WhJWE0Q.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-198978034133381627</id><published>2012-08-19T23:46:00.000+08:00</published><updated>2012-08-19T23:51:07.363+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-19T23:51:07.363+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="AMI" /><category scheme="http://www.blogger.com/atom/ns#" term="Amazon EC2" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP Extensions" /><title>Amazon AMI install MongoDB Driver</title><content type="html">Did an installation of MongoDB driver for PHP on my Amazon EC2 AMI just now. And thought of noting the steps down.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Prerequisites&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
Make sure the following packages are installed.&lt;br /&gt;
&lt;pre class="lang-php prettyprint" style="background-color: #eeeeee; border: 0px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;$ sudo yum install gcc
$ sudo yum install make

$ &lt;/span&gt;&lt;/code&gt;&lt;span style="background-color: transparent; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px;"&gt;sudo yum install httpd mod_ssl
$ &lt;/span&gt;&lt;span style="background-color: transparent; font-size: 14px; line-height: 18px;"&gt;&lt;span style="font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;"&gt;sudo yum install php
$ sudo yum install php-devel php-pear
$ sudo yum install pcre-devel&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Install MongoDB driver for Amazon Linux&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
Installing Mongo driver.&lt;br /&gt;
&lt;pre class="lang-php prettyprint" style="background-color: #eeeeee; border: 0px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;$ sudo pecl install mongo&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Enable the driver
&lt;br /&gt;
&lt;pre class="lang-php prettyprint" style="background-color: #eeeeee; border: 0px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;$ sudo vi /etc/php.d/mongo.ini
$ extension=mongo.so
$ sudo  /sbin/service httpd restart&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style="font-size: large;"&gt;
Testing&lt;/span&gt;&lt;/h3&gt;
The simplest way to check whether the installation is successful is via &lt;span style="font-family: Courier New, Courier, monospace;"&gt;phpinfo()&lt;/span&gt;.&lt;br /&gt;
&lt;pre class="lang-php prettyprint" style="background-color: #eeeeee; border: 0px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&amp;lt;?php
  phpinfo();
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
And you should see the following section:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-RaKitPuQ8Cg/UDEKwrq7yvI/AAAAAAAARV0/3CYbz0UXOpo/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="261" src="http://4.bp.blogspot.com/-RaKitPuQ8Cg/UDEKwrq7yvI/AAAAAAAARV0/3CYbz0UXOpo/s400/Capture.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Or test the connection using the code snippet below :)&lt;br /&gt;
&lt;pre class="lang-php prettyprint" style="background-color: #eeeeee; border: 0px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&amp;lt;?php
 // connect
 $m = new Mongo("mongodb://mongodb-user:mongodb-password@ds031087.mongolab.com:31087/sample-test-mongodb");
 
 // select a database
 $db = $m-&amp;gt;{"sample-test-mongodb"};
 
 // select a collection (analogous to a relational database's table)
 $collection = $db-&amp;gt;cartoons;
 
 // add a record
 $obj = array( "title" =&amp;gt; "Calvin and Hobbes", "author" =&amp;gt; "Bill Watterson" );
 // $collection-&amp;gt;insert($obj);
 
 // add another record, with a different "shape"
 $obj = array( "title" =&amp;gt; "XKCD", "online" =&amp;gt; true );
 // $collection-&amp;gt;insert($obj);
 
 // find everything in the collection
 $cursor = $collection-&amp;gt;find();
 
 // iterate through the results
 foreach ($cursor as $obj) {
     echo $obj["title"] . "\n";
 }
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
And you should see following output in browser:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-yOa3B5tKc7w/UDEK7rSh6OI/AAAAAAAARV8/NYJnoAC1Hcw/s1600/Capture2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://4.bp.blogspot.com/-yOa3B5tKc7w/UDEK7rSh6OI/AAAAAAAARV8/NYJnoAC1Hcw/s400/Capture2.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Its quite simple, but hope this help beginners out there :)&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/lDEwr4WavNg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/198978034133381627/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/08/amazon-ami-install-mongodb-driver.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/198978034133381627?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/198978034133381627?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/lDEwr4WavNg/amazon-ami-install-mongodb-driver.html" title="Amazon AMI install MongoDB Driver" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-RaKitPuQ8Cg/UDEKwrq7yvI/AAAAAAAARV0/3CYbz0UXOpo/s72-c/Capture.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/08/amazon-ami-install-mongodb-driver.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQMQXY9fSp7ImA9WhJSFEU.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-220728764310465911</id><published>2012-07-05T17:54:00.000+08:00</published><updated>2012-07-05T17:59:40.865+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-05T17:59:40.865+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TinyMCE" /><category scheme="http://www.blogger.com/atom/ns#" term="Encoding" /><category scheme="http://www.blogger.com/atom/ns#" term="Chinese Character" /><category scheme="http://www.blogger.com/atom/ns#" term="Unicode Numeric Entities" /><title>Encoding issue with Chinese characters</title><content type="html">Was having issue with encoding on PHP (server side) to be printed out on via Javascript (client side).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style="color: red;"&gt;The problem&lt;/span&gt;&lt;/h3&gt;
The Chinese characters were fine when output directly from PHP, became garbled after encoded and decoded on using javascript.&lt;br /&gt;
&lt;pre class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;printf('document.write(unescape("%s"));', rawurlencode($data));&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-jiXbs3SoVBc/T_VgPmvVnhI/AAAAAAAAPkQ/LnCEYql7boc/s1600/2012-07-05_1734.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://1.bp.blogspot.com/-jiXbs3SoVBc/T_VgPmvVnhI/AAAAAAAAPkQ/LnCEYql7boc/s640/2012-07-05_1734.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;span style="color: blue;"&gt;Solution&lt;/span&gt;&lt;/h3&gt;
After Googled for a while I realize the best solution, I think, is to convert the foreign characters to&amp;nbsp;&lt;a href="http://tlt.its.psu.edu/suggestions/international/web/tips/unicodefourdigit.html"&gt;unicode numeric entities&lt;/a&gt;. Example:&lt;br /&gt;
&lt;table class="table table-stripped"&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;Numeric Code&lt;/td&gt; &lt;td&gt;HTML Entity Code&lt;/td&gt; &lt;td&gt;Result&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;256&lt;/td&gt; &lt;td&gt;&amp;amp;#256&lt;/td&gt; &lt;td&gt;Ā&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;h4&gt;
Solution for PHP&lt;/h4&gt;
For PHP there's a simple solution: &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;a href="http://php.net/manual/en/function.mb-encode-numericentity.php"&gt;mb_encode_numericentity()&lt;/a&gt;&lt;/span&gt;. Luckily the &lt;i&gt;convmap&lt;/i&gt; for conversion (excluding HTML character) are in the comment. (As pointed in &lt;a href="http://stackoverflow.com/questions/3005116/how-to-convert-all-characters-to-their-html-entity-equivalent-using-php"&gt;http://stackoverflow.com/a/3116893&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;function convertToNumericEntities($string) {
&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; $convmap = array(0x80, 0x10ffff, 0, 0xffffff);
&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; return mb_encode_numericentity($string, $convmap, "UTF-8");
&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Solution TinyMCE&lt;/h4&gt;
If you are using &lt;b&gt;TinyMCE&lt;/b&gt;, this can be solved by enabling "numeric" for entity_encoding.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;tinyMCE.init({
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; entity_encoding : "numeric"
});&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
More info&amp;nbsp;&lt;a href="http://www.tinymce.com/wiki.php/Configuration:entity_encoding"&gt;http://www.tinymce.com/wiki.php/Configuration:entity_encoding&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/3005116/how-to-convert-all-characters-to-their-html-entity-equivalent-using-php"&gt;http://stackoverflow.com/a/3116893&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.php.net/manual/en/function.mb-encode-numericentity.php#29839"&gt;http://www.php.net/manual/en/function.mb-encode-numericentity.php#29839&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.tinymce.com/forum/viewtopic.php?pid=63319"&gt;http://www.tinymce.com/forum/viewtopic.php?pid=63319&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/4691477/php-converting-unicode-strings-to-ansi-strings"&gt;http://stackoverflow.com/questions/4691477/php-converting-unicode-strings-to-ansi-strings&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/iJkbGHfFME0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/220728764310465911/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/07/encoding-issue-with-chinese-characters.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/220728764310465911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/220728764310465911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/iJkbGHfFME0/encoding-issue-with-chinese-characters.html" title="Encoding issue with Chinese characters" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-jiXbs3SoVBc/T_VgPmvVnhI/AAAAAAAAPkQ/LnCEYql7boc/s72-c/2012-07-05_1734.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/07/encoding-issue-with-chinese-characters.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ANQH4zfyp7ImA9WhJTFU8.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-5515103923297619335</id><published>2012-06-24T16:16:00.001+08:00</published><updated>2012-06-24T16:16:31.087+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-24T16:16:31.087+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Character" /><title>Uncaught SyntaxError: Unexpected token ILLEGAL</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/--IahcSwXWtY/T-bLrSoVl-I/AAAAAAAAPb0/7vcx2_XeNKk/s1600/2012-06-24_1610.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="133" src="http://2.bp.blogspot.com/--IahcSwXWtY/T-bLrSoVl-I/AAAAAAAAPb0/7vcx2_XeNKk/s320/2012-06-24_1610.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Was coding in NetBeans just now and stumbled upon this error:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="color: red; font-family: 'Courier New', Courier, monospace;"&gt;Uncaught SyntaxError: Unexpected token ILLEGAL&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
I'm very sure there is no syntax error on that line. But chrome just wouldn't stop complaining about it.&lt;br /&gt;
After debugging for a while, I realize its the extra unidentified character (space/eol) that is causing the error.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-GKQyp_pDw1Y/T-bLvVjPeZI/AAAAAAAAPb8/r7CBYN6N9Gk/s1600/2012-06-24_1609.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="105" src="http://4.bp.blogspot.com/-GKQyp_pDw1Y/T-bLvVjPeZI/AAAAAAAAPb8/r7CBYN6N9Gk/s320/2012-06-24_1609.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Deleting that solves the problem :)&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/gJh-23IKImY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/5515103923297619335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/06/uncaught-syntaxerror-unexpected-token.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/5515103923297619335?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/5515103923297619335?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/gJh-23IKImY/uncaught-syntaxerror-unexpected-token.html" title="Uncaught SyntaxError: Unexpected token ILLEGAL" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/--IahcSwXWtY/T-bLrSoVl-I/AAAAAAAAPb0/7vcx2_XeNKk/s72-c/2012-06-24_1610.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/06/uncaught-syntaxerror-unexpected-token.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cARXs6cCp7ImA9WhVaFU0.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-8556864023965662945</id><published>2012-06-12T21:50:00.001+08:00</published><updated>2012-06-12T21:50:44.518+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-12T21:50:44.518+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Thoughts" /><category scheme="http://www.blogger.com/atom/ns#" term="Windwos 8" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="Macbook Pro" /><title>Macbook Pro - Signals the Transitions of Computing Devices</title><content type="html">Just read a post on the &lt;a href="http://massivegreatness.com/to-buy-or-not-to-buy"&gt;new Retina MPB to buy or not to buy&lt;/a&gt;,&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
...we just happen to be at the beginning of a transition of the Mac into its next phase. In some ways, this is a mid-life crisis.&lt;/blockquote&gt;
&lt;br /&gt;
and &lt;a href="https://www.facebook.com/RobertScoble/posts/245135688933875"&gt;Robert Scoble's Facebook post&lt;/a&gt; on touch screen devices.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Looking at my life and that of my coworkers I'm seeing less and less of a reason to stick with a traditional laptop.&amp;nbsp;&lt;/blockquote&gt;
&lt;br /&gt;
I'm also very certain that this is the transition period for computing devices. Transitions from traditional laptops to ultra-portable high performance touchscreen devices.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
High Performance Computing Notebook&lt;/h3&gt;
Looking at the &lt;a href="http://www.apple.com/macbook-pro/specs/"&gt;new MBP&lt;/a&gt; :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Ultra-portable - 0.71", 2kg&lt;/li&gt;
&lt;li&gt;512GB flash storage&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
You can almost anything on-the-go with this new notebook - compile source codes, render HD videos, or even play games. It would be hard to imagine any would still get an iMac, unless you are going for serious 3D/HD graphics rendering with 16GB RAM and SSDs.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Looking at the trend, I couldn't agree more with&amp;nbsp;&lt;a href="https://www.facebook.com/parislemon"&gt;MG Siegler&lt;/a&gt; that its just a matter of time before Macbook Air will be merged back in the Macbook Pro branch.&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
I also imagined Apple dropping the “Air” appendage and resurrecting the “MacBook” brand once again in the name of simplicity. But that clearly isn't happening either. At least not yet.&lt;br /&gt;
- MG Siegler&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Touch Screen Computing Notebook&lt;/h3&gt;
On the other side of the spectrum, we can clearly see that Microsoft is pushing hard for touchscreen based devices. Windows 8 engineered for this purpose. Got a couple of chances to hand-on with the non-office tablets with Windows 8 on it. Its very responsive and the flow of content display is just natural.&lt;br /&gt;
&lt;br /&gt;
Imagine you can dock your tablet and it instantly turns into a workstation, and when you undock it changes back to the presentation mode. You can carry it around, scribble notes on it on the go, or just show slides to your friends/client instantly. That is how things work in the near future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The Future&lt;/h3&gt;
Everyone wants ONE device that you can do ALL task on it. And its undoubtedly clear that the shift has already started.&amp;nbsp;I'm sure all these changes will converge at some point in the near future.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/ahl0DdlX240" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/8556864023965662945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/06/macbook-pro-signals-transitions-of.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8556864023965662945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8556864023965662945?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/ahl0DdlX240/macbook-pro-signals-transitions-of.html" title="Macbook Pro - Signals the Transitions of Computing Devices" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/06/macbook-pro-signals-transitions-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AER348cSp7ImA9WhJVEk8.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-4585929641725989351</id><published>2012-05-28T00:54:00.002+08:00</published><updated>2012-08-29T14:28:26.079+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-29T14:28:26.079+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Git" /><category scheme="http://www.blogger.com/atom/ns#" term="Git Push" /><category scheme="http://www.blogger.com/atom/ns#" term="Amazon EC2" /><category scheme="http://www.blogger.com/atom/ns#" term="Amazon" /><title>Setting up Repo on Amazon EC2 for Git Push</title><content type="html">Was trying to setup an instance on Amazon which I can do a &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;git push&lt;/b&gt;&lt;/span&gt; to update the /var/www/html folder. Decided to share the steps here, so that other beginners like me can benefit too!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;



&lt;b&gt;&lt;span style="font-size: large;"&gt;Prerequisites&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h3&gt;



&lt;b&gt;&lt;u&gt;Setting up Amazone Instance&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
This &lt;a href="http://www.activecampaign.com/help/installing-activecampaign-on-amazon-ec2/"&gt;article&lt;/a&gt;&amp;nbsp;basically covers all the steps need to fire-up an instance and set the &lt;i&gt;Security Group&lt;/i&gt; and &lt;i&gt;SSH&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;



&lt;b&gt;&lt;u&gt;Install LAMP + phpMyAdmin&lt;/u&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
Install &lt;i&gt;LAMP&lt;/i&gt; stack is easy, but install &lt;i&gt;phpMyAdmin&lt;/i&gt; is slightly tricky. Luckily this &lt;a href="https://gist.github.com/1105007"&gt;github gist&lt;/a&gt; explained the steps very well.&lt;br /&gt;
&lt;br /&gt;
The only missing part that you might want to take note is the part to change the user of the html directory.&lt;br /&gt;
&lt;blockquote class="tr_bq" style="background-color: #eeeeee;"&gt;
&lt;span style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; text-align: left;"&gt;sudo chown -R ec2-user /var/www/html/&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;



&lt;b&gt;&lt;span style="font-size: large;"&gt;Setting up Git&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h3&gt;



&lt;b&gt;Setting Up Git Repo to work with &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/var/www/html&lt;/span&gt; folder&lt;/b&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;At first I tried this solution from&amp;nbsp;&lt;a href="http://stackoverflow.com/a/327315/972901"&gt;stackoverflow post&lt;/a&gt;. The method is:&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Copying &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;.git&lt;/span&gt; folder to &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/var/www/html/&lt;/span&gt; folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Then use a &lt;a href="http://utsl.gen.nz/git/post-update"&gt;post-update&lt;/a&gt; script to update the git repo.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span style="font-size: x-small;"&gt;The idea looks logical, and easy to understand, but I just couldn't get it to work.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then I found this &lt;a href="http://toroid.org/ams/git-website-howto"&gt;article&lt;/a&gt;, by &lt;a href="http://toroid.org/ams/"&gt;Abhijit Menon-Sen&lt;/a&gt;, that magically reduces the steps to just 1 git command. So basically what you need to do is just 3 steps&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;On your EC2 server&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
1. Create a bare repository.&lt;br /&gt;
&lt;blockquote class="tr_bq" style="background-color: #eeeeee;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ mkdir &lt;span style="background-color: yellow;"&gt;&amp;lt;your-repo-name&amp;gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;.git&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #eeeeee;"&gt;$ cd &lt;/span&gt;&lt;span style="background-color: yellow;"&gt;&amp;lt;your-repo-name&amp;gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;.git&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #eeeeee;"&gt; $ git init --bare&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #eeeeee;"&gt; Initialized empty Git repository in /home/ec2-user/&lt;/span&gt;&lt;span style="background-color: yellow;"&gt;&amp;lt;your-repo-name&amp;gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;.git/&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
2. Use GIT_WORK_TREE&lt;br /&gt;
&lt;blockquote class="tr_bq" style="background-color: #eeeeee;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ mkdir /var/www/html&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ cat &amp;gt; hooks/post-receive&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;GIT_WORK_TREE=/var/www/html git checkout -f&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ chmod +x hooks/post-receive&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;u&gt;On your local computer.&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
3. Setup SSH (this is missing from the guide). If not, you might get git push fail in the next step.&lt;br /&gt;
&lt;blockquote class="tr_bq" style="background-color: #eeeeee;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="background-color: #eeeeee;"&gt;ssh-add /&lt;/span&gt;&lt;span style="background-color: yellow;"&gt;&amp;lt;path-to-your-ec2-ssh-key&amp;gt;.pem&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
4. Add Git remote and push for the first time.&lt;br /&gt;
&lt;blockquote class="tr_bq" style="background-color: #eeeeee;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="background-color: #eeeeee;"&gt;$ git remote add production ssh://&lt;/span&gt;&lt;span style="background-color: yellow;"&gt;&amp;lt;your-amazon-server-address&amp;gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;/home/ec2-user/&lt;/span&gt;&lt;span style="background-color: yellow;"&gt;&amp;lt;your-repo-name&amp;gt;&lt;/span&gt;&lt;span style="background-color: #eeeeee;"&gt;.git&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: #eeeeee;"&gt; $ git push production +master:refs/heads/master&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
Tips: You can setup for different environment, e.g. "testing", "beta", the same way. Just change the remote name, and push! :)&lt;br /&gt;
&lt;br /&gt;
5. Subsequently, for every changes, you just need:&lt;br /&gt;
&lt;blockquote class="tr_bq" style="background-color: #eeeeee;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ git push origin &amp;nbsp;// update your github-repo&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$ git push production&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
It took me the whole night just to get this done. Hope this can save your time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;



References:&lt;/h4&gt;
&lt;a href="http://stackoverflow.com/questions/279169/deploy-a-project-using-git-push"&gt;http://stackoverflow.com/questions/279169/deploy-a-project-using-git-push&lt;/a&gt;
&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/4632749/how-to-push-to-git-on-ec2"&gt;http://stackoverflow.com/questions/4632749/how-to-push-to-git-on-ec2&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/nm3EPzinGv0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/4585929641725989351/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/05/setting-up-repo-on-amazon-ec2-for-git.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4585929641725989351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4585929641725989351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/nm3EPzinGv0/setting-up-repo-on-amazon-ec2-for-git.html" title="Setting up Repo on Amazon EC2 for Git Push" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/05/setting-up-repo-on-amazon-ec2-for-git.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEESHY4fSp7ImA9WhVWGEU.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-8868242335656641612</id><published>2012-05-01T22:27:00.002+08:00</published><updated>2012-05-01T22:30:09.835+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-01T22:30:09.835+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="distclean" /><category scheme="http://www.blogger.com/atom/ns#" term="Redis" /><category scheme="http://www.blogger.com/atom/ns#" term="make" /><title>Installing Redis: jemalloc/jemalloc.h: No such file or directory</title><content type="html">Was trying to install Redis on my EC2 test server just now and bump into this error.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="color: red;"&gt;zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory&lt;/span&gt;&lt;/blockquote&gt;
I was very sure that jemalloc was installed.&lt;br /&gt;
&lt;br /&gt;
After searching for a while, I found the solution from redis-db Google Group.&lt;br /&gt;
&lt;br /&gt;
Apparently, running&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;make distclean&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
solves the problem. It remove all compilation artifacts, and dependencies.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-cBLB2x_Is5M/T5_ynoQ0xrI/AAAAAAAAMCA/U8f4ceU4YGg/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-cBLB2x_Is5M/T5_ynoQ0xrI/AAAAAAAAMCA/U8f4ceU4YGg/s400/Capture.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
:)&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/tX1EgV54bfk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/8868242335656641612/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/05/installing-redis-jemallocjemalloch-no.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8868242335656641612?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8868242335656641612?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/tX1EgV54bfk/installing-redis-jemallocjemalloch-no.html" title="Installing Redis: jemalloc/jemalloc.h: No such file or directory" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-cBLB2x_Is5M/T5_ynoQ0xrI/AAAAAAAAMCA/U8f4ceU4YGg/s72-c/Capture.JPG" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/05/installing-redis-jemallocjemalloch-no.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QCR38zeCp7ImA9WhVWE04.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-2727402301706774323</id><published>2012-04-25T13:21:00.004+08:00</published><updated>2012-04-25T13:22:46.180+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-25T13:22:46.180+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TinyMCE" /><category scheme="http://www.blogger.com/atom/ns#" term="Asynchronous" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>Reintialize TinyMCE after jQuery Load</title><content type="html">Bump into the problem of reintializing TinyMCE textbox after replacing the DOM with jQuery load.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;The Problem&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="color: red;"&gt;After saving a form on a page (with multiple forms), I did a &lt;a href="http://api.jquery.com/load/"&gt;jQuery.load()&lt;/a&gt; to replace the DOM of the particular section.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: red;"&gt;Then I run the initialization function to reinitialize all DOMs, including TinyMCE. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: red;"&gt;I realized TinyMCE contents is not saved after this.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;b&gt;Solution: Initial attempt&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
After Google-ed for a while, I found this solution from &lt;a href="http://stackoverflow.com/a/8034210"&gt;StackOverflow&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;tinymce.execCommand('mceRemoveControl', true, 'editor_id');&lt;/pre&gt;&lt;br /&gt;
So, to use it, it would be...&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;_init = function() {

 /* Some other initialization code here */
 tinymce.execCommand('mceRemoveControl', true, 'editor_id');&lt;/pre&gt;&lt;pre&gt;tinyMCE.init({
  /* TinyMCE options */
 });
}&lt;/pre&gt;&lt;br /&gt;
Oh, wait...&lt;br /&gt;
&lt;br /&gt;
Some issues:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="color: red;"&gt;My '&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;editor_id&lt;/span&gt;' is dynamic...&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color: red;"&gt;I have multiple textboxes&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;b&gt;Solution: Second attempt.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Easy. Just use &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;jQuery.each()&lt;/span&gt; to loop through all the textbox and remove TinyMCE control from each of them.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;_init = function() {
 jQuery('textarea').each(function() {
  try {
   tinymce.execCommand('mceRemoveControl', true, jQuery(this).attr('id'));
  } catch(e) {
  }
 })
 tinyMCE.init({
  /* TinyMCE options */
 });
}&lt;/pre&gt;&lt;br /&gt;
Oh, wait... again...&lt;br /&gt;
&lt;br /&gt;
Some more issues:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span style="color: red;"&gt;Due to asynchronous nature of Javascript,&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;tinyMCE.init()&lt;/span&gt; will be executed befure&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;jQuery.each()&lt;/span&gt; finishes.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Final Solution&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Chain the functions together with &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;jQuery.promise()&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;jQuery('textarea').each(function() {
 try {
  tinymce.execCommand('mceRemoveControl', true, jQuery(this).attr('id'));
 } catch(e) {
 }
  
}).promise().done( function() {
 tinyMCE.init({
  /* TinyMCE options */
 });
});&lt;/pre&gt;&lt;br /&gt;
:)&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/kZIsmQuPlxg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/2727402301706774323/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/04/reintialize-tinymce-after-jquery-load.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2727402301706774323?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2727402301706774323?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/kZIsmQuPlxg/reintialize-tinymce-after-jquery-load.html" title="Reintialize TinyMCE after jQuery Load" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/04/reintialize-tinymce-after-jquery-load.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QDSX4yeCp7ImA9WhVWGUs.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-8444953367210243653</id><published>2012-04-21T14:37:00.000+08:00</published><updated>2012-05-02T21:29:38.090+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-02T21:29:38.090+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Samsung" /><category scheme="http://www.blogger.com/atom/ns#" term="i9100 Galaxy S2" /><title>[Guide] Samsung Galaxy S2 ICS</title><content type="html">For those of you who are like me - too impatient to wait for &lt;b&gt;Samsung Singapore&lt;/b&gt; to release ICS update for i9100 Galaxy S2, can follow the following steps to flash to ICS (and in addition, flash to CM9).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style="color: #666666; font-size: large;"&gt;Ice Cream&amp;nbsp;Sandwich&amp;nbsp;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NL8toVSA-1Q/T5JoQL9W3mI/AAAAAAAAK-g/BHdf5yXY5Xw/s1600/Screenshot_2012-04-21-13-52-24.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-NL8toVSA-1Q/T5JoQL9W3mI/AAAAAAAAK-g/BHdf5yXY5Xw/s320/Screenshot_2012-04-21-13-52-24.png" width="192" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Android I9100XWLP7&amp;nbsp;4.0.3&amp;nbsp;(United Kingdom / Ireland)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
1. Download ICS firmware&lt;br /&gt;
&lt;a href="http://www.hotfile.com/dl/153177481/9861a3a/I9100XWLP7_I9100XEULP5_XEU.zip.html"&gt;http://www.hotfile.com/dl/153177481/9861a3a/I9100XWLP7_I9100XEULP5_XEU.zip.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Boot into Download Mode&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Turn off phone.&lt;/li&gt;
&lt;li&gt;Vol Down + Home + Power&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Odin Flash Guide&lt;br /&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=1075278"&gt;http://forum.xda-developers.com/showthread.php?t=1075278&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=1406664"&gt;http://forum.xda-developers.com/showthread.php?t=1406664&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq" style="background: #EFEFEF; border-radius: 5px; padding: 10px;"&gt;
&lt;span style="font-size: x-small;"&gt;ICS is cool, but... the official ROM is still laggy. So I decided to take further steps to mod it to CyanogenMod.&lt;br /&gt;
So if you are like me, want a smooth UX, follow the following optional steps :)&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;span style="color: #666666; font-size: large;"&gt;Root&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
3. CF-root by &lt;a href="http://forum.xda-developers.com/member.php?u=631273"&gt;Chainfire&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=1103399"&gt;http://forum.xda-developers.com/showthread.php?t=1103399&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
4. Remove Yellow Triangle during startup, using &lt;a href="https://play.google.com/store/apps/details?id=eu.chainfire.triangleaway"&gt;TriangleAway&lt;/a&gt; from &lt;a href="http://forum.xda-developers.com/member.php?u=631273"&gt;Chainfire&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=1494114&amp;amp;highlight=remove+yellow+triangle"&gt;http://forum.xda-developers.com/showthread.php?t=1494114&amp;amp;highlight=remove+yellow+triangle&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style="color: #666666; font-size: large;"&gt;CyanogenMod&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-c7PT8SaHa-4/T5JoSwTkXYI/AAAAAAAAK_A/S7srSBxULrQ/s1600/Screenshot_2012-04-21-15-28-52.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-c7PT8SaHa-4/T5JoSwTkXYI/AAAAAAAAK_A/S7srSBxULrQ/s320/Screenshot_2012-04-21-15-28-52.png" width="192" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;CyanogenMod Trebuchet. Sweet! :)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Download CM Builds&lt;br /&gt;
&lt;a href="http://download.cyanogenmod.com/?type=nightly&amp;amp;device=galaxys2"&gt;http://download.cyanogenmod.com/?type=nightly&amp;amp;device=galaxys2&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
6. Boot into ClockworkMod Recovery&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Turn off phone.&lt;/li&gt;
&lt;li&gt;Vol Up + Home + Power&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
7. CM9 Flash Guide&lt;br /&gt;
&lt;a href="http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S_II:_Full_Update_Guide"&gt;http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S_II:_Full_Update_Guide&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9RqaD8j73Ek/T5JoPqZxd6I/AAAAAAAAK-c/TH4sBgdYMnE/s1600/Screenshot_2012-04-21-14-22-40.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-9RqaD8j73Ek/T5JoPqZxd6I/AAAAAAAAK-c/TH4sBgdYMnE/s320/Screenshot_2012-04-21-14-22-40.png" width="192" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Version Info :)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style="color: #666666; font-size: large;"&gt;EXTRA Goodies :p&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UcacfmBfjAg/T5JoRtjLtFI/AAAAAAAAK-w/2km8dpw_urg/s1600/Screenshot_2012-04-21-15-29-04.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-UcacfmBfjAg/T5JoRtjLtFI/AAAAAAAAK-w/2km8dpw_urg/s320/Screenshot_2012-04-21-15-29-04.png" width="192" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Install &lt;i&gt;Chrome for Android&lt;/i&gt;, which only available on Android 4+&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
1. Install from Market :)&lt;br /&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.android.chrome&amp;amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5hbmRyb2lkLmNocm9tZSJd"&gt;https://play.google.com/store/apps/details?id=com.android.chrome&amp;amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5hbmRyb2lkLmNocm9tZSJd&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-icBe5kT3tHI/T5QVMpp5NZI/AAAAAAAALCI/Adc7e6ARi0c/s1600/Screenshot_2012-04-22-22-23-30.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-icBe5kT3tHI/T5QVMpp5NZI/AAAAAAAALCI/Adc7e6ARi0c/s320/Screenshot_2012-04-22-22-23-30.png" width="192" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Chrome to Phone! :]&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
If you are not in US, follow the follow steps:&lt;br /&gt;
1. Download the .APK&lt;br /&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=756013"&gt;http://forum.xda-developers.com/showthread.php?t=756013&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
2. Install on Chrome&lt;br /&gt;
&lt;a href="https://chrome.google.com/webstore/search/chrome%20to%20phone"&gt;https://chrome.google.com/webstore/search/chrome%20to%20phone&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/yQhXD3xuyzQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/8444953367210243653/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/04/guide-samsung-galaxy-s2-ics.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8444953367210243653?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8444953367210243653?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/yQhXD3xuyzQ/guide-samsung-galaxy-s2-ics.html" title="[Guide] Samsung Galaxy S2 ICS" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-NL8toVSA-1Q/T5JoQL9W3mI/AAAAAAAAK-g/BHdf5yXY5Xw/s72-c/Screenshot_2012-04-21-13-52-24.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/04/guide-samsung-galaxy-s2-ics.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUICSHY9fCp7ImA9WhVQEEU.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-4122439090633892181</id><published>2012-03-30T14:06:00.000+08:00</published><updated>2012-03-30T14:06:09.864+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-30T14:06:09.864+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Hotmail" /><category scheme="http://www.blogger.com/atom/ns#" term="Facebook" /><category scheme="http://www.blogger.com/atom/ns#" term="SmartScreen" /><category scheme="http://www.blogger.com/atom/ns#" term="Gmail" /><category scheme="http://www.blogger.com/atom/ns#" term="DMARC" /><title>Why Hotmail SmartScreen Should do Better</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ct3Brbd8XJw/T3VHiwNL8_I/AAAAAAAAJDQ/V36S964f7M8/s1600/made-in-aviary.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://2.bp.blogspot.com/-ct3Brbd8XJw/T3VHiwNL8_I/AAAAAAAAJDQ/V36S964f7M8/s640/made-in-aviary.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Got this spam mail that looks as if its from my other email account (Yahoo Mail).&lt;br /&gt;
&lt;br /&gt;
Further inspect on the header reveals that the mail is from hotmail_631448ecb4add0e [at] hotmail.com.&amp;nbsp;And the mail server is actually from the IP 179.89.131.27.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why Hotmail SmartScreen not doing its job&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
SmartScreen should have filtered the email content, based on EITHER one of the following criteria, that can be implemented by checking just the email header.&lt;br /&gt;
&lt;br /&gt;
1. The email content is obviously spam content. Nuff said.&lt;br /&gt;
&lt;br /&gt;
2. The sender is obviously from a "anonymous" email that pretends to be another email. &lt;br /&gt;
&lt;br /&gt;
3. The IP (179.89.131.27) of the mail server is OBVIOUSLY hosted on a spam source. This can be easily detected by cross-check with one of the spam database out there. For example &lt;a href="http://www.dnsbl.info/"&gt;http://www.dnsbl.info/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
These are simple methods to provide minimal layers protection for Hotmail users.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
(Notice I haven't even go into advanced SPAM fighting techniques like using&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/DMARC"&gt;DMARC&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Takeaway&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
SmartScreen team should learn from&amp;nbsp;&lt;a href="http://googlesystem.blogspot.com/2012/03/why-gmail-messages-are-marked-as-spam.html"&gt;Gmail&lt;/a&gt;, and &lt;a href="https://www.facebook.com/note.php?note_id=10150524975728920"&gt;Facebook&lt;/a&gt;. Gmail did VERY well in filtering spam mails, and automatically categories emails for users.&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/8lR83dwqgow" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/4122439090633892181/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/03/why-hotmail-smartscreen-should-do.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4122439090633892181?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4122439090633892181?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/8lR83dwqgow/why-hotmail-smartscreen-should-do.html" title="Why Hotmail SmartScreen Should do Better" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-ct3Brbd8XJw/T3VHiwNL8_I/AAAAAAAAJDQ/V36S964f7M8/s72-c/made-in-aviary.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/03/why-hotmail-smartscreen-should-do.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cFQ30_fCp7ImA9WhVSEEU.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-9144795693421129852</id><published>2012-03-07T10:27:00.002+08:00</published><updated>2012-03-07T10:56:52.344+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-07T10:56:52.344+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Bootstrap" /><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial Series" /><title>Bootstrap Tools</title><content type="html">&lt;span style="font-size: large;"&gt;&lt;b&gt;Biggest Mistakes&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The biggest mistakes for new (or inexperienced) developers, like me, is to jump straight into coding a website.&lt;br /&gt;
There are so many bootstrap tools&amp;nbsp;(or so caller boilerplates) out there for you to start, without falling into the pitfalls of bad (really bad) designs. I'm speaking from my personal&amp;nbsp;experience, with &lt;a href="http://lunchsparks.me/"&gt;Lunchsparks&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Along the way of "designing" and coding, both at the same time, I poorly designed the elements in the website, from layouts (grids, containers, tables) to buttons (color, states).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;The Tools&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
These are two tools that I came across recently, which I think its awesome! These tools encapsulated the almost (if not all) the elements for designing a great (responsive) website.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ocZS--8LEbY/T1bF_Fk7OLI/AAAAAAAAHVU/5IuxhlS8v0o/s1600/Capture.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="105" src="http://3.bp.blogspot.com/-ocZS--8LEbY/T1bF_Fk7OLI/AAAAAAAAHVU/5IuxhlS8v0o/s320/Capture.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="https://github.com/twitter/bootstrap/"&gt;Bootstrap, from Twitter&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;a href="https://github.com/twitter/bootstrap/"&gt;&lt;span style="font-size: large;"&gt;Bootstrap, from Twitter&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
A very clear demo site that demonstrate what the tools (javascripts, and css) does. Recommended for new learners.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-4j9Yca4EpMY/T1bGXypQdZI/AAAAAAAAHVc/JYzEXpafY8k/s1600/Capture.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/-4j9Yca4EpMY/T1bGXypQdZI/AAAAAAAAHVc/JYzEXpafY8k/s320/Capture.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://html5boilerplate.com/"&gt;HTML5 Boilerplates&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;a href="http://html5boilerplate.com/"&gt;&lt;span style="font-size: large;"&gt;HTML5 Boilerplates&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
By &lt;a href="https://plus.google.com/113127438179392830442/posts"&gt;Paul Irish&lt;/a&gt;. A very cool Googler that I follow on social networks and blogs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Others&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Here are some other tools that I came across, prior to the above tools.&lt;br /&gt;
&lt;a href="http://goldengridsystem.com/"&gt;http://goldengridsystem.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Epilogue&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Shall blog more about my experience with adapting to these tools next time, after I port and adapt my project to these tools!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;a href="http://e27.sg/2012/03/06/reducing-time-to-market-with-bootstrap/"&gt;http://e27.sg/2012/03/06/reducing-time-to-market-with-bootstrap/&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/S9a4vZTx-og" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/9144795693421129852/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/03/bootstrap-tools.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/9144795693421129852?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/9144795693421129852?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/S9a4vZTx-og/bootstrap-tools.html" title="Bootstrap Tools" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ocZS--8LEbY/T1bF_Fk7OLI/AAAAAAAAHVU/5IuxhlS8v0o/s72-c/Capture.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/03/bootstrap-tools.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAAR3k9eSp7ImA9WhVTGE4.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-8843388946664886586</id><published>2012-03-03T17:39:00.001+08:00</published><updated>2012-03-04T11:45:46.761+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-04T11:45:46.761+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MySQL" /><category scheme="http://www.blogger.com/atom/ns#" term="CodeIgniter" /><title>[CodeIgniter] MySQL NOW()</title><content type="html">Was trying to do insert/update using CodeIgniter Active Record helpers, and realize the usual way of inserting doesn't work, because the helper functions actually escaped the values to prevent SQL injection.&lt;br /&gt;
&lt;br /&gt;
So we can't do the just group all the data together the easy way.&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;$data['field1'] = $data1;
$data['field1'] = $data2
&lt;b style="background-color: red;"&gt;$data['created_date'] = 'NOW()';&lt;/b&gt;
$this -&amp;gt; db -&amp;gt; insert($this -&amp;gt; tables['some_table'], $data);
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
There are two possible ways to go around this.&lt;br /&gt;
&lt;br /&gt;
1. Use CodeIgniter &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$db -&amp;gt; set()&lt;/span&gt; function, with the additional &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;FALSE&lt;/span&gt; parameter to prevent data from being escaped.&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;b style="background-color: yellow;"&gt;$this -&amp;gt; db -&amp;gt; set('created_date', 'NOW()', FALSE);&lt;/b&gt;
$this -&amp;gt; db -&amp;gt; insert($this -&amp;gt; tables['some_table'], $data);
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
2. Use PHP data function to generate datetime string. &lt;span style="font-size: x-small;"&gt;The only thing to note with this method is, in most cases, the PHP server time and the MySQL time is different.&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;b style="background-color: yellow;"&gt;$data['created_date'] = date('Y-m-d H:i:s', time();&lt;/b&gt;
$this -&amp;gt; db -&amp;gt; insert($this -&amp;gt; tables['some_table'], $data);
&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;a href="http://codeigniter.com/user_guide/database/active_record.html"&gt;http://codeigniter.com/user_guide/database/active_record.html&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/Fx1LhS_04RE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/8843388946664886586/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/03/codeigniter-mysql-now.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8843388946664886586?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8843388946664886586?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/Fx1LhS_04RE/codeigniter-mysql-now.html" title="[CodeIgniter] MySQL NOW()" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/03/codeigniter-mysql-now.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMBQX0_fSp7ImA9WhRaFk8.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-1363669912434177002</id><published>2012-01-21T23:40:00.001+08:00</published><updated>2012-02-19T12:07:30.345+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-19T12:07:30.345+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Javascript" /><title>[Template] Javascript Functions</title><content type="html">Been dealing with Javascript functions lately, I find that these are the most-frequently-used input parameters for all a typical function:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;data &lt;/li&gt;
&lt;li&gt;url (optional)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;callback (optional)&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
A good JS function should readily accept these parameters.&amp;nbsp;And a typical Javascript function call would be like:&lt;br /&gt;
&lt;pre&gt;&lt;blockquote class="tr_bq"&gt;
somefunction( {data: value, data2: value2 }, [url], [callback()] );&lt;/blockquote&gt;
&lt;/pre&gt;
We know that in PHP we can use the following method to write a "optional" second (or third) input parameter.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;pre&gt;function somefunction( $data, $callback = FALSE); &lt;/pre&gt;
&lt;/blockquote&gt;
This way, if the second argument is not supplied, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;$callback&lt;/span&gt;&amp;nbsp;will be automatically assigned to &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;FALSE&lt;/span&gt;. Its a good practice to set a default value for a variable.&lt;br /&gt;
&lt;br /&gt;
After Googling around, I found that Javascript is event better at handling such case. We can take in as many optional input parameters, &lt;u&gt;in no specific order&lt;/u&gt;. But the trade-off is, we need a check for the input parameter type.&lt;br /&gt;
&lt;br /&gt;
Stackoverflow has this excellent &lt;a href="http://stackoverflow.com/questions/1529077/handling-optional-parameters-in-javascript"&gt;post&lt;/a&gt; on the template for checking input argument type.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;function getData ([id, parameters, &lt;span style="background-color: yellow;"&gt;callback&lt;/span&gt;]) {
  var id = arguments[0], parameters, callback;

  if (arguments.length == 2) { // only two arguments supplied
    if (Object.prototype.toString.call(arguments[1]) == "[object Function]") {
      &lt;span style="background-color: yellow;"&gt;callback &lt;/span&gt;= arguments[1]; // if is a function, set as 'callback'
    } else {
      parameters = arguments[1]; // if not a function, set as 'parameters'
    }
  } else if (arguments.length == 3) { // three arguments supplied
    parameters = arguments[1];
    &lt;span style="background-color: yellow;"&gt;callback &lt;/span&gt;= arguments[2];
  }
  
  // do something here...
  // ...
  // and finally, on complete run the callback function
  &lt;span style="background-color: yellow;"&gt;callback&lt;/span&gt;();
}
&lt;/pre&gt;
&lt;br /&gt;
This is... the function template which is usually used in jQuery too!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Extras&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Actually callback function can be easily done in jQuery. Not the correct way though.&lt;br /&gt;
&lt;pre&gt;jQuery.some_other_jQuery_functions().each(function(){ 
  // The functions to execute after the first function finish executing.
});&lt;/pre&gt;
&lt;br /&gt;
If you are new to Javascript frameworks, heres a good comparison of the performance of the popular frameworks.&amp;nbsp;&lt;a href="http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised"&gt;http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;References&lt;/b&gt;:&lt;br /&gt;
&lt;a href="http://stackoverflow.com/questions/1529077/handling-optional-parameters-in-javascript"&gt;http://stackoverflow.com/questions/1529077/handling-optional-parameters-in-javascript&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/-bfk3zcFqzA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/1363669912434177002/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/01/template-javascript-functions.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/1363669912434177002?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/1363669912434177002?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/-bfk3zcFqzA/template-javascript-functions.html" title="[Template] Javascript Functions" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/01/template-javascript-functions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08MRXc8eSp7ImA9WhRVEko.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-3425716545371118407</id><published>2012-01-11T16:46:00.000+08:00</published><updated>2012-01-11T16:51:24.971+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-11T16:51:24.971+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CSS3" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><title>CSS text-overflow</title><content type="html">&lt;div style="background: #EFEFEF; border-radius: 5px; padding: 10px;"&gt;
&lt;b&gt;Notice&lt;/b&gt;: This is a beginner post (that some of you might think is a waste of time)&lt;/div&gt;
&lt;br /&gt;
CSS3 has tons of awesome improvement, which a lot of them I don't know or notice.&amp;nbsp;Today, I discovered "&lt;b&gt;text-overflow&lt;/b&gt;" style, which is super handy for hiding overflowing text.&lt;br /&gt;
&lt;br /&gt;
I discovered while browsing the source for Gmail.com. (Actually I was looking a the scrollbar for the side panel wondering how it works and accidentally stumble upon this :p ).&lt;br /&gt;
&lt;br /&gt;
Notice the the longer text "Acquaintances" changes to "Acquaintan" when the width of the parent container shrinks.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-L3TqzKxhomI/Tw1MISd46RI/AAAAAAAAFo0/3p8uNFHt4aM/s1600/2012-01-11_1630.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="419" src="http://1.bp.blogspot.com/-L3TqzKxhomI/Tw1MISd46RI/AAAAAAAAFo0/3p8uNFHt4aM/s640/2012-01-11_1630.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-N1SETZ0Hm_U/Tw1MIizUMRI/AAAAAAAAFpE/k5pZZDbxyfY/s1600/2012-01-11_1631.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="412" src="http://2.bp.blogspot.com/-N1SETZ0Hm_U/Tw1MIizUMRI/AAAAAAAAFpE/k5pZZDbxyfY/s640/2012-01-11_1631.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The style behind this is &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
&lt;/pre&gt;
&lt;br /&gt;
You might wonder why I'm so excited about this? Because in the past, I used to do a lot of text-length-checking on the server side before outputting the text, reducing the number of characters and append "...".&lt;br /&gt;
&lt;br /&gt;
Now this can be done easily on the browser part using just CSS!&lt;br /&gt;
&lt;br /&gt;
No more inefficient coding with the boated codes!&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/9YDgI1WmlEc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/3425716545371118407/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/01/css-text-overflow.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/3425716545371118407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/3425716545371118407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/9YDgI1WmlEc/css-text-overflow.html" title="CSS text-overflow" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-L3TqzKxhomI/Tw1MISd46RI/AAAAAAAAFo0/3p8uNFHt4aM/s72-c/2012-01-11_1630.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/01/css-text-overflow.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAGRHcyeSp7ImA9WhRUFkk.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-248548575036183942</id><published>2012-01-05T12:31:00.001+08:00</published><updated>2012-01-27T15:18:45.991+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-27T15:18:45.991+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Samsung" /><category scheme="http://www.blogger.com/atom/ns#" term="Kies" /><category scheme="http://www.blogger.com/atom/ns#" term="Firmware" /><category scheme="http://www.blogger.com/atom/ns#" term="i9100 Galaxy S2" /><title>[ROM] Galaxy S2 i9100DXKL3 Firmware</title><content type="html">New&amp;nbsp;(Dec 2011)&amp;nbsp;official firmware (South East Asia) for Samsung Galaxy S2.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-M-M0ruHbRRU/TwJ83YwHa1I/AAAAAAAAFfU/FbF3-wzcjKg/h301/2012+-+1" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-M-M0ruHbRRU/TwJ83YwHa1I/AAAAAAAAFfU/FbF3-wzcjKg/h301/2012+-+1" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
PDA:&amp;nbsp;i9100DXKL3&lt;br /&gt;
PHONE: I9100DXKL1&lt;br /&gt;
CSC: I9100OLCKL2&lt;br /&gt;
&lt;br /&gt;
Build Info: Thu Dec 15 18:59:02 KST 2011&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #EFEFEF; border-radius: 5px; padding: 10px;"&gt;
Firmware Download :&lt;br /&gt;
&lt;a href="http://hotfile.com/dl/140000660/4db110f/I9100DXKL3_I9100OLCKL2_SIN.zip.html"&gt;GT-I9100_XSP_I9100DXKL3_I9100OLCKL2_I9100DXKL1.zip&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;FAQ:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Q: How to check the&amp;nbsp;&lt;/u&gt;&lt;u&gt;current&lt;/u&gt;&lt;u&gt;&amp;nbsp;firmware version of&amp;nbsp;&lt;/u&gt;&lt;u&gt;my phone?&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
There are several ways:&lt;br /&gt;
1.&amp;nbsp;Key in&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;*#1234#&lt;/span&gt;&amp;nbsp;in the dialer. You'll get the PDA, Phone, and CSC version of your firmware, or&lt;br /&gt;
2.&amp;nbsp;Download&amp;nbsp;&lt;a href="https://market.android.com/details?id=zausan.zdevicetest"&gt;Z-Device Test&lt;/a&gt;&amp;nbsp;from Android Market.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/LfB9hBbszts" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/248548575036183942/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2012/01/rom-galaxy-s2-i9100dxkl3-firmware.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/248548575036183942?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/248548575036183942?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/LfB9hBbszts/rom-galaxy-s2-i9100dxkl3-firmware.html" title="[ROM] Galaxy S2 i9100DXKL3 Firmware" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://blog.gbinghan.com/2012/01/rom-galaxy-s2-i9100dxkl3-firmware.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08HQH4-cSp7ImA9WhRXEks.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-1582100453904616722</id><published>2011-12-19T11:37:00.000+08:00</published><updated>2011-12-19T11:37:11.059+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T11:37:11.059+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CSF" /><category scheme="http://www.blogger.com/atom/ns#" term="DirectAdmin" /><title>DirectAdmin Upgrading CSF Firewall</title><content type="html">&lt;span style="color: #666666;"&gt;(This post is meant for DirectAdmin beginners, like me.)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally got the chance to play with one of the production server - to upgrade the CSF Firewall.&lt;br /&gt;
&lt;br /&gt;
For this, I have to SSH to the server because upgrading CSF needs root access.&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Due to restrictions in "DirectAdmin you must login to the root shell" to upgrade csf using&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;csf -u&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
So I SSH-ed to the server and ran the command "&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;csf -u&lt;/span&gt;". But this time, I get the following error.&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style="color: red; font-family: 'Courier New', Courier, monospace;"&gt;-bash: csf: command not found&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Okay, the path to CSF is not correct, so just need to&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cd /usr/sbin/&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Then gain root access,&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;su -&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
That's it, can upgrade CSF using the command "&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;csf -u&lt;/span&gt;" automatically!&lt;br /&gt;
&lt;br /&gt;
:)&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/SLJiNyHWYsA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/1582100453904616722/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/12/directadmin-upgrading-csf-firewall.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/1582100453904616722?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/1582100453904616722?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/SLJiNyHWYsA/directadmin-upgrading-csf-firewall.html" title="DirectAdmin Upgrading CSF Firewall" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/12/directadmin-upgrading-csf-firewall.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08NQXk_eyp7ImA9WhRXEk8.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-4147665943533313351</id><published>2011-12-19T00:31:00.000+08:00</published><updated>2011-12-19T00:31:30.743+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T00:31:30.743+08:00</app:edited><title>Convert SimpleXMLElement to Array</title><content type="html">Ok, I know this is simple, but it took me a while to realize this simple method to convert SimpleXMLElement to an array. (I even tempted to write a function to parse and convert the XML tree).&lt;br /&gt;
&lt;br /&gt;
Its simple actually, to just just the default PHP functions&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$xml = &amp;lt;tag&amp;gt;content&amp;lt;/tag&amp;gt;&lt;/pre&gt;&lt;pre&gt;print_r(json_decode(json_encode($xml), TRUE));&lt;/pre&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/Ops47zAIxhM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/4147665943533313351/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/12/convert-simplexmlelement-to-array.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4147665943533313351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4147665943533313351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/Ops47zAIxhM/convert-simplexmlelement-to-array.html" title="Convert SimpleXMLElement to Array" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/12/convert-simplexmlelement-to-array.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UCRHg_cSp7ImA9WhRVGU4.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-8432699407689687992</id><published>2011-12-16T23:07:00.001+08:00</published><updated>2012-01-19T10:14:25.649+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-19T10:14:25.649+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="i9100 Galaxy S2" /><title>Samsung Galaxy S2 variants</title><content type="html">During trip back at Malaysia, I realize the Galaxy S2 variant there is i9100T. Which makes me wonder what are the difference.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[UPDATE, Jan 19]&lt;/b&gt; CyanogenMod &lt;a href="http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S_II:_FAQ"&gt;wiki&lt;/a&gt; has a better list of SGS2 variants with support status comments.&lt;br /&gt;
&lt;br /&gt;
After Googling around, I came to conclusion that all the variants have:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;SAME&lt;/b&gt;&amp;nbsp;hardware Specifications&lt;br /&gt;
&lt;br /&gt;
and the&amp;nbsp;&lt;b&gt;DIFFERENCES&lt;/b&gt;&amp;nbsp;are:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The I9100 supports 3G 900/2100Mhz and the I9100T supports 3G 850/2100Mhz&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The difference in SAR value, as shown in &lt;a href="http://www.samsung.com/sar/sarMain?site_cd=au&amp;amp;prd_mdl_name=GT-I9100&amp;amp;selNatCd=MY&amp;amp;languageCode=EN"&gt;Samsung Website&lt;/a&gt;.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
GT-I9100P -&amp;nbsp;0.362 W/kg&lt;br /&gt;
GT-I9100 - 0.338 W/kg&lt;br /&gt;
GT-I9100M - 0.338 W/kg&lt;br /&gt;
GT-I9100T - 0.285 W/kg&lt;br /&gt;
GT-I9100G - 0.247 W/kg (different processor - OMAP SoC)&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Quote from &lt;a href="http://www.samsung.com/sar/sarMain?site_cd=au&amp;amp;prd_mdl_name=GT-I9100&amp;amp;selNatCd=MY&amp;amp;languageCode=EN"&gt;Samsung Website&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
This phone meets European Union (EU) requirements concerning exposure to radio waves. Your mobile phone is a radio transmitter and receiver. It is designed and manufactured so as not to exceed the limits for exposure to radio-frequency (RF) energy, as recommended by the EU Council. These limits are part of comprehensive guidelines and establish permitted levels of RF energy for the general population. The guidelines were developed by independent scientific organizations through the periodic and thorough evaluation of scientific studies. The limits include a substantial safety margin designed to ensure the safety of all persons, regardless of age and health.&lt;br /&gt;
&lt;br /&gt;
The exposure standard for mobile phones employs a unit of measurement known as SAR (Specific Absorption Rate). The SAR limit recommended by the EU Council is 2.0 W/kg.*&lt;br /&gt;
&lt;br /&gt;
SAR tests are conducted using standard operating positions with the phone transmitting at its highest certified power level in all tested frequency bands. Although the SAR is determined at the highest certified power level, the actual SAR level of the phone while operating can be well below the maximum value. This is because the phone is designed to operate at multiple power levels so as to use only the power required to reach the network. In general, the closer you are to a base station, the lower the power output of the phone.&lt;br /&gt;
&lt;br /&gt;
Before a new model phone is available for sale to the public, compliance with the European R&amp;amp;TTE Directive must be shown. This directive includes as one of its essential requirements the protection of the health and safety of the user and any other person.&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References,&lt;br /&gt;
&lt;a href="http://community.vodafone.com.au/t5/iPhone-and-Android/Samsung-Galaxy-S-II-T-Version/td-p/13787"&gt;http://community.vodafone.com.au/t5/iPhone-and-Android/Samsung-Galaxy-S-II-T-Version/td-p/13787&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://forum.xda-developers.com/showthread.php?t=1129291"&gt;http://forum.xda-developers.com/showthread.php?t=1129291&lt;/a&gt; &lt;br /&gt;
&lt;a href="http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S_II:_FAQ"&gt;http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S_II:_FAQ&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/PNCiK6LuImQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/8432699407689687992/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/12/samsung-galaxy-s2-variants.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8432699407689687992?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/8432699407689687992?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/PNCiK6LuImQ/samsung-galaxy-s2-variants.html" title="Samsung Galaxy S2 variants" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/12/samsung-galaxy-s2-variants.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQFRXw7fCp7ImA9WhRQGUk.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-1895382044475796296</id><published>2011-12-15T19:11:00.000+08:00</published><updated>2011-12-15T19:25:14.204+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-15T19:25:14.204+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Notes" /><category scheme="http://www.blogger.com/atom/ns#" term="DevCon" /><category scheme="http://www.blogger.com/atom/ns#" term="BlackBerry" /><title>Notes from BlackBerry DevCon Asia 2011 #BBDevCon</title><content type="html">Event: BlackBerry DevCon Asia 2011&lt;br /&gt;
&lt;div&gt;
Date: 2011-12-08&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #F8F8F8; border-radius: 8px; padding: 20px;"&gt;
&lt;b&gt;Updates: &lt;/b&gt;The speakers mentioned that the slides are available online. But I'm still not able to find 'em anywhere.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Topic:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;DEV846 – Advanced Web Rendering: webGL, Canvas and Gaming&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Speakers:&lt;br /&gt;
&lt;br /&gt;
Charles Wei,&amp;nbsp;Technical Director,&amp;nbsp;Torch Mobile (Beijing) Co. Ltd.&lt;br /&gt;
Robin Cao [robin.cao[at]torchmobile.com.sg],&amp;nbsp;Senior Software Engineer,&amp;nbsp;Torch Mobile (Beijing)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tips and Tricks&lt;br /&gt;
- Avoid creating non-power of two images&lt;br /&gt;
- Avoid reading back from canvas&lt;br /&gt;
&lt;br /&gt;
GLSL Shader&lt;br /&gt;
- WebGL - Matrices to represent states&lt;br /&gt;
&lt;br /&gt;
Libraries&lt;br /&gt;
Three.js, PhiloGL,&lt;br /&gt;
Khronos wiki, learningWebGL.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Topic:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;DEV825 – Powering Immediacy: Putting Push Data to Work for You&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Speaker:&lt;br /&gt;
Pratik Sapra,&amp;nbsp;Application Development Consultant,&amp;nbsp;Research In Motion&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BlackBerry Push&lt;/div&gt;
&lt;div&gt;
- push thru BB internet service&lt;/div&gt;
&lt;div&gt;
- 8kb data&lt;/div&gt;
&lt;div&gt;
- dedicated port&lt;/div&gt;
&lt;div&gt;
- push service plus/ push service essential&lt;/div&gt;
&lt;div&gt;
- mode :&lt;/div&gt;
&lt;div&gt;
- point to point,&lt;/div&gt;
&lt;div&gt;
- multicast,&lt;/div&gt;
&lt;div&gt;
- broadcast.&lt;/div&gt;
&lt;div&gt;
push request - PAP standard&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Server Side Application&lt;/div&gt;
&lt;div&gt;
Standalone approach&lt;/div&gt;
&lt;div&gt;
- http post&lt;/div&gt;
&lt;div&gt;
- http basic authorization.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Push Service SDK approach&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Device side Application&lt;/div&gt;
&lt;div&gt;
- BB OS 5.0+&lt;/div&gt;
&lt;div&gt;
- Legacy API ( for 5.0- )&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Tips n Tricks&lt;/div&gt;
&lt;div&gt;
- Sync subscribers peroidically&lt;/div&gt;
&lt;div&gt;
- creat overhead by pushing to unsubscribed users&lt;/div&gt;
&lt;div&gt;
- Two way to check&lt;/div&gt;
&lt;div&gt;
- status query or resuot notification&lt;/div&gt;
&lt;div&gt;
- subscription query&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Topic:&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;DEV809 – Web Apps: Design and Build Great Looking UI and User Experiences&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Speaker(s):&lt;br /&gt;
&lt;br /&gt;
Robin Cao, Senior Software Engineer with Torch Mobile (Beijing)&lt;br /&gt;
Charles Wei, Technical Director with Torch Mobile (Beijing) Co. Ltd.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
- Cloud based services and mash-up&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Good Design&lt;/div&gt;
&lt;div&gt;
- Adaptive Design&lt;/div&gt;
&lt;div&gt;
- Handheld meta&lt;/div&gt;
&lt;div&gt;
- Meta viewport&lt;/div&gt;
&lt;div&gt;
- Responsive and Feedback&lt;/div&gt;
&lt;div&gt;
- Device detection&lt;/div&gt;
&lt;div&gt;
- User agent :&lt;/div&gt;
&lt;div&gt;
- Server side: Http heqder&lt;/div&gt;
&lt;div&gt;
- Client side : js (navigator.userAgent)&lt;/div&gt;
&lt;div&gt;
Orientation&lt;/div&gt;
&lt;div&gt;
- windows.orientationchange = function() {}&lt;/div&gt;
&lt;div&gt;
- windows.orientation;&lt;/div&gt;
&lt;div&gt;
- Media query&lt;/div&gt;
&lt;div&gt;
- connectivity detection&lt;/div&gt;
&lt;div&gt;
- HTML5 - AppCache&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Bad Design&lt;/div&gt;
&lt;div&gt;
- Frames and scrolling&lt;/div&gt;
&lt;div&gt;
- Mouse-move and hover event&lt;/div&gt;
&lt;div&gt;
- Fix position&lt;/div&gt;
&lt;div&gt;
- Fixed size&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Js Framework&lt;/div&gt;
&lt;div&gt;
- Sencha&lt;/div&gt;
&lt;div&gt;
- jQuery&lt;/div&gt;
&lt;div&gt;
- Dojo&lt;/div&gt;
&lt;div&gt;
- Alice (RIM) - For animations, flip, bounce, etc.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/ilE1lYQDT5s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/1895382044475796296/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/12/notes-from-bbdevcon.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/1895382044475796296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/1895382044475796296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/ilE1lYQDT5s/notes-from-bbdevcon.html" title="Notes from BlackBerry DevCon Asia 2011 #BBDevCon" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/12/notes-from-bbdevcon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcHRXg-eyp7ImA9WhRRFkg.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-4222812134869705911</id><published>2011-11-30T20:04:00.000+08:00</published><updated>2011-11-30T20:27:14.653+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T20:27:14.653+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Fat-Free Framework" /><title>Fat-Free Framework - Blank Page Error</title><content type="html">Was trying getting started with Fat-Free just now, but found that the page wasn't loading at all, or more accurately, a &lt;span class="Apple-style-span" style="color: red; font-size: large;"&gt;blank page&lt;/span&gt; was shown.&lt;br /&gt;
&lt;br /&gt;
I added a dummy echo before the template echo,&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-repeat: repeat no-repeat; border-bottom-style: inset; border-bottom-width: 1px; border-color: initial; border-left-style: inset; border-left-width: 1px; border-right-style: inset; border-right-width: 1px; border-top-style: inset; border-top-width: 1px; color: #333333; direction: ltr; font-size: 12px; height: 36px; line-height: 12px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: left;"&gt;echo "Hello World!";
 echo Template::serve('welcome.htm');&lt;/pre&gt;
&lt;br /&gt;
and found that the echo is printed, but not everything else in the welcome.htm&lt;br /&gt;
&lt;br /&gt;
After debugging, I found out that its caused by&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-repeat: repeat no-repeat; border-bottom-style: inset; border-bottom-width: 1px; border-color: initial; border-left-style: inset; border-left-width: 1px; border-right-style: inset; border-right-width: 1px; border-top-style: inset; border-top-width: 1px; color: #333333; direction: ltr; font-size: 12px; height: 36px; line-height: 12px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: left;"&gt;{{ Web::minify('ui/',array('style.css'),FALSE) }}&lt;/pre&gt;
&lt;br /&gt;
The page displays correctly, without css style, after removing that line, and &lt;u&gt;clear the cache&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
To solve this, its relatively easy.&lt;br /&gt;
&lt;br /&gt;
Just need to enable&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-repeat: repeat no-repeat; border-bottom-style: inset; border-bottom-width: 1px; border-color: initial; border-left-style: inset; border-left-width: 1px; border-right-style: inset; border-right-width: 1px; border-top-style: inset; border-top-width: 1px; color: #333333; direction: ltr; font-size: 12px; height: 36px; line-height: 12px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: left;"&gt;php_sockets&lt;/pre&gt;
in you &lt;span class="Apple-style-span" style="color: blue; font-size: large;"&gt;PHP extension&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Then &lt;span class="Apple-style-span" style="color: blue; font-size: large;"&gt;clear the&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/cache&lt;/span&gt; folder&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
Hope that save the your time for some of you out there as well! :)&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/zgnXoNcCZ2o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/4222812134869705911/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/11/fat-free-framework-blank-page.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4222812134869705911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/4222812134869705911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/zgnXoNcCZ2o/fat-free-framework-blank-page.html" title="Fat-Free Framework - Blank Page Error" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/11/fat-free-framework-blank-page.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4FR3k9eyp7ImA9WhRRE0g.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-2031602850578609798</id><published>2011-11-25T22:04:00.001+08:00</published><updated>2011-11-27T09:38:36.763+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-27T09:38:36.763+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="i9000 Galaxy S" /><category scheme="http://www.blogger.com/atom/ns#" term="CyanogenMod" /><title>[i9000] Flashing CyanogenMod for Beginners</title><content type="html">&lt;div style="background: #EFEFEF; border-radius: 3px; padding: 10px;"&gt;
&lt;b&gt;UPDATE (2011-11-27)&lt;/b&gt;: After flashed to CyanogenMod and tested for a few days, I think that CyanogenMod is GREAT, i9000 users should just flash to it since Samsung firmware support for i9000 isn't that great, and slow. :)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The guide can be found from&amp;nbsp;&lt;a href="http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S:_Full_Update_Guide"&gt;wiki.cyanogenmod.com&lt;/a&gt;. But its not complete with all the downloadables, there are few missing steps.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1. Installing the ClockworkMod Recovery&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Prerequisites:&lt;/u&gt;&lt;br /&gt;
Before you begin, follow Step 1 &amp;amp; Step 2 from&amp;nbsp;&lt;a href="http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S_II:_Full_Update_Guide#Installing_the_ClockworkMod_Recovery"&gt;CyanogenMod&lt;/a&gt;&amp;nbsp;to get the drivers installed.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Downloadables &amp;amp; Installation Guide&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Heimdall Firmware Packages -&amp;nbsp;&lt;a href="http://forum.xda-developers.com/showthread.php?t=1196179"&gt;http://forum.xda-developers.com/showthread.php?t=1196179&lt;/a&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(As of now,&amp;nbsp;XXJVT is the latest version)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2. Root your Phone&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
There are few options to root your phone.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strike&gt;&lt;a href="http://forum.xda-developers.com/showthread.php?t=1044765"&gt;Gingerbreak&lt;/a&gt;&amp;nbsp;by ChainFire.&lt;/strike&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://forum.xda-developers.com/showpost.php?p=15188469&amp;amp;postcount=9"&gt;CF-Root&lt;/a&gt; by ChainFire (works for XXJVT)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I used CF-Root and it worked.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Just a small note, if Odin cannot detect the phone, you can always reinstall the driver by running Kies device troubleshoot.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;3. Flashing CyanogenMod&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Finally, follow the&amp;nbsp;&lt;a href="http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S:_Full_Update_Guide#Method_via_Recovery"&gt;Flashing CyanogenMod - Method via Recovery&lt;/a&gt;&amp;nbsp;guide to flash to CyanogenMod.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Small note, you might get into "&lt;a href="http://wiki.cyanogenmod.com/wiki/Troubleshooting#Bootloop_problem"&gt;bootloop&lt;/a&gt;", but no worries, its simple to restore by following this &lt;a href="http://wiki.cyanogenmod.com/wiki/Troubleshooting#Bootloop_problem"&gt;guide&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-WEbaMN9xcuQ/Ts-_Tyu2vgI/AAAAAAAAFBs/gSzwa6fRahM/s1600/2011-11-26+00.03.30.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-WEbaMN9xcuQ/Ts-_Tyu2vgI/AAAAAAAAFBs/gSzwa6fRahM/s320/2011-11-26+00.03.30.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope that helps the CyanogenMod beginners (like me) to get started.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
[1]&amp;nbsp;&lt;a href="http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S:_Full_Update_Guide"&gt;http://wiki.cyanogenmod.com/wiki/Samsung_Galaxy_S:_Full_Update_Guide&lt;/a&gt;&lt;br /&gt;
[2]&amp;nbsp;&lt;a href="http://forum.xda-developers.com/showthread.php?t=1196179"&gt;http://forum.xda-developers.com/showthread.php?t=1196179&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/eScSMQT2L-Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/2031602850578609798/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/11/i9000-flashing-cyanogenmod-for.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2031602850578609798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/2031602850578609798?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/eScSMQT2L-Q/i9000-flashing-cyanogenmod-for.html" title="[i9000] Flashing CyanogenMod for Beginners" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-WEbaMN9xcuQ/Ts-_Tyu2vgI/AAAAAAAAFBs/gSzwa6fRahM/s72-c/2011-11-26+00.03.30.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/11/i9000-flashing-cyanogenmod-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEECQno_eCp7ImA9WhRREk0.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-3749695856881479591</id><published>2011-11-25T14:26:00.001+08:00</published><updated>2011-11-25T14:31:03.440+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T14:31:03.440+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cron" /><title>DirectAdmin Cron</title><content type="html">&lt;br /&gt;
If your hosting provider blocked you from running PHP files from command line (for security reason).&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="bbcode_code" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-repeat: repeat no-repeat; border-bottom-style: inset; border-bottom-width: 1px; border-color: initial; border-left-style: inset; border-left-width: 1px; border-right-style: inset; border-right-width: 1px; border-top-style: inset; border-top-width: 1px; color: #333333; direction: ltr; font-size: 12px; height: 36px; line-height: 12px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;cd /home/&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&amp;lt;user&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;/domains/&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&amp;lt;domain.com&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;/cron_scripts/; /usr/local/bin/php script.php&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Then the alternative would be using lynx, and access the files via url :)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="bbcode_code" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-repeat: repeat no-repeat; border-bottom-style: inset; border-bottom-width: 1px; border-color: initial; border-left-style: inset; border-left-width: 1px; border-right-style: inset; border-right-width: 1px; border-top-style: inset; border-top-width: 1px; color: #333333; direction: ltr; font-size: 12px; height: 36px; line-height: 12px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 6px; padding-left: 6px; padding-right: 6px; padding-top: 6px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;lynx -dump http://www.&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&amp;lt;domain&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;.com/path/script.php &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/DJPcUg9Hbo4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/3749695856881479591/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/11/directadmin-cron.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/3749695856881479591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/3749695856881479591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/DJPcUg9Hbo4/directadmin-cron.html" title="DirectAdmin Cron" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/11/directadmin-cron.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04ER3k4fSp7ImA9WhdaF0o.&quot;"><id>tag:blogger.com,1999:blog-7444721421952538606.post-7667909055226149381</id><published>2011-10-28T10:55:00.000+08:00</published><updated>2011-10-28T11:18:26.735+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-28T11:18:26.735+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><title>RE: Android Orphans: Visualizing a Sad History of Support</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-t2k1cYvpeDo/TqoToTIVOAI/AAAAAAAAE4s/i1WWGKkgSy8/s1600/016a_android_orphans.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-t2k1cYvpeDo/TqoToTIVOAI/AAAAAAAAE4s/i1WWGKkgSy8/s1600/016a_android_orphans.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Source: &lt;a href="http://theunderstatement.com/post/11982112928/android-orphans-visualizing-a-sad-history-of-support"&gt;theunderstatement.com/&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
A very good summary about Android environment. Very well summed-up and visualized the two rival ecosystem.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Root of problems - Hardware Manufacturers&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Android suppose to be an open source project.By the default nature of an open-source, it is bound to lure all the hackers around the world to get their hands dirty on the project. Yet hardware manufacturers tries very hard to be in control of both the hardware and the software (firmware).&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
".. there’s no incentive for smartphone manufacturers to update the OS: because manufacturers don’t make any money after the hardware sale... The hacker community (e.g. CyanogenMod, et cetera) has frequently managed to get these phones to run the newer operating systems, so it isn’t a hardware issue."&lt;/blockquote&gt;
Despite realizing that they can't make money after hardware sale, and they are resource tight to keep up with the pace of the OS development, they still want to be in control.&amp;nbsp;They even demanded takedown of the roms &lt;sup&gt;[&lt;a href="http://www.phonenews.com/htc-now-demanding-takedown-of-unmodified-rom-archives-11464/"&gt;1&lt;/a&gt;]&lt;/sup&gt;, which the hackers used to baked their custom rom (firmware).&lt;br /&gt;
&lt;br /&gt;
This IMO is the biggest mistake of all the vendors. They should be&amp;nbsp;grateful there are these fan-boys out there that help improve the products and user experience. If not for these fan-boys, many would have left Android for other OS, such as iOS.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
And to some extend, Google itself also demanded takedown of CyanogenMod &lt;sup&gt;[&lt;a href="http://phandroid.com/2009/09/25/google-responds-to-cyanogen-uproar/"&gt;2&lt;/a&gt;]&lt;/sup&gt;, despite their tremendous effort in help keeping the Android devices up-to-date, and perform better, with the lag-fixes, memory management fixes, and performance tweak.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Openness&amp;nbsp;of Open-source.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Nuff said, if I'm part of the mass non-it-savvy consumers, I would been stick to iPhone long time ago. But, because I enjoy hacking my own products. That's why I sticked to &lt;a href="http://source.android.com/"&gt;AOSP&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.phonenews.com/htc-now-demanding-takedown-of-unmodified-rom-archives-11464/"&gt;http://www.phonenews.com/htc-now-demanding-takedown-of-unmodified-rom-archives-11464/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://phandroid.com/2009/09/25/google-responds-to-cyanogen-uproar/"&gt;http://phandroid.com/2009/09/25/google-responds-to-cyanogen-uproar/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/gbinghan/IXhJ/~4/NfAUy8nIiyo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.gbinghan.com/feeds/7667909055226149381/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.gbinghan.com/2011/10/re-android-orphans-visualizing-sad.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/7667909055226149381?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7444721421952538606/posts/default/7667909055226149381?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/gbinghan/IXhJ/~3/NfAUy8nIiyo/re-android-orphans-visualizing-sad.html" title="RE: Android Orphans: Visualizing a Sad History of Support" /><author><name>Bing Han Goh</name><uri>https://plus.google.com/118074586151096683331</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-rWZKJqzueZE/AAAAAAAAAAI/AAAAAAAAWmg/p-i6Q872qvA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-t2k1cYvpeDo/TqoToTIVOAI/AAAAAAAAE4s/i1WWGKkgSy8/s72-c/016a_android_orphans.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.gbinghan.com/2011/10/re-android-orphans-visualizing-sad.html</feedburner:origLink></entry></feed>
