<?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 &#187; software</title>
	<atom:link href="http://www.oliyiptong.com/blog/category/software/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</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<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>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>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>Ubuntu 6.10 Edgy Eft Upgrade plus Compiz goodness on AIGLX</title>
		<link>http://www.oliyiptong.com/blog/2006/10/28/ubuntu-610-edgy-eft-upgrade-plus-compiz-goodness/</link>
		<comments>http://www.oliyiptong.com/blog/2006/10/28/ubuntu-610-edgy-eft-upgrade-plus-compiz-goodness/#comments</comments>
		<pubDate>Sat, 28 Oct 2006 07:41:40 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[software]]></category>

	<!-- AutoMeta Start -->
	<category>updates</category>
	<category>edgy</category>
	<category>ubuntu</category>
	<category>drake</category>
	<category>upgrading</category>
	<category>dapper</category>
	<category>touted</category>
	<category>eft</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2006/10/28/ubuntu-610-edgy-eft-upgrade-plus-compiz-goodness/</guid>
		<description><![CDATA[Geeks with not much to say talk about their tools. Here&#8217;s an eft: Today, I talk about my experience upgrading the FREE Linux distribution Ubuntu from 6.06 LTS (Dapper Drake) to 6.10 (Edgy Eft). The leap (check this link out if you&#8217;re geeky like me) from 6.06 to 6.10 was hyped up to bring lotsa [...]]]></description>
			<content:encoded><![CDATA[<p>Geeks with not much to say talk about their tools. Here&#8217;s an eft:<br />
<img src="http://www.oliyiptong.com/images/eft.png" /></p>
<p>Today, I talk about my experience upgrading the FREE <a href="http://en.wikipedia.org/wiki/Linux_distribution" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Linux distribution</a> <a href="http://www.ubuntu.com/" onclick="javascript:urchinTracker ('/outbound/article/www.ubuntu.com');">Ubuntu</a> from 6.06 LTS (Dapper Drake) to 6.10 (Edgy Eft). The <a href="http://blog.scorpionworld.it/2006/09/23/ubuntu-releases-evolution/" onclick="javascript:urchinTracker ('/outbound/article/blog.scorpionworld.it');">leap</a> (check this link out if you&#8217;re geeky like me) from 6.06 to 6.10 was hyped up to bring lotsa &#8220;cutting edge&#8221; updates to the distribution. This release happened on time, according to the <a href="https://wiki.ubuntu.com/EdgyReleaseSchedule" onclick="javascript:urchinTracker ('/outbound/article/wiki.ubuntu.com');">schedule</a>, on October 26th, unlike <a href="http://fedora.redhat.com/" onclick="javascript:urchinTracker ('/outbound/article/fedora.redhat.com');">Fedora Core 6</a> which slipped a couple of times. So, hats off Canonical!</p>
<p>In any case, these distributions are maintained by volunteers and/or very little actual paid staff (probably paid peanuts&#8230; its about the passion man). Good stuff, somebody should hire them (or not, otherwise we wouldn&#8217;t have anybody to do the distro&#8217;s!).</p>
<p>Amongst the <a href="https://launchpad.net/distros/ubuntu/edgy/+specs" onclick="javascript:urchinTracker ('/outbound/article/launchpad.net');">touted updates</a> are Firefox 2.0, Xorg 7.1 (featuring <a href="http://fedoraproject.org/wiki/RenderingProject/aiglx" onclick="javascript:urchinTracker ('/outbound/article/fedoraproject.org');">AIGLX</a>), Gnome 2.16.1, KDE 3.5.5 only to cite some. Pretty spiffy, isn&#8217;t it?</p>
<p>Well, apparently on the Internet, people have having <a href="http://element14.wordpress.com/2006/10/27/ubuntu-edgy-upgrades-a-disaster-for-many/" onclick="javascript:urchinTracker ('/outbound/article/element14.wordpress.com');">trouble</a> upgrading. I had the exact same problem people have described and I&#8217;m going to describe steps to take to resolve them.</p>
<p>Killing 2 birds with 1 stone, I&#8217;ll explain as well how to get you some <a href="http://en.opensuse.org/Compiz" onclick="javascript:urchinTracker ('/outbound/article/en.opensuse.org');">Compiz</a> eye-candy. Actually, Compiz is not just eye-candy; in addition to giving you a 3D accelerated desktop interface with wobbling windows (it sounds weird, but looks pretty cool) and other desktop effects, it is also very useful with regards to usability. It supports a bunch of neat features; here&#8217;s an <a href="http://www.apple.com/macosx/features/expose/" onclick="javascript:urchinTracker ('/outbound/article/www.apple.com');">expose</a> copycat for instance:<br />
<img src="http://www.oliyiptong.com/images/expose_sm.png" /></p>
<h3>Upgrade problems</h3>
<p><strong>Symptom:</strong><br />
1. You just upgraded Ubuntu 6.06 LTS by running</p>
<blockquote><p>gksudo &#8220;update-manager -c -d&#8221;</p></blockquote>
<p>2. You curse yourself because you left this running overnight without realizing you&#8217;d actually need to click a few times before everything is installed and set up.</p>
<p>3. You are greeted with the new &#8220;high-res&#8221; 1280&#215;1024 splash screen, with the new <a href="http://www.fontshop.com/fontfeed/archives/web-20-logos.cfm" onclick="javascript:urchinTracker ('/outbound/article/www.fontshop.com');">web-2.0-ized</a> Ubuntu logo.</p>
<p>4. Your X server does not want to start.</p>
<p><strong>Cure:</strong></p>
<p>Have you read the README&#8217;s and whatnot when you were installing video drivers? I&#8217;m not sure about Nvidia drivers, but FGLRX, ATI&#8217;s (or should I say <a href="http://ati.amd.com/" onclick="javascript:urchinTracker ('/outbound/article/ati.amd.com');">ATI/AMD</a>. The red has been replaced by an ugly green&#8230; isn&#8217;t green Nvidia&#8217;s colour?) proprietary drivers have certain dependencies on the current kernel version you have installed.</p>
<p>First, you need to remove anything that&#8217;s related to those drivers. If you&#8217;re using <a href="http://gentoo-wiki.com/HOWTO_ATI_Drivers" onclick="javascript:urchinTracker ('/outbound/article/gentoo-wiki.com');">FGLRX</a>, especially if you <a href="https://help.ubuntu.com/community/BinaryDriverHowto/ATI" onclick="javascript:urchinTracker ('/outbound/article/help.ubuntu.com');">made your own .deb packages</a> then installed them,  you&#8217;re gonna have to remove them.</p>
<p>Reboot, go in recovery mode and run:</p>
<blockquote><p>dpkg -r xorg-driver-fglrx fglrx-control</p></blockquote>
<p>Note that if you made .deb packages the package names might be a bit different.</p>
<p>Now if you have 2 choices, either to install the latest version of FGLRX or use the open source drivers. I recommend the second option because you&#8217;ll gain AIGLX support which will allow you to get some Compiz or <a href="http://www.beryl-project.org/" onclick="javascript:urchinTracker ('/outbound/article/www.beryl-project.org');">Beryl</a> goodness.</p>
<p>For option 1, simply do:</p>
<blockquote><p>apt-get install fglrx fglrx-control</p></blockquote>
<p>To use the open source drivers with 3D rendering, you need to re-install the openGL libraries. Do:</p>
<blockquote><p>apt-get install &#8211;reinstall libgl1-mesa</p></blockquote>
<p>I highly recommend <a href="http://wiki.cchtml.com/index.php/Ubuntu_Edgy_Installation_Guide" onclick="javascript:urchinTracker ('/outbound/article/wiki.cchtml.com');">this</a> guide, which I find can be really useful.</p>
<h3>Getting Some Eye-Poppin&#8217; Candy</h3>
<p><img alt="Rotating cube" title="Rotating cube" src="http://www.oliyiptong.com/images/cube_sm.png" /></p>
<p>Now that you&#8217;ve installed/re-installed the open source drivers (or beta drivers if you&#8217;re an Nvidiot), head over to gandalfn&#8217;s <a href="http://gandalfn.wordpress.com/howto/howto-compiz-aiglx-on-edgy/" onclick="javascript:urchinTracker ('/outbound/article/gandalfn.wordpress.com');">Compiz-AIGLX-on-Edgy</a> page for guidance. And follow the instructions.</p>
<p>Fudge around with your /etc/X11/xorg.conf and after multiple edit/restart X server/reboot cycles, you&#8217;ll get it up and running. If you&#8217;re that far, I don&#8217;t think you&#8217;ll need any guidance&#8230; trust me =) You would&#8217;ve abandoned long ago.</p>
<p><strong>Congratulations! You&#8217;re running Ubuntu 6.10 with Compiz on AIGLX!</strong></p>
<p>Here are things to ponder before upgrading:</p>
<ol>
<li>Its gonna take you some time.</li>
<li>You&#8217;re going to have to mess with your xorg.conf, which can be some pretty messy affair if you don&#8217;t know what you&#8217;re doing.</li>
<li>Dual monitor support? Fuhgetdhaboutit! X-server is pretty anal about dual monitor setups, at least for ATI people. FGLRX made that a little bit easier, with BigDesktop support and all&#8230; but with open source drivers you&#8217;re quite at a loss.</li>
</ol>
<p>In any case, for people trying to get a good dual monitor setup with at least 1 CRT (running non eye-bleeding refresh rates), with X-server 7.1, open-source ATI drivers and Compiz, I <em>pity thy fool</em>! If you&#8217;re successful, I&#8217;d be interested in getting your xorg.conf! I gave up the 2nd monitor for now as well as the Logitech G5 buttons &#038; tilt wheel.<br />
Here&#8217;s mine: <a href="http://www.oliyiptong.com/stuff/xorg.conf" >xorg.conf</a></p>
<p>Nvidia using people I heard over the forums have an easier time with a pretty nifty configuration utility. Oh I envy you. I threw away days of my life cumulatively, setting this up!<br />
Have fun and good luck!</p>
<blockquote />
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2006/10/28/ubuntu-610-edgy-eft-upgrade-plus-compiz-goodness/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Internet in the 21st Century</title>
		<link>http://www.oliyiptong.com/blog/2006/10/18/internet-in-the-21st-century/</link>
		<comments>http://www.oliyiptong.com/blog/2006/10/18/internet-in-the-21st-century/#comments</comments>
		<pubDate>Wed, 18 Oct 2006 05:34:20 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[software]]></category>

	<!-- AutoMeta Start -->
	<category>vint</category>
	<category>science</category>
	<category>science</category>
	<category>century</category>
	<category>steve</category>
	<category>bourne</category>
	<category>21st</category>
	<category>lecture</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2006/10/18/internet-in-the-21st-century/</guid>
		<description><![CDATA[Today I swung by my alma mater to attend a lecture hosted by Vint Cerf, without whom we wouldn&#8217;t be surfing the Internet today, entitled &#8220;Internet in the 21st Century&#8220;. An illustrious figure indeed, and very well spoken as well, Vint is currently the Chief Internet Evangelist and vice president over at Google. A title [...]]]></description>
			<content:encoded><![CDATA[<p>Today I swung by my <a href="http://www.utoronto.ca/" onclick="javascript:urchinTracker ('/outbound/article/www.utoronto.ca');">alma mater</a> to attend a lecture hosted by <a href="http://en.wikipedia.org/wiki/Vinton_Cerf" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Vint Cerf</a>, without whom we wouldn&#8217;t be surfing the Internet today, entitled &#8220;<a href="http://www.utoronto.ca/reg/list_full.pl?20060917-1500.23505" onclick="javascript:urchinTracker ('/outbound/article/www.utoronto.ca');">Internet in the 21st Century</a>&#8220;. An illustrious figure indeed, and very well spoken as well, Vint is currently the Chief Internet Evangelist and vice president over at Google. A title like that is wicked cool I reckon&#8230; evangelising the Internet&#8230;</p>
<p><img alt="The father of the internet evangelising" title="The father of the internet evangelising" src="http://www.oliyiptong.com/images/VintCerf.jpg" /></p>
<p>With such a prestigious speaker, the room was obviously packed; a computer science junkie gala of sorts. Notably, amongst the crowd was <a href="http://en.wikipedia.org/wiki/Stephen_Bourne" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Steve Bourne</a>, whom I shook hands with without realizing it was THE Steve Bourne. Phew, what an honor. In any case, the topic of the day was about the Internet and what better person to talk about it other than the man dubbed &#8220;the father of the internet&#8221;?</p>
<p><strong>Computer <em>Science</em>? </strong></p>
<p>As one of the first topics, Vint brought up a series of points in view of &#8220;uncovering the science in Computer Science&#8221;. I found this to be rather amusing, because after taking a few psychology &#038; phsyics courses in university, I was also wondering where the &#8220;science&#8221; in CS came from! A &#8220;science&#8221; gets its name from the application of <a href="http://physics.ucr.edu/~wudka/Physics7/Notes_www/node6.html" onclick="javascript:urchinTracker ('/outbound/article/physics.ucr.edu');">the scientific method</a>; i.e. the best way to establish that something is a fact is by predicting a result through a hypothesis, and proving it by a defined and consistently repeatable procedure. Computer Science (CS), on the other hand encompasses more than the factual and predictable data; in CS, one of the things we learn is how to prove that <a href="http://www.csc.liv.ac.uk/~ped/teachadmin/algor/halt.html" onclick="javascript:urchinTracker ('/outbound/article/www.csc.liv.ac.uk');">we cannot predict that a computer program will halt</a>. Ironic indeed! Like mathematics, <a href="http://euclid.trentu.ca/math/sb/misc/mathsci.html" onclick="javascript:urchinTracker ('/outbound/article/euclid.trentu.ca');">CS is largely dependent on proofs rather than empirical evidence</a>.</p>
<p><strong>The design of the Internet</strong></p>
<p>The next topic was about the historics of the Internet. Vint explained good software engineering decisions taken in the beginning, such as the layered design and low coupling between those layers was at the base of TCP/IP. Such thoughts burgeoned while working on the <a href="http://en.wikipedia.org/wiki/ARPANET" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">ARPANET</a>. He also went over the ignorant nature of packets, which I have mentioned in a previous post presumptiously called &#8220;<a href="http://www.oliyiptong.com/blog/2006/06/07/the-unified-theory-of-bits-and-bytes-over-the-internet-law/" >The unified theory&#8230; of bits and bytes over the internet &#038; law</a>&#8221; (written under the influence I must admit!). As he went on talking about the profound impact upon regulations, and how current ones aren&#8217;t very well prepared for the current EXPLOSION (purportedly a factor of 20 from 1997!) of internet use; I could sense a tint of network neutrality hippiness (yes hippiness). Very nice indeed to hear first hand such an important figure speaking out on this topic.</p>
<p>The next topics were about the shortcomings and downfalls of the initial design; such as security, mobility and persistence. Mobile IP&#8217;s, authentication, encryption, <a href="http://en.wikipedia.org/wiki/Sensor_network" onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">sensor networks</a> and other solutions (or rather stand-ins before solid solutions are implemented) were discussed. An interesting observation on his part is that most security problems are a matter of configuration; as there is no way to verify configurations. A very tough problem indeed, in view of our current quasi-total dependence on configuration.</p>
<p><strong>The state of the Internet nowadays (without buzz words)<br />
</strong></p>
<p>Somebody explained <a href="http://www.oliyiptong.com/blog/2006/05/23/mesh-web-20-is-like-che/" >Web 2.0</a> without using the buzz word! Hurray! Rather, he used the catch-all term &#8220;User Oriented Paradigms&#8221;, composed of the notions of:</p>
<ol>
<li>Self Service</li>
<li>Announce-Share, Collaborate</li>
<li>Search, discover, transact</li>
</ol>
<p>Vint explained the premises of <a href="https://www.google.com/adsense/" onclick="javascript:urchinTracker ('/outbound/article/www.google.com');">Google Adsense</a> as well (without mentioning the name of it), explaining that the democratization of the Internet makes contextual advertising even more powerful. Taking another stab at network neutrality, he went on to say that Amazon, Google, eBay amongst others could never have started without that basic premise of network neutrality. He reiterated the observation that the new Internet is on the verge of significantly altering anything from regulations to social behavior and evidently business.</p>
<p>On another topic, Vint explained that these shenanigans are changing information management significantly. Geolocational indexing is becoming more and more in demand and time indexing is becoming harder to achieve. He postulates that information decay may be akin to tooth decay; i.e. requiring some brushing everyday.</p>
<p><strong>Things to be (In managementese: <em>Moving forward</em>)<br />
</strong></p>
<p>About the future of science &#038; engineering in general, he predicts that a boom in interest, similar to the <a href="http://history.nasa.gov/sputnik/" onclick="javascript:urchinTracker ('/outbound/article/history.nasa.gov');">Sputnik chain of events</a>, is looming, having as primary vehicle global warming. Interesting problems will need to be solved and predicted, causing a hypothetical raise in interest in Computer Science. Since the dot-crash enrollment in this field <a href="http://seattlepi.nwsource.com/business/184629_msftgates03.html" onclick="javascript:urchinTracker ('/outbound/article/seattlepi.nwsource.com');">is at a low</a>, and <a href="http://www.cs.colorado.edu/events/colloquia/2006-2007/digiano.html" onclick="javascript:urchinTracker ('/outbound/article/www.cs.colorado.edu');">keeps</a> <a href="http://terrill.ca/articles/cs_enrollment_declin" onclick="javascript:urchinTracker ('/outbound/article/terrill.ca');">dipping</a>.</p>
<p>The future of the Internet lies in space. A project called <a href="http://www.ipnsig.org/" onclick="javascript:urchinTracker ('/outbound/article/www.ipnsig.org');">InterPlaNet</a> (IPN) is in the works to attempt to solve the problems of communication over astronomical (literally!) distances. Because of the huge delays, variations of distance and signal strength, TCP/IP does not hold up very well in those applications. Fortunately, due to the layered architecture, TCP/IP can be used in smaller scales and another layer can be used to handle inter planetary communications, using a mechanism similar to messaging. This is being tested in environments with similar constraints, such as i<a href="http://www.digitalcityexpo.com/pdf/dce_speakers/vint_Cerf_Keynote_DCE.pdf" onclick="javascript:urchinTracker ('/outbound/article/www.digitalcityexpo.com');">n the military</a>, and in <a href="http://www.fjallen.nu/english.htm" onclick="javascript:urchinTracker ('/outbound/article/www.fjallen.nu');">Sameland</a>. Interestingly, this attempts solves the mobility and persistence problems cited before as well as solving the latency issues.</p>
<p><strong> Epilogue</strong></p>
<p>In the end, my opinion is that this lecture was very entertaining. It was quite an honor to hear THE man talk, in the company of other distinguished computer scientists. Thanks <a href="http://resellers.tucows.com/about/team2#ceo" onclick="javascript:urchinTracker ('/outbound/article/resellers.tucows.com');">Elliot</a> (our head honcho @ Tucows) for introducing Glenn (my co-worker) and myself to both Vint and Steve. Others, be there next time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2006/10/18/internet-in-the-21st-century/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>10 ways to spend more time &#8220;coding&#8221; with friends</title>
		<link>http://www.oliyiptong.com/blog/2006/10/03/10-ways-to-spend-more-time-coding/</link>
		<comments>http://www.oliyiptong.com/blog/2006/10/03/10-ways-to-spend-more-time-coding/#comments</comments>
		<pubDate>Tue, 03 Oct 2006 07:12:45 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[software]]></category>

	<!-- AutoMeta Start -->
	<category>spend</category>
	<category>debugging</category>
	<category>linus</category>
	<category>bastard</category>
	<category>understanding</category>
	<category>comment</category>
	<category>multi</category>
	<category>comment</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2006/10/03/10-ways-to-spend-more-time-coding/</guid>
		<description><![CDATA[For the uninitiated: Q) Have you ever wondered what a software developer REALLY does? A) Sit in front of the monitor confused. (or cursing&#8230; or both) A while ago, I read an article about how developers spend their time. What Jeff Atwood postulates is that developers spend MUCH more time understanding code rather than typing [...]]]></description>
			<content:encoded><![CDATA[<p>For the uninitiated:</p>
<p>Q) Have you ever wondered what a software developer REALLY does?</p>
<p>A) Sit in front of the monitor confused. (or cursing&#8230; or both)</p>
<p>A while ago, I read <a href="http://www.codinghorror.com/blog/archives/000684.html"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.codinghorror.com');">an article</a> about how developers spend their time. What <a href="http://www.codinghorror.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.codinghorror.com');">Jeff Atwood</a> postulates is that developers spend MUCH more time understanding code rather than typing in new stuff. I have to agree, with some colourful comments:<br />
<img src="http://www.oliyiptong.com/images/where-devs-remix.png" /></p>
<p>Its inevitable; the moment we do a linebreak, chances are that line is code is going to be modified in a near future. Better yet, the amount of time spend on doing so is small compared to the amount of time reading and understanding it! And this is your own code! Imagine how its like working with 5 people, or worse&#8230; 10?</p>
<p>Since we humans enjoy the company of each other, how about a little guide on how to spend more time code-staring together:</p>
<ol>
<li>Do not <strong>comment your code</strong>. We are all  <a href="http://wesnerm.blogs.com/net_undocumented/2006/03/rockstar_progra.html" onclick="javascript:urchinTracker ('/outbound/article/wesnerm.blogs.com');">Rockstar Programmers</a>. The code speaks for itself, extreme L337n355. Actually I heard that is an actual Perl feature&#8230; not supporting multi-line comments and all. Straight from <a href="http://use.perl.org/comments.pl?sid=32412&#038;cid=49088"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/use.perl.org');">somebody</a> who truly appreciates Perl: &#8220;Don&#8217;t use multi-line comments. If you have a piece of code that requires a multi-line comment, rewrite it so it doesn&#8217;t need to many lines of comment&#8221;. Genius!</li>
<li>Do not <strong>use version control</strong>. Its bad, its got 666 hidden somewhere in the source as a pre-proc directive. As an added bonus, when we overwrite files entirely, we just obliliterate it! BOOM, gone.</li>
<li>If you must use version control, take every opportunity to break the build. Its fun to update and find out that something you need to use is broken, especially if its not yours.</li>
<li>Do NOT <strong>use a debugger</strong>. Instead, use good &#8216;ol print-screen debugging. (heh, Here&#8217;s Linus Torvalds in an article called <a href="http://linuxmafia.com/faq/Kernel/linus-im-a-bastard-speech.html"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/linuxmafia.com');">im-a-bastard-speech</a>). For more fun, use print-screen debugging in concurrent programs or even better, when print-screen debugging is affecting the memory so that the behavior of your code changes.</li>
<li>Do NOT <strong>use already made functions</strong>, like for example in the libraries. I mean come on&#8230; where&#8217;s the fun if we use something that has been around for years and proven to function properly? Let&#8217;s rewrite atoi() and use it&#8230; its useful for interviews anyway.</li>
<li>Always copy and paste code! Typos that get in, stuff that isn&#8217;t relevant in the current context, the more, the merrier.</li>
<li>Do not <strong>design or architect your code</strong>. Planning is for the weak puh! The ad-hoc way of programming is more fun, just like writing essays and gets quicker results! <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Design patterns</a>? Get OUT of here! We are smart people, we do not need to use what thousands of lesser geeks have been <a href="http://www.javacamp.org/designPattern/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.javacamp.org');">using</a> to improve their architectures.</li>
<li>Run away if you have to <strong>practice <a href="http://www.agiledata.org/essays/tdd.html"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.agiledata.org');">Test-Driven development</a></strong>. Similar to version control, it has its origin in the worship of pagan lords; the temptation to have PRECISE requirements at coding time or to have HUGE time savings in the long term in terms of debugging can be hard to resist, but those are all evil.</li>
<li>Hack up all your classes together and don&#8217;t use helper functions. <strong><a href="http://www.ugolandini.net/AccoppiamentoCoesioneE.html" onclick="javascript:urchinTracker ('/outbound/article/www.ugolandini.net');">High cohesion and low coupling</a></strong> are to be avoided like the plague! Why have multiple files? Multiple classes? No way! Oh and let&#8217;s group classes together, sorting them by alphabetical order, the code is neater that way.</li>
<li>Hate <strong>process</strong>, even more so when you&#8217;re in a multi-person team. Project plans, Software Specifications, Software Architectures and Test plans are for wussies. Who the hell needs UML? You can draw pictures that nobody will understand an hour later. That way you look smart, you keep your plans secret and thus your job forever and you look smart.</li>
</ol>
<p>The list can be much longer than this, but 10 is a nice number plus I&#8217;d have to write more as opposed to reading code.</p>
<p>For people who actually want to improve themselves, check out <a href="http://www.third-bit.com/swc/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.third-bit.com');">Software Carpentry</a>, authored by <a href="http://www.third-bit.com/blog/" onclick="javascript:urchinTracker ('/outbound/article/www.third-bit.com');">Greg Wilson</a>. It contains a series of lectures, including a section on the software development process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2006/10/03/10-ways-to-spend-more-time-coding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toronto DemoCamp 9</title>
		<link>http://www.oliyiptong.com/blog/2006/09/26/toronto-democamp-9/</link>
		<comments>http://www.oliyiptong.com/blog/2006/09/26/toronto-democamp-9/#comments</comments>
		<pubDate>Tue, 26 Sep 2006 04:44:03 +0000</pubDate>
		<dc:creator>oli</dc:creator>
				<category><![CDATA[barcamp]]></category>
		<category><![CDATA[software]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2006/09/26/toronto-democamp-9/</guid>
		<description><![CDATA[Hello blog. I have been abducted by aliens for the past couple of weeks and they allowed me to go back to earth for the DemoCamp and to write this blog post. DemoCamp 9 has been yet another awesome outing. Lots of regulars and new people as well, and amazingly cool demos. Today, we&#8217;ve had [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.oliyiptong.com/images/democamp.jpg" /></p>
<p>Hello blog.</p>
<p>I have been abducted by aliens for the past couple of weeks and they allowed me to go back to earth for the DemoCamp and to write this blog post. <a href="http://barcamp.org/DemoCampToronto9" onclick="javascript:urchinTracker ('/outbound/article/barcamp.org');">DemoCamp 9</a> has been yet another awesome outing. Lots of regulars and new people as well, and amazingly cool demos. Today, we&#8217;ve had folks driving 3 hours all the way from Sudbury, talk about dedication!</p>
<p>That&#8217;s <strong>[H]</strong>ard man, and they had an awesome app as well, but we&#8217;ll get on that later. This week, our Phys. Ed. graduate cum technologist <a href="http://davidcrow.ca/" onclick="javascript:urchinTracker ('/outbound/article/davidcrow.ca');">David Crow</a> finally turned up with the Barcamp T-shirts! They were actually stored in a warehouse in the alien complex I&#8217;ve been in and the abductors thought it would be nice to release us all at once.</p>
<p>Ahh DemoCamp&#8230; it&#8217;s been 2 months. We had BarcampEarth last month (for which I still have draft articles yet to post! >.< ) as documented by <a href="http://fitrans.blogspot.com/2006/08/barcampearth-toronto-post-mortem.html" onclick="javascript:urchinTracker ('/outbound/article/fitrans.blogspot.com');">Ryan Coleman</a>, <a href="http://peterdawson.typepad.com/blog/2006/08/barcampearth_to.html"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/peterdawson.typepad.com');">Peter Dawson</a>, <a href="http://www.storyofastartup.com/?p=20" onclick="javascript:urchinTracker ('/outbound/article/www.storyofastartup.com');">Ryan McKegney</a> amongst others. In any case, here is my transcription of DemoCamp which took place today:</p>
<h3>Dictabrain</h3>
<p><a href="http://dictabrain.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/dictabrain.com');">Dictabrain</a> is a venture founded by James Wood, and having Vlad Jebelev on board, both ex-Cows from Tucows. The webapp targets the people that tend to vocalize their thoughts more than they can write. These people usually record  whatever they&#8217;re saying and need to somehow transcribe that to a written format to store or to share with other people.</p>
<p>The app, using a telephone, matches the calling number with a predefined setting, requires a PIN and allows the user to talk his/her heart out. Then the brain behind Dictabrain (a female brain I should say) transcribes this voice to text rapidly and posts it for the user&#8217;s convienience on the web. (EDIT: The beer must have been having a conversation with me at that time cause I didn&#8217;t catch it, but apparently, the transcription is human-based. Hmmm&#8230; not as cool as I thought).</p>
<p>The duo wanted to show off their baby and need alpha testers to see how much their Dic-Ta-Brain  stretches. They are proud <a href="http://www.rubyonrails.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.rubyonrails.org');">RoR</a> developers and run <a href="http://www.asterisk.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.asterisk.org');">Asterisk</a>, the open source PBX. They plan to be live in a month to a month and a half.</p>
<h3>InfoQ</h3>
<p>The dude behind <a href="http://www.theserverside.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.theserverside.com');">TheServerSide.com</a> (An enterprise Java news site/community and more),  Floyd Marinescu, is at it again with <a href="http://www.infoq.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.infoq.com');">InfoQ</a>. A very impressive demo with thoughtful uses of AJAX. It is a news/article website geared towards the enterprise software development community, with exclusive news reporters and column editors.</p>
<p>Completely and thoughtfully Ajaxified, the website allows you to tailor your news depending on the &#8220;community&#8221; of your choice. Funny enough, <a href="http://www.ruby-lang.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.ruby-lang.org');">Ruby</a> is one of the choices, and although I think Ruby is cool at all, I hardly consider it &#8220;enterprise&#8221; in its current state. The developers at InfoQ push the envelope even more by allow a user to have a <em>personalized</em> RSS feed. How <em>cool</em> is that?!</p>
<p>As well as posting filterable News posts, InfoQ proposes exclusive articles, white papers as well as videos of conferences. They plan to release videos every couple of weeks or so. When viewing videos, get this, they use the concept of widgets to turn a side-bar used for navigation into a content-container in case you&#8217;re in the boring part of the vid. How <em>COOL</em> is that?!</p>
<p>In addition, they offer tagging, internationalization (Chinese soon to come), AJAX mouse-over comment-thread reading (try it!). They have 1500 unique visitors everyday, which for a June launch is pretty good. Implemented using <a href="http://www.springframework.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.springframework.org');">Spring</a> and <a href="http://jackrabbit.apache.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/jackrabbit.apache.org');">Jackrabbit</a>, they are <strong>[E]</strong>nterprise to the bone. This is a keeper, definitely check it out.</p>
<h3>ConceptShare</h3>
<p>After seeing such a cool demo, we didn&#8217;t expect to be wowed again by another one. Enter <a href="http://conceptshare.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/conceptshare.com');">ConceptShare</a>. These are the 2 people that came all the way from Sudbury, a.k.a. the boonies. It is a web collaboration tool for basically everything that has some visual element to it.</p>
<p>ANOTHER collaboration tool you might say, NOT SO they say. Rather than calling it an online collaboration tool, Scott Brooks prefers to describe it as a tool to get feedback and to share ideas with people working on the same project. A very humble description, as I think it &#8216;s FRIGGIN AWESOME.</p>
<p>It allows users to annotate, comment and draw on pictures. Of course, you can add people from your group or choose people that have made themselves available for consultation as &#8220;experts&#8221;. The users can circle things, point at things and write little comment bubbles, read what other people said, chat live, and read chat logs.</p>
<p>This is AWESOME for working with customers, as it cuts down on the MOUNTAIN of lost email, pdf&#8217;s and <strong>*shudder*</strong> FRICKIN <em>Word documents </em> all over the place. <em>(</em>!! PLEASE NOTE: Word or any MS fileformats are <strong>NOT</strong> exchange formats!!). For technologists this is awesome, considering the lack of people skills we have, to discuss UI with other people.</p>
<p>They&#8217;ve also got an impressive and fast image scaling feature with little resolution loss which has to be seen to be fully appreciated. They have RSS feeds for comments and support all kinds of files for upload. They are currently going into private beta and are pondering what the pricing is going to be. THE NEWS: It might go from free trial services, $12 small company accounts, $59 for slightly larger ones up to $99. SOLD!.</p>
<h3>the eMail Company</h3>
<p>You&#8217;d think <a href="http://theemailcompany.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/theemailcompany.com');">the eMail Company</a> is one that offers hosted email or something. Maybe not, but at least I would. What they do in fact is <a href="http://en.wikipedia.org/wiki/E-mail_marketing"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">email marketing</a>. What they propose is a web app with 3 distinct components:</p>
<ol>
<li>Forms, the stuff users fill out on the internet with checkboxes, input fields, radio buttons, numbered, bulletted. The kind of stuff you&#8217;d find at <a href="http://www.tickle.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.tickle.com');">tickle</a> and the like, or applicant screeners for job applications like <a href="http://www.taleo.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.taleo.com');">Taleo</a>.</li>
<li>A form creation tool, for creating those annoying to fill pages. There are extensive controls, from HTML input types to CSS styles.</li>
<li>A dataview section with statistics collected from the forms, with bar charts, histograms and pie charts.</li>
</ol>
<p>They propose a service that can create extensive and complex forms with branching capabilities out of the box, complete with data viewing. I can see the value in building such an application, but I think it could use some AJAXifying goodness. It works as of now, but it could be made prettier as well. In any case, they came for feedback, and I&#8217;m sure they came to the right place to get some.</p>
<h3>Pursudo</h3>
<p><a href="http://www.taleo.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.taleo.com');">Pursudo</a> is the craft of love of the guys at <a href="http://www.unspace.ca/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.unspace.ca');">Unspace</a>. Rabid <a href="http://www.rubyonrails.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.rubyonrails.com');">RoR</a> fans, they go as far as saying that nothing they do could&#8217;ve been done without Rails. That&#8217;s a very strong statement! Although I believe Rails is amazing, I also believe some other people are trying hard and are actually coming very close, check out <a href="http://www.turbogears.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.turbogears.org');">TurboGears</a>, and <a href="http://www.djangoproject.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.djangoproject.com');">Django</a>. Anyhow, this project has been made in a total of 3 days of design work and 10 days of development. Not Bad!</p>
<p>This project has absolutely no profit motive and has been made out of fun. With the aim of better matching people than regular matchmaking websites, Pursudo aims to make people meet by doing things together. Selecting people by City, Gender and Age, the list of people can be filtered to a user&#8217;s preference. One thing to note is that the list of people can become longer as you&#8217;re scrolling down, something a computer geek might smile at because it could hypothetically allow a bored user to scroll down infinitely.</p>
<p>I guess a good way to describe this website would be: &#8220;An ode to Ruby on Rails&#8221;.</p>
<h3>Epilogue</h3>
<p>It was nice to be at DemoCamp again. The exchange of ideas, the conversations, people you meet every month with this common interest for anything new on the computer horizon. I had a good time chatting with <a href="http://www.conceptshare.com" onclick="javascript:urchinTracker ('/outbound/article/www.conceptshare.com');">Scott</a>, <a href="http://www.interwebmarketing.net/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.interwebmarketing.net');">Brian</a>, <a href="http://suthakamal.blogspot.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/suthakamal.blogspot.com');">Sutha</a>, <a href="http://www.radiantcore.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.radiantcore.com');">Jay</a>, Colin, <a href="http://aonb.blogspot.com/" onclick="javascript:urchinTracker ('/outbound/article/aonb.blogspot.com');">Slava</a>, <a href="http://alanhietala.blogspot.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/alanhietala.blogspot.com');">Alan</a> and briefly with <a href="http://www.falsepositives.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.falsepositives.com');">Ian</a>. Although I couldn&#8217;t stay very long, I realized again how events like these are breeding grounds for innovation. No wonder all kinds of *Camp are springing up; like <a href="http://www.casecamp.org/home/show/HomePage"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.casecamp.org');">CaseCamp</a> for marketers and <a href="http://copycamp.ca/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/copycamp.ca');">CopyCamp</a> regrouping musicians, artists and lawyers for discussions on the topic of internet-age copyright.</p>
<p><em>Viva *Camp</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2006/09/26/toronto-democamp-9/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>trac installation woes</title>
		<link>http://www.oliyiptong.com/blog/2006/08/31/trac-installation-woes/</link>
		<comments>http://www.oliyiptong.com/blog/2006/08/31/trac-installation-woes/#comments</comments>
		<pubDate>Fri, 01 Sep 2006 03:39:20 +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[rant]]></category>
		<category><![CDATA[software]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2006/08/31/trac-installation-woes/</guid>
		<description><![CDATA[Trac is by far the best developer-centric project management tool i&#8217;ve used so far. I&#8217;ve always had the pleasure to use it, but thankfully not to administrate it. After 4 configurations, compilations, and installations (all done manually of course) of all its dependencies (yes 4 installation CYCLES! and that does not count the number of [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.oliyiptong.com/images/trac.jpg" /></p>
<p><a href="http://trac.edgewall.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/trac.edgewall.org');">Trac</a> is by far the best developer-centric project management tool i&#8217;ve used so far. I&#8217;ve always had the pleasure to use it, but thankfully not to administrate it. After 4 configurations, compilations, and installations (all done manually of course) of all its dependencies (yes 4 installation CYCLES! and that does not count the number of times trying to fiddle around and coaxing it to work), namely:</p>
<ol>
<li>Python 2.3.5</li>
<li>SQLite 3.3.6</li>
<li>PySqlite 2.3.2</li>
<li>Clearsilver 0.10.3</li>
<li>Subversion 1.3.2</li>
<li>Swig 1.3.29</li>
<li>and finally, trac itself, 0.96</li>
</ol>
<p>it now gives me a <strong>segmentation fault</strong>??! At the <strong><em>admin configuration</em></strong> step??????! GRRRRRRRRRRRRRRRRRRRR I&#8217;ve been going at it on and off for 2 weeks now, am I missing something?! Geez! I&#8217;m very close this time though&#8230; very&#8230; I can smell the ticket messages clogging my email.</p>
<p>For a more complete picture, click <a href="http://www.oliyiptong.com/images/trac.png" >here</a>.</p>
<p>On another note, because of trac and whoever&#8217;s responsible for the installation documentation, I have been delayed with<br />
posting my notes on barcampEarth. Those are to come soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2006/08/31/trac-installation-woes/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>If you don&#8217;t code</title>
		<link>http://www.oliyiptong.com/blog/2006/08/24/if-you-dont-code/</link>
		<comments>http://www.oliyiptong.com/blog/2006/08/24/if-you-dont-code/#comments</comments>
		<pubDate>Thu, 24 Aug 2006 04:42:31 +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>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2006/08/24/if-you-dont-code/</guid>
		<description><![CDATA[If you don&#8217;t code try this. You might like it! It is an interactive, &#8220;hands-on&#8221; tutorial to Ruby, the programming language. If you do code, try it anyway if you haven&#8217;t picked up Ruby yet. This tutorial has been made with the beginner in mind, so the author does quite a bit of hand-holding. While [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.oliyiptong.com/images/ruby.png" />If you don&#8217;t code <a href="http://tryruby.hobix.com/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/tryruby.hobix.com');">try this</a>. You might like it! It is an interactive, &#8220;hands-on&#8221; tutorial to Ruby, the programming language. If you <strong>do</strong> code, try it anyway if you haven&#8217;t picked up Ruby yet. This tutorial has been made with the beginner in mind, so the author does quite a bit of hand-holding. While it might be a bit basic for the more advanced hackers (still worth it though), the beginner will definitely find it fun to go through it. It has been written by the author of <a href="http://poignantguide.net/ruby/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/poignantguide.net');">Poignant&#8217;s guide to Ruby</a>, an illustrated (as in containing cartoon strips) and funny book with the odd enough goal of teaching a programming language. Did I mention the book is free and downloadable? <img src='http://www.oliyiptong.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>After a couple of months of fiddling around, I had not picked up Ruby just yet. Deciding that was enough pushing back, I <em>dive into Ruby</em> (pun intended).  Its a programming language that&#8217;s built in such a way that it feels very natural using it. One thing that makes it intuitive is <em>consistency</em>. Everything in Ruby is an object (for the neophytes,  an object is the term we use to represent a &#8216;thing&#8217;, anything you make it to be), which isn&#8217;t necessarily true in other  programming languages.</p>
<h3>If you do code a lot</h3>
<p>I&#8217;m only getting to grips with Ruby, so I&#8217;ll refrain from giving any premature opinions. Non Ruby-speaking adept coders should check out these <a href="http://www.knowing.net/PermaLink,guid,f3b9ba36-848e-43f8-9caa-232ec216192d.aspx"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.knowing.net');">15 exercises to get familiar with a programming language</a>, I highly recommend it to learn any language. What I can say though is that so far, Ruby is very fun to use, and I think it is a suitable first programming language, containing enough advanced functionality.</p>
<p>Who knows? Ruby may even cause a comeback in style of <a href="http://en.wikipedia.org/wiki/Metaprogramming_(programming)"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">metaprogramming</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2006/08/24/if-you-dont-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Old hardware help in Ubuntu</title>
		<link>http://www.oliyiptong.com/blog/2006/07/15/old-hardware-help-in-ubuntu/</link>
		<comments>http://www.oliyiptong.com/blog/2006/07/15/old-hardware-help-in-ubuntu/#comments</comments>
		<pubDate>Sat, 15 Jul 2006 19:12:08 +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>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.oliyiptong.com/blog/2006/07/15/old-hardware-help-in-ubuntu/</guid>
		<description><![CDATA[These are the steps I took in enabling the ESS 1869 sound chip to work in Ubuntu. These fixes will actually work on any GNU/Linux distribution provided you have alsa. This is a fix for the ESS Audiodrive 18XX series of sound chips, not just for the 1869. Those chips were low cost alternatives to [...]]]></description>
			<content:encoded><![CDATA[<p>These are the steps I took in enabling the ESS 1869 sound chip to work in Ubuntu.</p>
<p>These fixes will actually work on  any GNU/Linux distribution provided you have <a href="http://www.alsa-project.org/"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/www.alsa-project.org');">alsa</a>. This is a fix for the ESS Audiodrive 18XX series of sound chips, not just for the 1869. Those chips were low cost alternatives to full fledged sound cards such as the <a href="http://en.wikipedia.org/wiki/SoundBlaster#Sound_Blaster_16"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Sound Blaster 16</a>, both running on an <a href="http://en.wikipedia.org/wiki/ISA_bus"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">ISA bus</a> and with comparable features: <a href="http://www.webopedia.com/TERM/f/full_duplex.html" onclick="javascript:urchinTracker ('/outbound/article/www.webopedia.com');">Full-Duplex sound</a>, 44.1kHz <a href="http://en.wikipedia.org/wiki/Digital_audio"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">16-bit audio sampling</a>, <a href="http://en.wikipedia.org/wiki/FM_synthesis"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">FM synthesis</a> and <a href="http://en.wikipedia.org/wiki/Plug-and-play"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">Plug-and-play</a>(pnp). Mind you, pnp was a great feature at the time! No longer did you need to manually configure the settings, the drivers would automatically detect and configure the hardware&#8230; at least in theory!</p>
<p>Manual configurations were still required to guarantee smooth operation, pnp hence obtaining the redefinition of &#8220;Plug and Pray&#8221;. In my case, this is exactly what happened; ISA pnp is a little bit flakey and to make the sound chip work, I had to specify the drivers as well as the card settings.</p>
<p>A <a href="http://en.wikipedia.org/wiki/Device_driver"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">driver</a> is a piece of software used to allow the <a href="http://en.wikipedia.org/wiki/Kernel_%28computer_science%29"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">kernel</a> (the operating system) to interact with some hardware. modprobe is a tool used to add or remove modules from the kernel (the real operating system) and we will use it to load the driver. <a href="http://en.wikipedia.org/wiki/Sudo"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">sudo</a> (<strong>s</strong>uper-<strong>u</strong>ser <strong>do</strong>) is a program used execute other programs with <a href="http://en.wikipedia.org/wiki/Super_user"target="_blank"  onclick="javascript:urchinTracker ('/outbound/article/en.wikipedia.org');">super-user</a> priviledges (similar to an administrator for windows users), alternatively, one could use the <strong>su</strong> command to put a terminal in super-user mode.</p>
<p><strong>Step 1</strong></p>
<p>Go to /etc/modprobe.d/ and create a file name soundcard there. ( requires super user priviledges)<br />
Copy and paste this in the file:</p>
<blockquote><p>alias sound-slot-0 snd-card-0<br />
alias snd-card-0 snd-es18xx<br />
options snd-es18xx enable=1 isapnp=0 port=0&#215;220 mpu_port=0&#215;388 fm_port=0&#215;330 irq=5 dma1=1 dma2=5</p></blockquote>
<p>The &#8220;options&#8221; line should contain the settings of your sound card, which may or may not be the settings above.</p>
<p><strong>Step 2</strong></p>
<p>To test if the settings are correct, try these commands on a terminal:</p>
<blockquote><p>sudo modprobe snd-es18xx<br />
sudo /etc/init.d/alsa-utils restart</p></blockquote>
<p>Now play a sound file. If it works, awesome, if not, you may have to change the sound device settings to use Alsa. If it still doesn&#8217;t work, maybe you have to change the sound card settings.<br />
<strong>Step 3</strong></p>
<p>For a permanent fix, you will want to load that driver module everytime your computer starts.<br />
Edit the file /etc/modules and add the following line to the bottom:</p>
<blockquote><p>snd-es18xx</p></blockquote>
<p>and voilà, you&#8217;re pretty much set.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oliyiptong.com/blog/2006/07/15/old-hardware-help-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.390 seconds -->
