<?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/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-15692829</id><updated>2012-05-15T04:08:38.872+08:00</updated><category term="node.js" /><category term="scala" /><category term="extjs javascript pattern gui" /><category term="java" /><category term="iphone sdk" /><category term="uiimageview" /><category term="shit" /><category term="grails ext ajax" /><category term="gwt" /><category term="cocoa touch" /><category term="macruby" /><category term="brew" /><category term="nerd" /><category term="andengine" /><category term="gae" /><category term="cocoa" /><category term="express" /><category term="objective-c" /><category term="grails" /><category term="review books agile" /><category term="android" /><category term="xcode" /><category term="grails lucene java" /><category term="groovy java" /><category term="groovy" /><category term="rails" /><category term="mosc2011" /><category term="uicolor" /><category term="iOS" /><category term="ubuntu" /><category term="csv" /><category term="gaelyk" /><title type="text">Sh*tmores</title><subtitle type="html">Muse about software engineering and life on the Internet</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default?start-index=26&amp;max-results=25" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>138</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/Shitmores" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="shitmores" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><logo>http://seymourcakes.com/face_alvatar-75x75.png</logo><entry><id>tag:blogger.com,1999:blog-15692829.post-7162789065887573052</id><published>2012-02-06T00:41:00.001+08:00</published><updated>2012-02-06T10:31:31.678+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js" /><category scheme="http://www.blogger.com/atom/ns#" term="express" /><title type="text">Node.js express file upload -- uploading file the easy way</title><content type="html">Forget all those old example on how to upload file. Express provides a very easy and simple to use file upload feature that every newbie (like me) should know and use.&lt;br /&gt;&lt;br /&gt;Step 1:&lt;br /&gt;Your form must be multipart.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #741b47; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;form&amp;nbsp; enctype="multipart/form-data" &lt;/div&gt;&lt;div style="color: #741b47; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;...&amp;gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;lt;&lt;/span&gt;input name="uploadfile" type="file /&amp;gt; &lt;/div&gt;&lt;br /&gt;Step 2:&lt;br /&gt;Here comes the req.files magic.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;code&gt;app.post('/upload', function(req, res) {&lt;/code&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="color: #741b47; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log( &lt;b&gt;req.files&lt;/b&gt;.uploadfile );&lt;/code&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;code&gt;&lt;span style="color: #741b47;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log( &lt;/span&gt;&lt;b style="color: #741b47;"&gt;req.files&lt;/b&gt;&lt;span style="color: #741b47;"&gt;.uploadfile.name );&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // use fs.rename to move the file and unlink after that&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;});&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Internally express is using formidable to do handle the file upload. But it's a surprise to me that formidable doc is a piece of shit, and express is obviously not advertising this feature enough.&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-7162789065887573052?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/7162789065887573052/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=7162789065887573052" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/7162789065887573052" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/7162789065887573052" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2012/02/nodejs-express-file-upload-uploading.html" title="Node.js express file upload -- uploading file the easy way" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-2561626054440903630</id><published>2012-02-05T22:32:00.003+08:00</published><updated>2012-02-05T22:39:22.141+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js" /><title type="text">Node.js sendfile and Forbidden error</title><content type="html">If you are getting "Forbidden" error whenever you are trying to use res.sendfile, it's probably because you are using relative path. This is a potential security hole hence it's "Forbidden".&lt;br /&gt;&lt;br /&gt;So instead of&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; res.sendfile( __dirname + "/../public/home.html")&lt;/span&gt;, use the &lt;a href="http://nodejs.org/docs/v0.3.1/api/path.html" target="_blank"&gt;path module&lt;/a&gt; to normalize the path to the file. Like the below,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;path = require('path');&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;var filepath = path.normalize( __dirname + "/../public/home.html");&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;res.sendfile( filepath );&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-2561626054440903630?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/2561626054440903630/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=2561626054440903630" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/2561626054440903630" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/2561626054440903630" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2012/02/nodejs-sendfile-and-forbidden-error.html" title="Node.js sendfile and Forbidden error" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8367406449209139658</id><published>2012-01-11T09:30:00.000+08:00</published><updated>2012-01-11T09:30:06.435+08:00</updated><title type="text">Looking for Java/Groovy/Ruby/Python hacker</title><content type="html">Hi, we are looking for a guy (or girl) who can hack Java/Groovy/Ruby/Python -- a generalist.&lt;br /&gt;&lt;br /&gt;You must love to learn &amp;amp; and work on new stuff -- pick up advance Javascript, Android development, work on iOS projects, solve big data problems with mongodb, HTML5/CSS3 etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will have fun, glory, and opportunities to get your hand dirty on the latest techs. &lt;br /&gt;&lt;br /&gt;We are based in Singapore and expect you to be here. We will pay you good, and hope you will grow with us.&lt;br /&gt;&lt;br /&gt;Interested? PM me on my Twitter &lt;a href="https://twitter.com/#%21/seymores"&gt;@seymores&lt;/a&gt; or &lt;a href="http://www.linkedin.com/profile/view?id=29079416"&gt;Linkedin&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8367406449209139658?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8367406449209139658/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8367406449209139658" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8367406449209139658" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8367406449209139658" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2012/01/looking-for-javagroovyrubypython-hacker.html" title="Looking for Java/Groovy/Ruby/Python hacker" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-5930231805908740344</id><published>2011-09-23T15:02:00.004+08:00</published><updated>2011-09-23T15:02:42.959+08:00</updated><title type="text">DLog</title><content type="html">&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-5930231805908740344?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/5930231805908740344/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=5930231805908740344" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5930231805908740344" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5930231805908740344" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/09/dlog.html" title="DLog" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8494093444616850908</id><published>2011-09-20T21:57:00.001+08:00</published><updated>2011-09-20T21:57:39.797+08:00</updated><title type="text">Simple Scala IRC Client</title><content type="html">Direct and simple port of a typical Java IRC client to Scala. Notice the break. Consider this iteration 1 to learn Scala. :-)&lt;br /&gt;&lt;script src="https://gist.github.com/1229114.js?file=IrcClient.scala"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8494093444616850908?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8494093444616850908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8494093444616850908" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8494093444616850908" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8494093444616850908" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/09/simple-scala-irc-client.html" title="Simple Scala IRC Client" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-3088582502260191732</id><published>2011-09-05T00:06:00.000+08:00</published><updated>2011-09-05T00:06:14.852+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="brew" /><category scheme="http://www.blogger.com/atom/ns#" term="scala" /><title type="text">Homebrew install formula for Scala 2.9.1 final</title><content type="html">Save this homebrew formula to /usr/local/Library/Formula/scala2.9.1.rb. Then 'brew install scala2.9.1' from command line.&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1193071.js?file=scala-2.9.1.final"&gt;
 &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-3088582502260191732?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/3088582502260191732/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=3088582502260191732" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/3088582502260191732" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/3088582502260191732" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/09/homebrew-install-formula-for-scala-291.html" title="Homebrew install formula for Scala 2.9.1 final" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8707286516760738535</id><published>2011-08-04T15:33:00.000+08:00</published><updated>2011-08-04T15:33:06.608+08:00</updated><title type="text">UI Engineer (SG)</title><content type="html">&lt;b&gt;UI Engineer (Base in Singapore)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We are a successful web and mobile development consultancy seeking to bring on a UI engineer to assist with front-end web development. Our work environment is both fast-paced and fun.&lt;br /&gt;&lt;br /&gt;An ideal candidate should have these capabilities:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ability to communicate effectively in English. Mandarin is helpful but not mandatory.&lt;/li&gt;&lt;li&gt;Very solid HTML and CSS skills. You must live and breathe it.&lt;/li&gt;&lt;li&gt;JavaScript - understand concepts like scoping and declaration hoisting&lt;/li&gt;&lt;li&gt;Understand the differences between browser implementations of HTML, CSS, and JS&lt;/li&gt;&lt;li&gt;Reasonably adept with Photoshop &lt;/li&gt;&lt;/ul&gt;To be clear, this is not a web design position. It involves client-side development and implementation of designs.&lt;br /&gt;&lt;br /&gt;This is a full-time position based in Singapore (S088853). &lt;br /&gt;&lt;br /&gt;To apply, please email a resume/CV to hr017@favoritemedium.com and use 'SG UI Engineer [2011Q3]' as the email subject. Include links to Twitter and/or Github accounts, if applicable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8707286516760738535?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8707286516760738535/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8707286516760738535" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8707286516760738535" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8707286516760738535" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/08/ui-engineer-sg.html" title="UI Engineer (SG)" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-264886584452037734</id><published>2011-07-09T23:50:00.002+08:00</published><updated>2011-07-09T23:50:28.273+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gaelyk" /><category scheme="http://www.blogger.com/atom/ns#" term="mosc2011" /><category scheme="http://www.blogger.com/atom/ns#" term="groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="gae" /><title type="text">MOSC2011: Programming Google App Engine with Gaelyk</title><content type="html">&lt;div style="width:425px" id="__ss_8552292"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/seymores/google-app-engine-with-gaelyk" title="Google App Engine with Gaelyk"&gt;Google App Engine with Gaelyk&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse8552292" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mosc11-gaelyk-110709104021-phpapp01&amp;stripped_title=google-app-engine-with-gaelyk&amp;userName=seymores" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse8552292" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mosc11-gaelyk-110709104021-phpapp01&amp;stripped_title=google-app-engine-with-gaelyk&amp;userName=seymores" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/seymores"&gt;Seymour Cakes&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-264886584452037734?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/264886584452037734/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=264886584452037734" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/264886584452037734" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/264886584452037734" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/07/mosc2011-programming-google-app-engine.html" title="MOSC2011: Programming Google App Engine with Gaelyk" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-794659316278389724</id><published>2011-05-30T15:34:00.003+08:00</published><updated>2011-05-31T00:43:12.131+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="uicolor" /><category scheme="http://www.blogger.com/atom/ns#" term="cocoa" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title type="text">Custom UIColor from hex value</title><content type="html">This is how to convert hex to uicolor for iOS/iPhone development.&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/998562.js?file=gistfile1.txt"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-794659316278389724?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/794659316278389724/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=794659316278389724" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/794659316278389724" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/794659316278389724" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/custom-uicolor-from-hex-value.html" title="Custom UIColor from hex value" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8664533641799284167</id><published>2011-05-26T15:20:00.001+08:00</published><updated>2011-05-26T15:20:43.687+08:00</updated><title type="text">Where I sit and work</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-6-OzHBMYE10/Td3-9a2XRuI/AAAAAAAAA0I/DJQHSn8C69I/s1600/IMG_1867.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-6-OzHBMYE10/Td3-9a2XRuI/AAAAAAAAA0I/DJQHSn8C69I/s1600/IMG_1867.jpg" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;How about you guys? &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8664533641799284167?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8664533641799284167/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8664533641799284167" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8664533641799284167" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8664533641799284167" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/where-i-sit-and-work.html" title="Where I sit and work" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-6-OzHBMYE10/Td3-9a2XRuI/AAAAAAAAA0I/DJQHSn8C69I/s72-c/IMG_1867.jpg" height="72" width="72" /><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-6195309528138301285</id><published>2011-05-24T17:39:00.001+08:00</published><updated>2011-05-24T17:40:36.666+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="nerd" /><title type="text">What happens when you read a lot of books?</title><content type="html">You buy more books of course.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5AuFZ6r4XAs/Tdt8obkfSjI/AAAAAAAAA0A/EUps17VwkE0/s1600/Screen+shot+2011-05-24+at+PM+05.37.06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-5AuFZ6r4XAs/Tdt8obkfSjI/AAAAAAAAA0A/EUps17VwkE0/s1600/Screen+shot+2011-05-24+at+PM+05.37.06.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;For the rest of the interesting video, go &lt;a href="http://www.youtube.com/watch?v=E7qgiEMXTQQ"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-6195309528138301285?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/6195309528138301285/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=6195309528138301285" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/6195309528138301285" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/6195309528138301285" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/what-happen-when-you-read-lot-of-books.html" title="What happens when you read a lot of books?" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-5AuFZ6r4XAs/Tdt8obkfSjI/AAAAAAAAA0A/EUps17VwkE0/s72-c/Screen+shot+2011-05-24+at+PM+05.37.06.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-2850247827136911241</id><published>2011-05-24T15:21:00.000+08:00</published><updated>2011-05-24T15:21:55.754+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="groovy" /><title type="text">AndroidManifest.xml file decompressor</title><content type="html">If you ever need to extract out the string from AndroidManifest.xml from your apk file, and you happen to need it to be in Groovy, use this. I hope this help someone out there. Thanks to &lt;a href="http://stackoverflow.com/questions/2097813/how-to-parse-the-androidmanifest-xml-file-inside-an-apk-package"&gt;Robo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/988255.js?file=androidmanifest_decompressor.groovy"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-2850247827136911241?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/2850247827136911241/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=2850247827136911241" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/2850247827136911241" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/2850247827136911241" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/androidmanifestxml-file-decompressor.html" title="AndroidManifest.xml file decompressor" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-5982927220068090737</id><published>2011-05-20T23:43:00.001+08:00</published><updated>2011-05-21T00:26:35.698+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="andengine" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title type="text">Plaything: Andengine</title><content type="html">What I am playing now -- Killer Pool 2011, Android game with &lt;a href="http://www.andengine.org/"&gt;Andengine&lt;/a&gt;.&lt;br /&gt;I spent 2 hours of my youth reading the code examples and hack around the physic engine to come up with a simple game, screenshot below. I like what I see so far. The code on &lt;a href="http://github.com/seymores/killerpool2011"&gt;github here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qCTTxtm6SUw/TdaLjAB739I/AAAAAAAAAz8/bJhBLB4Uv6A/s1600/device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-qCTTxtm6SUw/TdaLjAB739I/AAAAAAAAAz8/bJhBLB4Uv6A/s1600/device.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-5982927220068090737?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/5982927220068090737/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=5982927220068090737" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5982927220068090737" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5982927220068090737" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/plaything-andengine.html" title="Plaything: Andengine" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-qCTTxtm6SUw/TdaLjAB739I/AAAAAAAAAz8/bJhBLB4Uv6A/s72-c/device.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-5406937560931244142</id><published>2011-05-20T13:31:00.000+08:00</published><updated>2011-05-20T13:31:27.309+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java" /><title type="text">Re: Seven Advantages Of Java</title><content type="html">My usual routine is to checkout dzone.com after coming back from lunch and today the&amp;nbsp;&lt;a href="http://bielik.blogspot.com/2011/05/seven-advantages-of-java.html"&gt;Seven Advantages of Java blog post caught my attention&lt;/a&gt;. It's a quick and easy read but I will play the devil's advocate and lets put a spot light on the 7 "advantages" of Java.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;i&gt;&lt;b&gt;1.&lt;/b&gt; &lt;b&gt;Java is easy to learn&lt;/b&gt;&lt;br /&gt;Java was designed to be easy to use and is therefore much more easy to  write, compile, debug, run and learn than other programming languages.&lt;/i&gt;&lt;/div&gt;&lt;div style="color: #741b47; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;Well not really. This is pretty subjective -- Java is easy to learn compared to what? C or C++? Ruby is easy. Groovy is easier if you already have Java background. Python is the easiest as most claimed.&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #3d85c6; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;i&gt;&lt;b&gt;2. Java is object-oriented&lt;/b&gt;&lt;br /&gt;This allows you to create modular maintainable applications and reusable code.&lt;/i&gt;&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-family: inherit;"&gt;Just because it's OO does not mean that it will create modular and maintainable program. OO languages are dime a dozen and that doesn't necessary make it an advantage for Java. &lt;/span&gt;&lt;i style="color: #666666; font-family: inherit;"&gt;(Psst, It's how you write the code)&lt;/i&gt;&lt;span style="font-family: inherit;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #741b47; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;i&gt;3. &lt;b&gt;Java is platform-independent&lt;/b&gt;&lt;br /&gt;One  of the most significant advantages of Java is its ability to move   easily from one system to another. The ability to run the same  code on  many different systems is crucial to www,  and Java succeeds at this by  being platform-independent at the  source and almost binary levels.&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;This platform-independent thing is overrated but I bought it -- hook and sinker -- when I was in college. This is a marketing-speak advantage but not so much of a practical thing in real world. It helps to know how to program in Java but you still have to learn the platform idioms and usage patterns. For example, you can't and don't run servlet as desktop app and vice versa. Btw, wassup with the "almost binary levels" -- it will always compile down to JVM bytecode.&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;i&gt;&lt;b&gt;4. Java is distributed&lt;/b&gt;&lt;br /&gt;Java is  designed to make distributed computing easy with the networking   capability that is inherently integrated into it. Writing network   programs in Java is like sending and receiving data to and from a file.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;This true and may be cool many years back but almost every language framework comes with some kind of distributed capability that you can use right away. So, meh, overrated. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;5. Java is secure&lt;/b&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;" /&gt;&lt;span style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt; Java  considers security as part of its design. The Java language,  compiler,  interpreter, and runtime environment were each developed with  security  in mind.&lt;/span&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This is true to certain extend but when we talk about security we have to understand that security covers a huge body of concern -- authentication, authorization, integrity etc. So Java VM is secure against attacks like buffer overflow, but the security of the software is not guaranteed by Java alone. It's how you program it. The author should back it up with more specifics.&lt;br /&gt;&lt;div style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;i&gt;&lt;b&gt;6. Java is robust&lt;/b&gt; &lt;br /&gt;Robust means reliability. Java  puts a lot of emphasis on early checking  for possible errors, as Java  compilers are able to detect many  problems that would first show up  during execution time in other  languages.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;By robust you mean the damn thing doesn't crash mysteriously then ya Java is robust. But so is every languages worth their beans. Weak argument really. Reminds me of an advert I came across many years ago -- one of the publicize "Feature" of the program is, &lt;u&gt;Bug Free&lt;/u&gt;. :-O&lt;br /&gt;&lt;br /&gt;Oh, I don't think you will think about this advantage point when you are getting OutOfMemoryException.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;i&gt;&lt;b&gt;Java is multithreaded&lt;/b&gt;&lt;br /&gt;Multithreaded  is the capability for a program to perform several tasks  simultaneously  within a program. In Java, multithreaded programming has  been smoothly  integrated into it, while in other languages, operating  system-specific  procedures have to be called in order to enable  multithreading.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;I think we get it, multithreaded is important and Java is multithreaded language. Ok. So what are the "other languages"?&lt;br /&gt;&lt;br /&gt;The author sounds like he is new to Java world. I hope he won't bail once he learned about Ruby. Hmm, maybe he will write "100 Reasons Ruby Kicks Java-ass" then.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-5406937560931244142?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/5406937560931244142/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=5406937560931244142" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5406937560931244142" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5406937560931244142" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/re-seven-advantages-of-java.html" title="Re: Seven Advantages Of Java" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-7117040289781757145</id><published>2011-05-20T11:28:00.001+08:00</published><updated>2011-05-20T11:29:21.259+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="objective-c" /><title type="text">I earned the "Famous Question" badge in StackOverflow</title><content type="html">But it shows how Objective-C can be shitty in areas other language never give a rat-ass about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;So &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;a class="question-hyperlink" href="http://stackoverflow.com/questions/968792/what-is-the-right-way-to-check-for-a-null-string-in-objective-c"&gt;What is the right way to check for a null string in Objective-C?&lt;/a&gt;&lt;/span&gt;&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/-AWe3GeYgIPM/TdXfPtfW7tI/AAAAAAAAAz4/d-qwdtvT46A/s1600/Screen+shot+2011-05-20+at+AM+11.25.00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-AWe3GeYgIPM/TdXfPtfW7tI/AAAAAAAAAz4/d-qwdtvT46A/s1600/Screen+shot+2011-05-20+at+AM+11.25.00.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-7117040289781757145?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/7117040289781757145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=7117040289781757145" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/7117040289781757145" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/7117040289781757145" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/i-earned-famous-question-badge-in.html" title="I earned the &quot;Famous Question&quot; badge in StackOverflow" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-AWe3GeYgIPM/TdXfPtfW7tI/AAAAAAAAAz4/d-qwdtvT46A/s72-c/Screen+shot+2011-05-20+at+AM+11.25.00.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-5379452529228163243</id><published>2011-05-18T21:14:00.003+08:00</published><updated>2011-05-18T21:14:54.147+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="groovy" /><title type="text">What's new in Groovy 1.8</title><content type="html">&lt;div style="width:425px" id="__ss_8010619"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/glaforge/groovy-18-update-guillaume-laforge-gr8conf-europe-2011" title="Groovy 1.8 update - Guillaume Laforge - GR8Conf Europe 2011"&gt;Groovy 1.8 update - Guillaume Laforge - GR8Conf Europe 2011&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/8010619" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/glaforge"&gt;Guillaume Laforge&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-5379452529228163243?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/5379452529228163243/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=5379452529228163243" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5379452529228163243" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/5379452529228163243" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/whats-new-with-groovy-18.html" title="What's new in Groovy 1.8" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-1737997360655375760</id><published>2011-05-18T20:25:00.004+08:00</published><updated>2011-05-18T21:29:40.183+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><category scheme="http://www.blogger.com/atom/ns#" term="shit" /><title type="text">MY FM iPhone app sucks shit</title><content type="html">I have been pondering this since last week and at last I decided that I have to say my piece or I will continue to not shit comfortably. Yes, this MY FM radio app disturbs me this much. To flesh out my points I am putting&lt;span style="color: white;"&gt; &lt;/span&gt;&lt;b style="color: white;"&gt;&lt;span style="background-color: magenta;"&gt;numbers&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #999999;"&gt; &lt;/span&gt;to the UI elements that which I think made this app sucks shit.&lt;br /&gt;&lt;br /&gt;But before we proceed, let me just say that I love this app. I was a daily listener to MyFM many years back when I was living in KL and driving to work with MyFM is a daily thing. I don't understand all the Cantonese but I understand enough to laugh along.&lt;br /&gt;&lt;br /&gt;This app is a radio streaming app and it appears that MY FM is using radioactive.sg service for the content steaming. This client might just be a generic app that radioactive.sg provides along with the streaming service. But boy the UI doesn't do MY FM justice at all. If you are radioactive.sg and appreciate my criticism, then please contact me -- I hope I can provide some sort of help.&lt;br /&gt;&lt;br /&gt;Now lets get on to the shit.&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/-FsjRzf68I0s/TdOxz6uVlTI/AAAAAAAAAzM/QntEDfnHxno/s1600/elephant20shit1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://1.bp.blogspot.com/-FsjRzf68I0s/TdOxz6uVlTI/AAAAAAAAAzM/QntEDfnHxno/s320/elephant20shit1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;First you can get the app &lt;a href="http://itunes.apple.com/my/app/my-fm/id325024723?mt=8"&gt;here.&lt;/a&gt; While you are on the page, check out the comments, generally ppl are saying this app is a fantastic app. I agree. Just that the UI makes it sucks shit. Now on startup, everything looks nice and cool. I like the little Bruce Lee with the crap helmet. Thumbs up!&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/-FtFi_4K5Bpk/TdOyB5amZ1I/AAAAAAAAAzQ/rUxBxRqByzY/s1600/cover.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-FtFi_4K5Bpk/TdOyB5amZ1I/AAAAAAAAAzQ/rUxBxRqByzY/s400/cover.jpg" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Then things go downhill from there.&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/-FN5Z45pjRBg/TdOwD-6h57I/AAAAAAAAAzI/rhBuMbQ4piI/s1600/myfm1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-FN5Z45pjRBg/TdOwD-6h57I/AAAAAAAAAzI/rhBuMbQ4piI/s400/myfm1.jpg" width="265" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Notice the MY FM logo? It's not supposed to be here. In fact it's confusing why it's part of the "tab". Logo lives in titleView -- the top center bar, see #2.&lt;/li&gt;&lt;li&gt;"Player" title is seriously, re***** -- I don't know, something doesn't look right here. I am thinking the designer got lazy, and rather go home early than say, not design shit. I suggest the logo be put here. But well that's just my opinion.&lt;/li&gt;&lt;li&gt;"Background". Wtf is that? Oh wait, something about using Safari to access the site. Well whatever, I am getting some MySQL error. I know it's getting repetitious, but this button is shitty. Get rid of it.&lt;/li&gt;&lt;li&gt;I don't even want to talk about the "twitter" icon here. When I got to this screen, the icons looks blurry and shitty. Get rid of it.&lt;/li&gt;&lt;li&gt;The "i" info screen is also another sucks shit section -- you can safely ignore it. This is also the part where you found out that either Airtime &lt;u style="color: #990000;"&gt;Mangement&lt;/u&gt; and Programming Sdn Bhd did the app, or radioactive.sg got the job done. I don't know, since this app is shitty, I recommend you stay clear of them.&lt;/li&gt;&lt;/ol&gt;Well, so far so good. Erm, I mean, yes it's good enough except I don't hear anything. Something is not right. Oh well, lets proceed anyway.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-kceMhpyUuPg/TdO1Xa8h1YI/AAAAAAAAAzY/OV9Hw2MExKo/s1600/myfm2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-kceMhpyUuPg/TdO1Xa8h1YI/AAAAAAAAAzY/OV9Hw2MExKo/s400/myfm2.jpg" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;So, now if you go to "Stations" and select "MY FM" you will come to the screen above. At this point I realized that the tabbar doesn't look native. Probably this app was done using phonegap or one of those Adobe thingy. I don't know, it sucks shit, and I only have one advise at this point -- go learn the damn Xcode and use the controls properly! Geez.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;Now, first off, I thought the "Call" button is a good feature. And no harm if they could add a SMS button too. However, being used to proper button, the leveled bevel look is confusing. I didn't know it's a button and took me few seconds to figure out it's a button. Well, you know, I have been saying -- this app sucks shit. Also, go check out the book, &lt;a href="http://www.amazon.com/gp/product/0321344758/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=seymourcakes-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=0321344758"&gt;Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition&lt;/a&gt;&lt;img alt="" border="0" class=" ykprlpqtclsvlbhiswyh ykprlpqtclsvlbhiswyh ykprlpqtclsvlbhiswyh" height="1" src="http://www.assoc-amazon.com/e/ir?t=&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321344758&amp;amp;camp=217145&amp;amp;creative=399349" style="border: none !important; margin: 0px !important;" width="1" /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Email button is fine, but the usual complain here, the button is a shitty leveled or pressed bevel button. Real button doesn't look like this. I suggest the designer go press a few buttons with the native iPhone app and try again. Seriously.&lt;/li&gt;&lt;li&gt;I like the big "Listen Live" button, but with all the fuckups, this is like finding a single piece of toilet paper left in a dirty toilet. But it's Ok. This app can try to win the "Shitty App" category.&lt;/li&gt;&lt;li&gt;Now, if there's is anything, anything wrong at all in this screen, it has to be this "Back" button. This "Back" button represent all that is wrong with this app -- they got it wrong so bad it sucks shit. I will keep it short -- PUT THE DAMN "BACK" BUTTON AT THE TOP LEFT CORNER. You know, like how the rest of the app universe works. Seriously, Apple need to buff up their review team. If I am Steve Jobs, I would yank the fucker doing the review of this app and tell him in slow calm voice, "You disgraced Apple".&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ewDfZwvwCWI/TdPJsOARxlI/AAAAAAAAAzg/Z5AsW7aV7Nw/s1600/disgraced.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ewDfZwvwCWI/TdPJsOARxlI/AAAAAAAAAzg/Z5AsW7aV7Nw/s1600/disgraced.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;Ok, I got bored, but I guess you get my point. It's basically sucky in UI but it has the goods. Still...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-FsjRzf68I0s/TdOxz6uVlTI/AAAAAAAAAzM/QntEDfnHxno/s1600/elephant20shit1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://1.bp.blogspot.com/-FsjRzf68I0s/TdOxz6uVlTI/AAAAAAAAAzM/QntEDfnHxno/s320/elephant20shit1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lets rethink the app for a moment. MY FM is a radio app and really all we want is to tune in to the live radio stream. Cut out the rest of the stuff. Just the radio.&lt;br /&gt;&lt;br /&gt;I ripped off some radio app and spent like 20 mins "redesign" it for MY FM, and I present to you the super-lite MY FM app. Now if I could figure out how to hook into the radioactive.sg stream, I could probably create the whole app, but for now, this is what I think is good and shit-free. I mean, it's basically featureless so what the hell can be so sucky about it? But who knows, if you agree or disagree, drop me a line. Cheers.&lt;br /&gt;&lt;br /&gt;*PS I love MY FM. :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0DKHh45OLbA/TdO6tVmHIqI/AAAAAAAAAzc/x9vCPN5Jnc4/s1600/suggestion.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-0DKHh45OLbA/TdO6tVmHIqI/AAAAAAAAAzc/x9vCPN5Jnc4/s400/suggestion.jpg" width="266" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="goog_2060466307"&gt;&lt;/span&gt;&lt;span id="goog_2060466308"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-1737997360655375760?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/1737997360655375760/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=1737997360655375760" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/1737997360655375760" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/1737997360655375760" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/myfm-iphone-app-sucks-shit.html" title="MY FM iPhone app sucks shit" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-FsjRzf68I0s/TdOxz6uVlTI/AAAAAAAAAzM/QntEDfnHxno/s72-c/elephant20shit1.jpg" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8652288874704106376</id><published>2011-05-18T12:11:00.003+08:00</published><updated>2011-05-18T22:45:06.059+08:00</updated><title type="text">What's your "music setup" like?</title><content type="html">The thing about us programmer is that we glue our butts on the chair whole day and we just gotta have some music. I am sure you heard a lot about "programming songs/music". We I need to warn you that regardless whether it's Britney Spears or Massive Attack, you music is only as good as your speaker or earphone (cans).&lt;br /&gt;&lt;br /&gt;Getting a good pair of cans can be expensive. I know because I already gotten myself few pairs with price tags that I am embarrassed to say out loud. I own Grado S65, K75 (best bang for buck type), and my latest Atomic Floyd. Well you get what you can.&lt;br /&gt;&lt;br /&gt;But there's something else other than getting a good cans -- get a headphone amplifier! Shown here is my Hippobox headphone amp. Cost me SGD$40 bux and boy does it make my cans sing. You don't want that ugly box dangling if you are traveling but no reason not to have one of these baby pump up the music while you're on your desk.&lt;br /&gt;&lt;br /&gt;Short description -- with my mini amp, the orchestra is right in front of me and music is live and loud and clear. Without, I am sitting in front of the TV with the orchestra showing. I hate that fucker who introduced me to these baby amps -- how could I live without them from now on?!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: #cccccc; color: #0b5394;"&gt;* Warning, get a good headphone first before getting any kind of amp. Get both if you can. :-) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-S9bOqNjAkjk/TdM389aoYVI/AAAAAAAAAzE/X2l8P-vGFE0/s1600/IMG_1821.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-S9bOqNjAkjk/TdM389aoYVI/AAAAAAAAAzE/X2l8P-vGFE0/s320/IMG_1821.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8652288874704106376?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8652288874704106376/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8652288874704106376" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8652288874704106376" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8652288874704106376" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/whats-your-music-setup-like.html" title="What's your &quot;music setup&quot; like?" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-S9bOqNjAkjk/TdM389aoYVI/AAAAAAAAAzE/X2l8P-vGFE0/s72-c/IMG_1821.JPG" height="72" width="72" /><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-1474816914942475586</id><published>2011-05-17T11:22:00.000+08:00</published><updated>2011-05-17T11:22:10.302+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cocoa touch" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title type="text">Kill all firstResponder</title><content type="html">If you ever have the problem of keyboard not resigning, it is most probably caused by "runaway" pointer to the texfield/textview that was holding the firstresponder. The popular way to clear all firstResponder in the view is by iterating through all the views and check if it's firstResponder -- and if it is, then resign.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;- (void)resetKeyboard {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Resign keyboard&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (UIView *view in [self.view subviews]) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ([view isFirstResponder]) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [view resignFirstResponder];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-1474816914942475586?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/1474816914942475586/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=1474816914942475586" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/1474816914942475586" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/1474816914942475586" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/kill-all-firstresponder.html" title="Kill all firstResponder" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8833389446341919746</id><published>2011-05-10T15:42:00.001+08:00</published><updated>2011-05-10T15:43:31.202+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title type="text">Get UIImage from NSString URL</title><content type="html">To get an image from Internet, you can load the image with NSURL as NSData and then init the UIImage with the NSData.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt; NSData * imageData = [[NSData alloc] initWithContentsOfURL: &lt;br /&gt;                                       [NSURL URLWithString:&lt;br /&gt;                                        @"http://graph.facebook.com/seymores/picture"]];&lt;br /&gt; self.image = [UIImage imageWithData: imageData];&lt;br /&gt; [imageData release];&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8833389446341919746?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8833389446341919746/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8833389446341919746" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8833389446341919746" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8833389446341919746" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/get-uiimage-from-nsstring-url.html" title="Get UIImage from NSString URL" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8569969959803940926</id><published>2011-05-07T19:45:00.001+08:00</published><updated>2011-05-07T19:47:44.366+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mosc2011" /><title type="text">MyOSS Conference 2011</title><content type="html">So &lt;a href="http://blog.harisfazillah.info/2011/05/poll-what-topics-interest-you-for.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+TodayNotesBlogAboutLinuxOpenSourceComputerInternet+%28Today+Notes+Blog+About+Linux+Open+Source+Computer+Internet%29"&gt;MOS2011&lt;/a&gt; is coming up and I am kind of excited about it. I was there last year to talk about &lt;a href="http://shitmores.blogspot.com/2010/06/my-slides-open-source-software.html"&gt;Agile practices for healthy software engineering&lt;/a&gt;. I didn't attend all the sessions but I remember the session on converting a normal HTML site to fit mobile browser very informative, and as well as MariaDB engine session by Colin Charles.&lt;br /&gt;&lt;br /&gt;I have submitted a proposal to talk about using Gaelyk for cloud programming. &lt;a href="http://gaelyk.appspot.com/"&gt;Gaelyk&lt;/a&gt; is a Groovy PaaS framework on top of &lt;a href="https://appengine.google.com/"&gt;Google App Engine&lt;/a&gt; -- it is mature and a viable alternative to using Java for developing GAE application. Like all Groovy framework, it's easy to get started and I hope I will get the chance to show a glimpse of the future of cloud programming with Gaelyk and GAE.&lt;br /&gt;&lt;br /&gt;But for now, if you want to learn more, check out&lt;a href="http://gaelyk.appspot.com/tutorial"&gt; Gaelyk Tutorial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-PQ6jWhA6Qc0/TcUvtEzurjI/AAAAAAAAAys/fgxAQQ7CAy8/s1600/gaelyk.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-PQ6jWhA6Qc0/TcUvtEzurjI/AAAAAAAAAys/fgxAQQ7CAy8/s1600/gaelyk.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8569969959803940926?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8569969959803940926/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8569969959803940926" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8569969959803940926" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8569969959803940926" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/myoss-conference-2011.html" title="MyOSS Conference 2011" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-PQ6jWhA6Qc0/TcUvtEzurjI/AAAAAAAAAys/fgxAQQ7CAy8/s72-c/gaelyk.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-7003307393423336345</id><published>2011-05-07T19:02:00.002+08:00</published><updated>2011-05-07T19:59:38.387+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="uiimageview" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><category scheme="http://www.blogger.com/atom/ns#" term="objective-c" /><title type="text">How to create photo frame effect (UIImageView)</title><content type="html">There is a really easy way to make a ordinary UIImageView photo frame with just few lines of code.&lt;br /&gt;&lt;br /&gt;UIImageView inherits from UIView so it has a CALayer. Among the CALayer properties that you can manipulate is the shadow and border. The trick is to set the border to few pix thick and drop some shadow radius and you instantly get a nice photo frame effect.&lt;br /&gt;&lt;br /&gt;So if you want to turn a boring looking photo (like the below) into something that look like it's in a photo frame with some drop shadow, do this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;// #import &amp;lt;QuartzCore/QuartzCore.h&amp;gt;&lt;br /&gt;    // picture is an instance of UIImageView&lt;br /&gt;&lt;br /&gt;    CALayer *layer = picture.layer;&lt;br /&gt;    [layer setBorderColor: [[UIColor whiteColor] CGColor]];&lt;br /&gt;    [layer setBorderWidth:8.0f];&lt;br /&gt;    [layer setShadowColor: [[UIColor blackColor] CGColor]];&lt;br /&gt;    [layer setShadowOpacity:0.9f];&lt;br /&gt;    [layer setShadowOffset: CGSizeMake(1, 3)];&lt;br /&gt;    [layer setShadowRadius:4.0];&lt;br /&gt;    [picture setClipsToBounds:NO];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="https://github.com/seymores/ios-utils/blob/master/classes/UIImageView+PhotoFrame.h"&gt;I have made a handy category to apply this photo frame effect to any UIImageView easily here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-1PAVHRf5Rr0/TcUlrI00qQI/AAAAAAAAAyk/nH4AE3rHVFQ/s1600/Screen+shot+2011-05-07+at+PM+06.44.33.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-1PAVHRf5Rr0/TcUlrI00qQI/AAAAAAAAAyk/nH4AE3rHVFQ/s1600/Screen+shot+2011-05-07+at+PM+06.44.33.png" /&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://3.bp.blogspot.com/-2K46HLlLQLA/TcUl0mpkiwI/AAAAAAAAAyo/cEdgR7JvTJs/s1600/Screen+shot+2011-05-07+at+PM+06.50.43.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-2K46HLlLQLA/TcUl0mpkiwI/AAAAAAAAAyo/cEdgR7JvTJs/s1600/Screen+shot+2011-05-07+at+PM+06.50.43.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-7003307393423336345?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/7003307393423336345/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=7003307393423336345" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/7003307393423336345" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/7003307393423336345" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/05/how-to-create-photo-frame-effect.html" title="How to create photo frame effect (UIImageView)" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-1PAVHRf5Rr0/TcUlrI00qQI/AAAAAAAAAyk/nH4AE3rHVFQ/s72-c/Screen+shot+2011-05-07+at+PM+06.44.33.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-2918259266582468990</id><published>2011-04-24T13:57:00.001+08:00</published><updated>2011-04-24T16:04:32.129+08:00</updated><title type="text">A little preview of what I am working on</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-sJVhlaj_ksM/TbO7vUC3UuI/AAAAAAAAAyc/VxKRM8LstXQ/s1600/Screen+shot+2011-04-24+at+PM+01.55.58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-sJVhlaj_ksM/TbO7vUC3UuI/AAAAAAAAAyc/VxKRM8LstXQ/s400/Screen+shot+2011-04-24+at+PM+01.55.58.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-2918259266582468990?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/2918259266582468990/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=2918259266582468990" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/2918259266582468990" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/2918259266582468990" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/04/little-prevew-of-what-i-am-working-on.html" title="A little preview of what I am working on" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-sJVhlaj_ksM/TbO7vUC3UuI/AAAAAAAAAyc/VxKRM8LstXQ/s72-c/Screen+shot+2011-04-24+at+PM+01.55.58.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-1044810639262548928</id><published>2011-04-23T12:07:00.000+08:00</published><updated>2011-04-23T12:07:28.949+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="xcode" /><category scheme="http://www.blogger.com/atom/ns#" term="iOS" /><title type="text">Xcode tip: Make use of #warning directive for good</title><content type="html">If you have been using Xcode4 lately you will notice few #warning being generated a for new UITableViewController class. I didn't notice it before in Xcode3, but it's good directive that you can make use of to add note or todo. Of course you can &lt;a href="http://stackoverflow.com/questions/367368/how-to-define-a-preprocessor-symbol-in-xcode"&gt;add custom directive&lt;/a&gt; but I am not going into that.&lt;br /&gt;&lt;br /&gt;See how I am making use of the #warning for todo items in the screenshot below.&lt;br /&gt;Hope this tip helps you.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8BDLtCujhRc/TbJOkJuGs-I/AAAAAAAAAyY/Lu9LhedJDZ0/s1600/Screen+shot+2011-04-23+at+AM+11.57.21.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-8BDLtCujhRc/TbJOkJuGs-I/AAAAAAAAAyY/Lu9LhedJDZ0/s1600/Screen+shot+2011-04-23+at+AM+11.57.21.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/-8BDLtCujhRc/TbJOkJuGs-I/AAAAAAAAAyY/Lu9LhedJDZ0/s1600/Screen+shot+2011-04-23+at+AM+11.57.21.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-8BDLtCujhRc/TbJOkJuGs-I/AAAAAAAAAyY/Lu9LhedJDZ0/s1600/Screen+shot+2011-04-23+at+AM+11.57.21.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-1044810639262548928?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/1044810639262548928/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=1044810639262548928" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/1044810639262548928" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/1044810639262548928" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/04/xcode-tip-make-use-of-warning-directive.html" title="Xcode tip: Make use of #warning directive for good" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-8BDLtCujhRc/TbJOkJuGs-I/AAAAAAAAAyY/Lu9LhedJDZ0/s72-c/Screen+shot+2011-04-23+at+AM+11.57.21.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15692829.post-8771725774820060857</id><published>2011-04-19T13:11:00.002+08:00</published><updated>2011-04-22T23:11:41.175+08:00</updated><title type="text">Github t-shirts</title><content type="html">I have&lt;span style="color: white; font-size: large;"&gt;&lt;span style="background-color: magenta;"&gt; some Github t-shirts for sale&lt;/span&gt;&lt;/span&gt;, see pic below. Only SGD 39.00 each including shipping to Malaysia and Singapore.&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/-iz30H3wldq4/Ta0ZGlp1VqI/AAAAAAAAAyU/b2EsKU8K02E/s1600/IMG_1733.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="297" src="http://4.bp.blogspot.com/-iz30H3wldq4/Ta0ZGlp1VqI/AAAAAAAAAyU/b2EsKU8K02E/s400/IMG_1733.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The original t-shirt from github: http://shop.github.com/products/i-octocat-code &amp;amp; http://shop.github.com/products/blacktocat-2-0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15692829-8771725774820060857?l=shitmores.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://shitmores.blogspot.com/feeds/8771725774820060857/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15692829&amp;postID=8771725774820060857" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8771725774820060857" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15692829/posts/default/8771725774820060857" /><link rel="alternate" type="text/html" href="http://shitmores.blogspot.com/2011/04/github-t-shirts.html" title="Github t-shirts" /><author><name>Seymour Cakes</name><uri>http://www.blogger.com/profile/15257037423143802963</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="27" src="http://4.bp.blogspot.com/_xpwq_Sv0p98/Sx0myYVTHtI/AAAAAAAAAps/TNd786MYg6c/S220/Photo+on+2009-12-07+at+23.46.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-iz30H3wldq4/Ta0ZGlp1VqI/AAAAAAAAAyU/b2EsKU8K02E/s72-c/IMG_1733.jpg" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

