<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Olivier Yiptong's blog</title>
	<atom:link href="http://www.oliyiptong.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.oliyiptong.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 24 Oct 2008 15:23:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Loonie deals</title>
		<link>http://www.oliyiptong.com/blog/2008/10/24/loonie-deals/</link>
		<comments>http://www.oliyiptong.com/blog/2008/10/24/loonie-deals/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 15:23:29 +0000</pubDate>
		<dc:creator>oli</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/oliviery/oliyiptong.com/blog/wp-content/plugins/autometa/autometa.php</b> on line <b>300</b><br />
		<category><![CDATA[Uncategorized]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/?p=93</guid>
		<description><![CDATA[I got an email from Amazon.ca yesterday with a promotion: &#8220;Loonie Deals on Books&#8221;. The introductory text to the deal says: Take advantage of the robust loonie with special discounts on thousands of titles. Browse through our lists to discover great bargains on new and former bestsellers across all categories, as well as perennial favourites. [...]]]></description>
				<content:encoded><![CDATA[<p>I got an email from Amazon.ca yesterday with a promotion: &#8220;Loonie Deals on Books&#8221;. The introductory text to the deal says:</p>
<blockquote><p>Take advantage of the robust loonie with special discounts on thousands of titles. Browse through our lists to discover great bargains on new and former bestsellers across all categories, as well as perennial favourites.</p></blockquote>
<p>Last time I checked:</p>
<p>CDN: 1, USD: 0.78</p>
<table class="yfnc_datamodoutline1" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody></tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2008/10/24/loonie-deals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ack!</title>
		<link>http://www.oliyiptong.com/blog/2008/10/04/ack/</link>
		<comments>http://www.oliyiptong.com/blog/2008/10/04/ack/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 05:53:43 +0000</pubDate>
		<dc:creator>oli</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/oliviery/oliyiptong.com/blog/wp-content/plugins/autometa/autometa.php</b> on line <b>300</b><br />
		<category><![CDATA[software]]></category>
		<category><![CDATA[Add new tag]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/?p=81</guid>
		<description><![CDATA[_ /&#124; \'o.O' =(___)= U ack! find . -name &#8220;*.some_ext&#8221; &#124; xargs grep &#8216;some_pattern&#8217; Man does this not age very well when you do it al lot. Yeah yeah, you&#8217;re a smart-ass and you can write a shell script and make that easier. But what if there was a tool you could use to do it smartly? [...]]]></description>
				<content:encoded><![CDATA[<div class="bill">
<center></p>
<table border=0 cellpadding=10 cellspacing=20>
<tr>
<td>
<pre style="font-weight : bold;">
_   /|
\'o.O'
=(___)=
   U    ack!
</pre>
</td>
</tr>
</table>
<p></center>
</div>
<blockquote><p>find . -name &#8220;*.some_ext&#8221; | xargs grep &#8216;some_pattern&#8217;</p></blockquote>
<p>Man does this not age very well when you do it al lot. Yeah yeah, you&#8217;re a smart-ass and you can write a shell script and make that easier. But what if there was a tool you could use to do it smartly? With highlighting and a slew of other features? Enter <a href="http://petdance.com/ack/" onclick="javascript:urchinTracker ('/outbound/article/petdance.com');">ack</a>.</p>
<p>I&#8217;ve been ignoring my homies on #pso with a stupid kind of &#8216;i got fingers and i can type&#8217; smugness. So wrong was I. His name is Bill, he&#8217;s my new friend.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2008/10/04/ack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The culture of failure</title>
		<link>http://www.oliyiptong.com/blog/2008/09/23/the-culture-of-failure/</link>
		<comments>http://www.oliyiptong.com/blog/2008/09/23/the-culture-of-failure/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 19:24:10 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[entrepreneurship]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<category>failure</category>
	<category>of kleiner</category>
	<category>came across was</category>
	<category>komisar</category>
	<category>perfect</category>
	<category>fail</category>
	<category>idea</category>
	<category>hand</category>
	<category>failure</category>
	<category>of kleiner</category>
	<category>came across was</category>
	<category>komisar</category>
	<category>perfect</category>
	<category>stanford</category>
	<category>fail</category>
	<category>idea</category>
	<category>failure</category>
	<category>of kleiner</category>
	<category>came across was</category>
	<category>komisar</category>
	<category>perfect</category>
	<category>stanford</category>
	<category>fail</category>
	<category>idea</category>
	<category>failure</category>
	<category>of kleiner</category>
	<category>came across was</category>
	<category>komisar</category>
	<category>perfect</category>
	<category>fail</category>
	<category>stanford</category>
	<category>idea</category>
	<category>failure</category>
	<category>came across was</category>
	<category>of kleiner</category>
	<category>fail</category>
	<category>komisar</category>
	<category>stanford</category>
	<category>perfect</category>
	<category>idea</category>
	<category>failure</category>
	<category>came across was</category>
	<category>of kleiner</category>
	<category>fail</category>
	<category>komisar</category>
	<category>stanford</category>
	<category>perfect</category>
	<category>idea</category>
	<category>failure</category>
	<category>stanford</category>
	<category>true</category>
	<category>came across was</category>
	<category>of kleiner</category>
	<category>fail</category>
	<category>komisar</category>
	<category>perfect</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/?p=73</guid>
		<description><![CDATA[I love failure and I want to fail more. While looking at videos over at Stanford&#8217;s Entrepreneur&#8217;s corner, I stumbled upon one video from Randy Komisar of Kleiner Perkins, the VC firm. What he says is true of the valley, and of entrepreneurship in general; one must embrace failure. &#8216;Fail often, fail fast&#8216; is a mantra typically [...]]]></description>
				<content:encoded><![CDATA[<p><embed id='single' width='320' height='260' flashvars='file=http://ecorner.stanford.edu/996.ply&#038;showdownload=true&#038;usecaptions=true&#038;usefullscreen=false&#038;width=320&#038;height=260&#038;rotatetime=2&#038;linkfromdisplay=true&#038;linktarget=_blank&#038;showicons=false&#038;showdigits=false' src='http://ecorner.stanford.edu/swf/mediaplayer.swf' type='application/x-shockwave-flash'></embed><br />
<br/><br />
I love failure and I want to fail more. While looking at videos over at Stanford&#8217;s <a href="http://ecorner.stanford.edu/index.html" onclick="javascript:urchinTracker ('/outbound/article/ecorner.stanford.edu');">Entrepreneur&#8217;s corner</a>, I stumbled upon <a href="http://ecorner.stanford.edu/authorMaterialInfo.html?mid=996" onclick="javascript:urchinTracker ('/outbound/article/ecorner.stanford.edu');">one video</a> from <a href="http://mot.berkeley.edu/Berkeley_Students/News/Lecture_Series/SP07/Komisar.htm" onclick="javascript:urchinTracker ('/outbound/article/mot.berkeley.edu');">Randy Komisar</a> of Kleiner Perkins, the VC firm. What he says is true of the valley, and of entrepreneurship in general; one must embrace failure. &#8216;<em>Fail often, fail fast</em>&#8216; is a mantra typically enunciated by startup types.</p>
<p>This goes hand-in-hand with the idea that execution is king and rapid iteration comes to mind. There is no point to wait on the perfect idea, the perfect plan. Does that imply that we should throw away the adage &#8216;<em>Measure twice, cut once</em>&#8216;?  But does that mean that we have a free  license to push out a lot of crappy code? I think not.</p>
<p>Another rule of thumb I came across was &#8216;<em>Be pessimistic in the short term, optimistic in the long term</em>&#8216; which I think ties both ideas together.</p>
<p>The time to act is NOW. The best plan to execute is the one right NOW. Innovation is driven by failure. Success is a by-product of failure&#8230; or is it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2008/09/23/the-culture-of-failure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rails: to_prepare executing code before each request</title>
		<link>http://www.oliyiptong.com/blog/2008/08/22/rails-to_prepare-executing-code-before-each-request/</link>
		<comments>http://www.oliyiptong.com/blog/2008/08/22/rails-to_prepare-executing-code-before-each-request/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 21:37:59 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[software]]></category>

	<!-- AutoMeta Start -->
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>initializers</category>
	<category>script</category>
	<category>monkeypatched</category>
	<category></category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>invoked</category>
	<category>script</category>
	<category>monkeypatch</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>invoked</category>
	<category>monkeypatch</category>
	<category>script</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>invoked</category>
	<category>monkeypatch</category>
	<category>script</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>invoked</category>
	<category>monkeypatch</category>
	<category>script</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>invoked</category>
	<category>monkeypatch</category>
	<category>script</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>invoked</category>
	<category>monkeypatch</category>
	<category>script</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>invoked</category>
	<category>monkeypatch</category>
	<category>script</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>method</category>
	<category>initializers</category>
	<category>invoked</category>
	<category>script</category>
	<category>initialization</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>profit</category>
	<category>monkeypatch</category>
	<category>invoked</category>
	<category>loads</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>rails</category>
	<category>profit</category>
	<category>loads</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>rails</category>
	<category>profit</category>
	<category>initialization</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>monkeypatched</category>
	<category>invoked</category>
	<category>initializers</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>loads</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>rails</category>
	<category>monkeypatched</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>dispatcher</category>
	<category>loads</category>
	<category>script</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>rails</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>dispatcher</category>
	<category>loads</category>
	<category>script</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>rails</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>loads</category>
	<category>method</category>
	<category>rails</category>
	<category>invoked</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>script</category>
	<category>loads</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>invoked</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>script</category>
	<category>loads</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>invoked</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>loads</category>
	<category>method</category>
	<category>monkeypatched</category>
	<category>actioncontroller</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>loads</category>
	<category>method</category>
	<category>monkeypatched</category>
	<category>actioncontroller</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>script</category>
	<category>loads</category>
	<category>to_prepare</category>
	<category>method</category>
	<category>invoked</category>
	<category>pastie</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>loads</category>
	<category>method</category>
	<category>initializers</category>
	<category>dispatcher</category>
	<category>dispatcher</category>
	<category>initialization</category>
	<category>to_prepare</category>
	<category>script</category>
	<category>loads</category>
	<category>method</category>
	<category>actioncontroller</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/?p=54</guid>
		<description><![CDATA[I have found little or no documentation on this on the net, so here I&#8217;m trying to give back a little from what I learnt. Hopefully that will be the beginning of a solution for others. Rails version: 2.1.0 The problem: I have certain ActiveRecord models that I want to monkeypatch (i.e. inject functionality to [...]]]></description>
				<content:encoded><![CDATA[<p>I have found little or no documentation on this on the net, so here I&#8217;m trying to give back a little from what I learnt. Hopefully that will be the beginning of a solution for others.</p>
<p><code>Rails version: 2.1.0</code></p>
<p><strong>The problem:</strong></p>
<p>I have certain <code>ActiveRecord</code> models that I want to monkeypatch (i.e. inject functionality to an existing class on runtime). That&#8217;s the beauty of dynamic languages, poor Java sods, no need for an AbstractFactoryFactory for j00!</p>
<p>My first approach was to write a script in <code>./config/initializers</code> that would be invoked on initialization. However, as it turns out, while this works fine for an immediate use of the said monkeypatched object, this wouldn&#8217;t work for later instances of this class. In my case, an <code>ActionController</code> method, when calling one of the monkeypatched functionality would raise a <code>NoMethodException</code>.</p>
<p>It took me a bit to realize what was going on and how rails was actually running through its initialization process.</p>
<p><strong>The solution:</strong></p>
<p>Rail&#8217;s initialization code has a method called <code>to_prepare</code> which can be invoked in the initialization block. Now looking at the rails <a href="http://github.com/rails/rails/tree/master/railties/lib/initializer.rb" onclick="javascript:urchinTracker ('/outbound/article/github.com');">source code</a> for initialization, the method requires <code><a href="http://github.com/rails/rails/tree/master/railties/lib/dispatcher.rb" onclick="javascript:urchinTracker ('/outbound/article/github.com');">dispatcher</a></code> which loads <code><a href="http://github.com/rails/rails/tree/master/actionpack/lib/action_controller/dispatcher.rb" onclick="javascript:urchinTracker ('/outbound/article/github.com');">ActionController::Dispatcher</a></code> and invokes the method <code>to_prepare</code>. Bingo!</p>
<p>What to do next is simple. In my script found in <code>./config/initializers</code>, the only change i needed to do is to <code>require 'dispatcher'</code> and to monkeypatch as follows:</p>
<p><script src="http://gist.github.com/6858.js"></script></p>
<p>Done. Profit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2008/08/22/rails-to_prepare-executing-code-before-each-request/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Computer &#8220;Science&#8221;</title>
		<link>http://www.oliyiptong.com/blog/2008/04/25/computer-science/</link>
		<comments>http://www.oliyiptong.com/blog/2008/04/25/computer-science/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 10:55:02 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[humor]]></category>

	<!-- AutoMeta Start -->
	<category>soaked</category>
	<category>falling</category>
	<category>asleep</category>
	<category>alcohol</category>
	<category>anal</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/?p=51</guid>
		<description><![CDATA[I am rectum&#8217;al about some things though probably not when I reek of alcohol (sometimes) or almost falling asleep, like now. One of those things is spelling. The people that I chat with often have to endure my misspellings : &#8216;ey man&#8217;, &#8216;transcenadnce&#8217; and &#8216;eligjtment&#8217; are samples from my chat logs the other day. No [...]]]></description>
				<content:encoded><![CDATA[<p>I am rectum&#8217;al about some things though probably not when I reek of alcohol (sometimes) or almost falling asleep, like now. One of those things is spelling. The people that I chat with often have to endure my misspellings : &#8216;ey man&#8217;, &#8216;transcenadnce&#8217; and &#8216;eligjtment&#8217; are samples from my chat logs the other day.</p>
<p>No matter that when I read chats/blogs from people, I expect none other than perfection. Another anality of mine, which I gratuitously violate(d), is grammar. The denizens of the interwebs have got their tubes connected to their rears when it comes to grammar and spelling; stool samples are easily collected: &#8216;rediculous&#8217;, &#8216;there&#8217; instead of &#8216;their&#8217;, &#8216;should of&#8217;, &#8216;could of&#8217; and incorrect use of the <a href="http://www.nytimes.com/2008/02/18/nyregion/18semicolon.html?_r=1&amp;oref=slogin" onclick="javascript:urchinTracker ('/outbound/article/www.nytimes.com');">semi-colon</a>.</p>
<p>GOD! Grammar isn&#8217;t rocket surgery*! That&#8217;s how we get stupid expressions that don&#8217;t make any sense anymore! The old expressions are pardoned because they help gave birth to <a href="http://youtube.com/user/hotforwords" onclick="javascript:urchinTracker ('/outbound/article/youtube.com');">hotforwords</a>.</p>
<p>This is a long-winded post to mention the awesomely rad <a href="http://csunplugged.com/" onclick="javascript:urchinTracker ('/outbound/article/csunplugged.com');">Computer Science Unplugged</a>,  about computer science and how it has little to do with computers**.</p>
<p>* Thanks <a href="http://www.loudthinking.com/" onclick="javascript:urchinTracker ('/outbound/article/www.loudthinking.com');">DHH</a> for this new (to me, and stupid) internet meme probably automagically rendered a gazillion times more popular after <a href="http://www.startupschool.org/" onclick="javascript:urchinTracker ('/outbound/article/www.startupschool.org');">startupschool</a>. DHH is actually a very nice guy, no ill feeling.</p>
<p>** Notice how <em>real</em> sciences don&#8217;t have &#8220;science&#8221; affixed? Thanks, <a href="http://fardelsblog.blogspot.com/" onclick="javascript:urchinTracker ('/outbound/article/fardelsblog.blogspot.com');">Richard</a> for the observation the other day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2008/04/25/computer-science/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just do it</title>
		<link>http://www.oliyiptong.com/blog/2008/04/25/just-do-it/</link>
		<comments>http://www.oliyiptong.com/blog/2008/04/25/just-do-it/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 10:23:28 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[entrepreneurship]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/?p=53</guid>
		<description><![CDATA[I attended startupschool about a week ago and that was quite a blast. The folks at justin.tv and omnisio have got the video transcripts up, definitely worth a watch. I missed the major parts of two talks, and by Murphy&#8217;s law, they just had to be two of the top 3 talks I wanted to hear; Paul [...]]]></description>
				<content:encoded><![CDATA[<p>I attended <a href="http://startupschool.org" onclick="javascript:urchinTracker ('/outbound/article/startupschool.org');">startupschool</a> about a week ago and that was quite a blast. The folks at <a href="http://blog.justin.tv/2008/04/startup-school.html" onclick="javascript:urchinTracker ('/outbound/article/blog.justin.tv');">justin.tv</a> and <a href="http://omnisio.com/startupschool08" onclick="javascript:urchinTracker ('/outbound/article/omnisio.com');">omnisio</a> have got the video transcripts up, definitely worth a watch.</p>
<p>I missed the major parts of two talks, and by <a href="http://en.wikipedia.org/wiki/Murphy's_law" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Murphy&#8217;s law</a>, they just had to be two of the top 3 talks I wanted to hear; <a href="http://paulbuchheit.blogspot.com/" onclick="javascript:urchinTracker ('/outbound/article/paulbuchheit.blogspot.com');">Paul Buchheit</a> and <a href="http://www.paulgraham.com/" onclick="javascript:urchinTracker ('/outbound/article/www.paulgraham.com');">Paul</a> <a href="http://www.paulgraham.com/good.html" onclick="javascript:urchinTracker ('/outbound/article/www.paulgraham.com');">Graham</a>. <a href="http://www.socialpicks.com/" onclick="javascript:urchinTracker ('/outbound/article/www.socialpicks.com');">We</a> had a production server outage, so I was furiously competing for wireless access point time with 400 other geeks (and PG during his talk&#8230; XD).</p>
<p>I did, however, manage to catch this quote from one of PG&#8217;s slides:</p>
<blockquote><dt>A good plan, violently executed now, is better than a perfect plan next week.</dt>
<dt><strong><a href="http://www.quotationspage.com/quotes/George_S._Patton/" onclick="javascript:urchinTracker ('/outbound/article/www.quotationspage.com');">George S. Patton</a></strong></dt>
<dt><a href="http://www.quotationspage.com/quotes/George_S._Patton/" onclick="javascript:urchinTracker ('/outbound/article/www.quotationspage.com');"></a><em>US general (1885 &#8211; 1945)</em></dt>
</blockquote>
<dt><br/> I wonder why this wasn&#8217;t even a discussion topic for the <a href="http://news.ycombinator.com/" onclick="javascript:urchinTracker ('/outbound/article/news.ycombinator.com');">HN</a> crowd, but this struck a chord in me. It is now my motto.</dt>
<dt> </dt>
<dt> <br/> Wonderful hacker gathering and awesome pre- and post- parties. Much love for SUS. See you next year.</dt>
<dt> </dt>
<dt> </dt>
<dt> </dt>
<dt> <br/> P.S.: We got that production issue fixed BTW</p>
</dt>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2008/04/25/just-do-it/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>18 minutes with an agile mind</title>
		<link>http://www.oliyiptong.com/blog/2008/03/29/18-minutes-with-an-agile-mind/</link>
		<comments>http://www.oliyiptong.com/blog/2008/03/29/18-minutes-with-an-agile-mind/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 06:04:09 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

	<!-- AutoMeta Start -->
	<category>got this off hackernews today</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2008/03/29/18-minutes-with-an-agile-mind/</guid>
		<description><![CDATA[I got this off HackerNews today: Clifford Stoll shoots out some gems like: When you do something the first time, its science.When you do it the second time, its engineering.When you do it the third time its technology.     18 minutes for a very well prepared presentation.]]></description>
				<content:encoded><![CDATA[<p>I got <a href="http://news.ycombinator.com/item?id=148233" onclick="javascript:urchinTracker ('/outbound/article/news.ycombinator.com');">this</a> off <a href="http://news.ycombinator.com/" onclick="javascript:urchinTracker ('/outbound/article/news.ycombinator.com');">HackerNews</a> today:</p>
<p><object height="355" width="425"><param value="http://www.youtube.com/v/Gj8IA6xOpSk&amp;hl=en" name="movie"></param><param value="transparent" name="wmode"></param><embed src="http://www.youtube.com/v/Gj8IA6xOpSk&amp;hl=en" height="355" width="425" wmode="transparent" type="application/x-shockwave-flash"></embed></object></p>
<p>Clifford Stoll shoots out some gems like:<br />
<blockquote>When you do something the first time, its science.When you do it the second time, its engineering.When you do it the third time its technology.    </p></blockquote>
<p>18 minutes for a very well prepared presentation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2008/03/29/18-minutes-with-an-agile-mind/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ships and lighthouses, on Rails!</title>
		<link>http://www.oliyiptong.com/blog/2007/06/25/ships-and-lighthouses-on-rails/</link>
		<comments>http://www.oliyiptong.com/blog/2007/06/25/ships-and-lighthouses-on-rails/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 16:18:30 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

	<!-- AutoMeta Start -->
	<category>yegge</category>
	<category>steve</category>
	<category>javascript</category>
	<category>brings</category>
	<category>porting</category>
	<category>encountered</category>
	<category>obscure</category>
	<category>difficulties</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2007/06/25/ships-and-lighthouses-on-rails/</guid>
		<description><![CDATA[Een schip op het strand is een baken in zee. [A ship on the beach is a lighthouse to the sea.] - old dutch proverb Steve Yegge, one of my developer idols, has accomplished quite a feat, demonstrated at Foo Camp; porting Rails over to Javascript. However, this task took him 6 months and 2000 [...]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Een schip op het strand is een baken in zee.<br />
[A ship on the beach is a lighthouse to the sea.]<br />
- old dutch proverb</p></blockquote>
<p><a href="http://www.iunknown.com/" onclick="javascript:urchinTracker ('/outbound/article/www.iunknown.com');"><img title="Courtesy of John Lam" alt="Courtesy of John Lam" src="http://www.oliyiptong.com/images/steve_yegge.jpg" /></a></p>
<p><a href="http://steve-yegge.blogspot.com"title="Yegge's blog"  onclick="javascript:urchinTracker ('/outbound/article/steve-yegge.blogspot.com');">Steve Yegge</a>, one of my developer idols, has accomplished quite a <a href="http://www.iunknown.com/2007/06/steve-yegge-por.html" onclick="javascript:urchinTracker ('/outbound/article/www.iunknown.com');">feat</a>, demonstrated at <a href="http://en.wikipedia.org/wiki/FOO_Camp" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Foo Camp</a>; porting Rails over to Javascript. However, this task took him 6 months and 2000 hours, according to <a href="http://www.iunknown.com/"title="John Lam's blog"  onclick="javascript:urchinTracker ('/outbound/article/www.iunknown.com');">John Lam</a>, who created <a href="http://rubyforge.org/projects/rubyclr/" onclick="javascript:urchinTracker ('/outbound/article/rubyforge.org');">RubyCLR</a>.<br />
His two most recent blog posts, a tad obscure, were about the <a href="http://steve-yegge.blogspot.com/2007/06/that-old-marshmallow-maze-spell.html" onclick="javascript:urchinTracker ('/outbound/article/steve-yegge.blogspot.com');">difficulties</a> he encountered and some of the <a href="http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html" onclick="javascript:urchinTracker ('/outbound/article/steve-yegge.blogspot.com');">learnings</a> he obtained from the experience. If you haven&#8217;t read Yegge before, his often comical approach makes him a pleasant read, with enough material dating back to the Amazon days to last for a couple of months.</p>
<p>This brings me to ponder on a few things:</p>
<p>I assume Yegge&#8217;s development effort is not to grow developer *hrm* appendages but to save other developers time in the future, a noble endeavour. Constructing software of this compexity in this short amount of time does lead me to think it has been rather grueling, and the evidence is in his <a href="http://steve-yegge.blogspot.com/2007/06/that-old-marshmallow-maze-spell.html" onclick="javascript:urchinTracker ('/outbound/article/steve-yegge.blogspot.com');">mysterious tale</a> about magic marshmallows. Should we celebrate the 11 daily hours of sweat Steve + team endured (or enjoyed) or rather <a href="http://blogs.ittoolbox.com/eai/architecture/archives/another-software-engineering-ground-hog-day-4041" onclick="javascript:urchinTracker ('/outbound/article/blogs.ittoolbox.com');">despise</a> the heroic effort of a few?</p>
<p>It is perhaps my software engineering formation that shapes my beliefs, but I am <a href="http://cs.wwc.edu/~aabyan/435/intro.html" onclick="javascript:urchinTracker ('/outbound/article/cs.wwc.edu');">not the only one</a> to think there is <a href="http://www.amazon.com/After-Gold-Rush-Profession-Engineering/dp/0735608776" onclick="javascript:urchinTracker ('/outbound/article/www.amazon.com');">something</a> to be said on this topic. I do concede that reality might require different courses of action than what is good in theory, however it does make sense that a series of burnouts will not yield any positive consequences; how does decreasing motivation, (perhaps) lowered code quality and increasing  reasons for frustration within the organization measure up with a repeatable, more predictable process?</p>
<p>I am not criticizing Yegge or undermining any of his achievements. He remains one of my inspirations. However, as a follow up to his <a href="http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html" onclick="javascript:urchinTracker ('/outbound/article/steve-yegge.blogspot.com');">post</a> on agile the Google way, this DOES smell like &#8220;bad agile.&#8221;</p>
<p>PS: On a side note, this is also another indication that Google is not the Valhalla of software engineers that people make it up to be. The truth is, it is Yet Another Software Company (YASC &#8211; I just invented that term, pay me royalties) facing the same, very real problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2007/06/25/ships-and-lighthouses-on-rails/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Introducing Fotofolio</title>
		<link>http://www.oliyiptong.com/blog/2007/05/15/introducing-fotofolio/</link>
		<comments>http://www.oliyiptong.com/blog/2007/05/15/introducing-fotofolio/#comments</comments>
		<pubDate>Wed, 16 May 2007 03:14:45 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[software]]></category>

	<!-- AutoMeta Start -->
	<category>cms</category>
	<category>cms</category>
	<category>fotofolio</category>
	<category>crm</category>
	<category>alfresco</category>
	<category>codecraft</category>
	<category>portfolio</category>
	<category>ion</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2007/05/15/introducing-fotofolio/</guid>
		<description><![CDATA[Instead of reading programming.reddit, dreaming up topics and posting articles on my blog, I have instead opted to work on a CMS for my sweetheart Kristel, both to serve as her online portfolio and to be a fun small project for me to code. Rationale The reason why I decided to code a CMS from [...]]]></description>
				<content:encoded><![CDATA[<p>Instead of reading <a href="http://programming.reddit.com" onclick="javascript:urchinTracker ('/outbound/article/programming.reddit.com');">programming.reddit</a>, dreaming up topics and posting articles on my blog, I have instead opted to work on a <a href="http://en.wikipedia.org/wiki/Content_management_system" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">CMS</a> for my sweetheart <a href="http://www.kristelteng.com" onclick="javascript:urchinTracker ('/outbound/article/www.kristelteng.com');">Kristel</a>, both to serve as her online portfolio and to be a fun small project for me to code.</p>
<p><strong>Rationale</strong></p>
<p>The reason why I decided to code a CMS from the ground up is <strong>obviously</strong> because there aren&#8217;t enough CMS&#8217;s in the world; who really cares about <a href="http://www.joomla.org/" onclick="javascript:urchinTracker ('/outbound/article/www.joomla.org');">Joomla!</a>, <a href="http://drupal.org/" onclick="javascript:urchinTracker ('/outbound/article/drupal.org');">Drupal</a>, <a href="http://plone.org/" onclick="javascript:urchinTracker ('/outbound/article/plone.org');">Plone</a>, <a href="http://dev.alfresco.com/" onclick="javascript:urchinTracker ('/outbound/article/dev.alfresco.com');">Alfresco</a> and <a href="http://ion-cms.sourceforge.net/section/s0.html" onclick="javascript:urchinTracker ('/outbound/article/ion-cms.sourceforge.net');">Ion</a>? Some even have the magic word &#8220;enterprise&#8221; thrown in there somewhere. CMS, ERP, CRM, MRP&#8230; for free?? Pffscht, let&#8217;s make another one of those 3 letter acronym software.</p>
<p>Kevin Barnes at Codecraft gives <a href="http://codecraft.info/index.php/archives/30/" onclick="javascript:urchinTracker ('/outbound/article/codecraft.info');">3 reasons</a> to reinvent the wheel. My personal favourite: reinventing the wheel causes reinventors to understand wheels. Additionally, having a custom made CRM out of love is unbeatable. For me, this application is an opportunity to learn a thing or two, have fun and do other things like working too hard at the office.</p>
<p><strong>Fotofolio</strong></p>
<p>Fotofolio is the name given to my CRM. The focus of this application is to provide designers with a simple solution to obtaining a online portfolio. As the name suggests, there is a heavy emphasis on displaying images and the application allows for much of that.</p>
<p>The interface and features are sparse, both to make it a straightforward and easy to use web application. A user has the ability to create and manage multiple worksets. Each workset can consist of multiple workpieces and each workpiece has an associated image. The published portion of the web application will allow the user to organize the layout according to these conceptual rules.</p>
<p><strong>Technology</strong></p>
<p>I decided to implement Fotofolio using Ruby On Rails. After flirting with the framework quite a bit, it was obvious that all that hype surrounding it is not unwarranted. Other candidates were <a href="http://www.djangoproject.com/" onclick="javascript:urchinTracker ('/outbound/article/www.djangoproject.com');">Django</a>, <a href="http://www.turbogears.org/" onclick="javascript:urchinTracker ('/outbound/article/www.turbogears.org');">Turbogears</a> and even <a href="http://www.springframework.org/" onclick="javascript:urchinTracker ('/outbound/article/www.springframework.org');">Spring</a>. In my opinion, for the scope of my application, only Django stood a chance. However, Rails still won out, whatever you may say, Pythonistas. Migrations rule!</p>
<p><strong>Release</strong></p>
<p>The first release is planned for soon, soon after Kristel&#8217;s portfolio is delivered. I do not plan to have features such as skin packs available right away. So far, the bare minimum of features is expected; i.e. putting some pictures in, displaying them on the other side. It is currently 65-70% complete.<br />
It is expected to be an executable pile of source code rather than being an online service, and it will be open source. The license has yet to be determined.</p>
<p><strong>Request</strong></p>
<p>I admit that I&#8217;m a bit of a doosie with making up names. I need advice from you 3 people reading my blog about another name to give to this baby. Please let me know of any suggestions you may have.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2007/05/15/introducing-fotofolio/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Back from the dead</title>
		<link>http://www.oliyiptong.com/blog/2007/04/13/back-from-the-dead/</link>
		<comments>http://www.oliyiptong.com/blog/2007/04/13/back-from-the-dead/#comments</comments>
		<pubDate>Fri, 13 Apr 2007 15:11:46 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

	<!-- AutoMeta Start -->
	<category>xkcd</category>
	<category>reddit</category>
	<category>reader</category>
	<category>graham</category>
	<category>worsethanfailure</category>
	<category>paul</category>
	<category>norvig</category>
	<category>macbookpro</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2007/04/13/back-from-the-dead/</guid>
		<description><![CDATA[Hello blog. I am back from the cave I&#8217;ve been hiding into, it&#8217;s been a while. Here&#8217;s a list of things that happened when I wasn&#8217;t there: its a new year, 2007 Sun has GPL&#8217;d Java I&#8217;m running a MacBookPro from work Besides that, NOTHING happened in the world! Absolutely nothing, other than stuff like [...]]]></description>
				<content:encoded><![CDATA[<p>Hello blog.</p>
<p>I am back from the cave I&#8217;ve been hiding into, it&#8217;s been a while. Here&#8217;s a list of things that happened when I wasn&#8217;t there:</p>
<ol>
<li>its a new year, 2007</li>
<li>Sun has GPL&#8217;d Java</li>
<li>I&#8217;m running a MacBookPro from work</li>
</ol>
<p>Besides that, NOTHING happened in the world! Absolutely nothing, other than stuff like  being extremely taken by work and life things. I&#8217;ll be posting again though.</p>
<p>For a start, here are some things that are in my RSS reader that kept me very productive at work:</p>
<p><a href="http://xkcd.com" onclick="javascript:urchinTracker ('/outbound/article/xkcd.com');">xkcd.com</a> <a href="http://steve-yegge.blogspot.com/" onclick="javascript:urchinTracker ('/outbound/article/steve-yegge.blogspot.com');">steve yegge</a> <a href="http://paulgraham.com" onclick="javascript:urchinTracker ('/outbound/article/paulgraham.com');">paul graham</a> <a href="http://peternorvig.com" onclick="javascript:urchinTracker ('/outbound/article/peternorvig.com');">worsethanfailure</a> <a href="http://norvig.com" onclick="javascript:urchinTracker ('/outbound/article/norvig.com');">peter norvig</a> <a href="http://programming.reddit.com" onclick="javascript:urchinTracker ('/outbound/article/programming.reddit.com');">programming.reddit.com</a></p>
<p>I read some more, but it wouldn&#8217;t be good for my career going forward to have more things in my RSS reader mentioned =) my weekly reports would undergo scrutiny!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2007/04/13/back-from-the-dead/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.435 seconds -->
<!-- Cached page served by WP-Cache -->
