<?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>Carl Mercier&#039;s blog &#187; Technology</title>
	<atom:link href="http://blog.carlmercier.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.carlmercier.com</link>
	<description>me = entrepreneur + hacker;</description>
	<lastBuildDate>Tue, 15 Dec 2009 04:56:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Changes at IsItJRuby.com</title>
		<link>http://blog.carlmercier.com/2009/12/14/changes-at-isitjruby-com/</link>
		<comments>http://blog.carlmercier.com/2009/12/14/changes-at-isitjruby-com/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 04:56:45 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sites I like]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jruby]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=276</guid>
		<description><![CDATA[I&#8217;ve been ridiculously busy lately. Way too busy. Too busy to sleep, to hit the gym, and definitely maintain yet another website. Unfortunately, IsItJRuby.com didn&#8217;t get the love it deserved so I started hunting for someone to take my place. Alex Coles (@myabc) volunteered and is now the new maintainer. He already shared with me [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been ridiculously busy lately. Way too busy. Too busy to sleep, to hit the gym, and definitely maintain yet another website. Unfortunately, <a href="http://IsItJRuby.com" target="_blank">IsItJRuby.com</a> didn&#8217;t get the love it deserved so I started hunting for someone to take my place.</p>
<p>Alex Coles (<a href="http://twitter.com/myabc" target="_blank">@myabc</a>) volunteered and is now the new maintainer. He already shared with me a couple good ideas for the site, which he&#8217;ll hopefully implement soon.</p>
<p>Thank you, Alex, and congrats!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/12/14/changes-at-isitjruby-com/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lessons learned: How I founded, bootstrapped, grew and sold my web startup</title>
		<link>http://blog.carlmercier.com/2009/04/08/lessons-learned-how-i-founded-bootstrapped-grew-and-sold-my-web-startup/</link>
		<comments>http://blog.carlmercier.com/2009/04/08/lessons-learned-how-i-founded-bootstrapped-grew-and-sold-my-web-startup/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 19:27:21 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Defensio]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Speaking appearances]]></category>
		<category><![CDATA[Startup and business]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[acquisition]]></category>
		<category><![CDATA[bootstrapping]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[meshu]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=242</guid>
		<description><![CDATA[On April 6, 2009, I gave a presentation at MeshU in Toronto, Canada. I was surprised to see how much buzz it generated on Twitter and in the blogosphere. If you missed it, here&#8217;s your chance to judge by yourself&#8230; HD Video on iTunes (missing the last 20-25 mins unfortunately): A quick recap of what [...]]]></description>
			<content:encoded><![CDATA[<p>On April 6, 2009, I gave a presentation at MeshU in Toronto, Canada. I was surprised to see how much buzz it generated on Twitter and in the blogosphere.  If you missed it, here&#8217;s your chance to judge by yourself&#8230;</p>
<p>HD Video on iTunes (missing the last 20-25 mins unfortunately):<br />
<center><br />
<div id="attachment_251" class="wp-caption aligncenter" style="width: 310px"><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?i=53124926&amp;id=311252597"><img class="size-full wp-image-251" title="MeshU - Part 1" src="http://blog.carlmercier.com/wp-content/uploads/2009/04/meshu-part1.png" alt="MeshU - Part 1" width="300" height="166" /></a><p class="wp-caption-text">MeshU - Part 1</p></div></p>
<p><div id="attachment_252" class="wp-caption aligncenter" style="width: 310px"><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?i=53124929&amp;id=311252597"><img class="size-full wp-image-252" title="MeshU - Part 2" src="http://blog.carlmercier.com/wp-content/uploads/2009/04/meshu-part2.png" alt="MeshU - Part 1" width="300" height="166" /></a><p class="wp-caption-text">MeshU - Part 2</p></div><br />
</center></p>
<ul>
<li>A <a href="http://blog.marsdd.com/2009/04/07/bootstrapping/" target="_blank">quick recap of what I said</a>.</li>
<li>And Jonathan Keebler live-blogged the event at <a href="http://mesh.scribblelive.com/Event/Lessons_learned_How_I_founded_bootstrapped_grew_and_sold_my_web_startup" target="_blank">ScribbleLive</a>.</li>
<li>My slides:</li>
</ul>
<div style="width: 425px; text-align: left;"><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=meshu-22009-090406135243-phpapp02&amp;stripped_title=how-i-founded-bootstrapped-grew-and-sold-my-web-startups-meshu-2009" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=meshu-22009-090406135243-phpapp02&amp;stripped_title=how-i-founded-bootstrapped-grew-and-sold-my-web-startups-meshu-2009" /><param name="allowfullscreen" value="true" /></object></div>
<div id="__ss_1255814" style="width: 425px; text-align: left;">
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/cmercier">cmercier</a>.</div>
</div>
<p>I guess this is as close as it gets to being there in person!  Looking forward to your comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/04/08/lessons-learned-how-i-founded-bootstrapped-grew-and-sold-my-web-startup/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Running Merb on JRuby 1.2 and Glassfish 2.1</title>
		<link>http://blog.carlmercier.com/2009/03/30/running-merb-on-jruby-12-and-glassfish-21/</link>
		<comments>http://blog.carlmercier.com/2009/03/30/running-merb-on-jruby-12-and-glassfish-21/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 19:50:31 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jruby]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyonrails]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=219</guid>
		<description><![CDATA[So I&#8217;ve been trying to get Merb running on JRuby a good part of last night. I don&#8217;t know jack about Java, so this has been a little bit more challenging than it should have been. Most (if not all) of the tutorials I found were old and obsolete, so I decided to throw out [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been trying to get Merb running on JRuby a good part of last night. I don&#8217;t know jack about Java, so this has been a little bit more challenging than it should have been.  Most (if not all) of the tutorials I found were old and obsolete, so I decided to throw out my very own.</p>
<p>I need to give credit to <a href="http://blog.nodeta.fi/2008/05/22/living-on-the-edge-jruby-merb-glassfish/" target="_blank">this page</a>, without which I&#8217;d still be fighting with this whole thing.</p>
<p>This tutorial uses JRuby 1.2, Glassfish 2.1, Merb 1.0.10 and Ubuntu 8.04 LTS. To make my life easy, I simply fired an EC2 instance based on ami-71fd1a18. I recommend you do the same.  However, it should work from just any vanilla Ubuntu 8.04.</p>
<p>Some important comments are in the script below, make sure to read them. Enjoy!</p>
<div class="code">

<textarea rows=30 cols=80>
# Setup the scene
apt-get update
apt-get upgrade
# this is the Corporate World, folks, you'll need to accept some license agreement in the next step
apt-get install -y vim-full build-essential git-core sun-java6-jdk ant
apt-get install -y mysql-server mysql-client

# Install JRuby
cd /tmp
wget http://dist.codehaus.org/jruby/1.2.0/jruby-bin-1.2.0.tar.gz
tar xzvf jruby-bin*
mv jruby-1.2.0 /opt/jruby
echo "export PATH="/opt/jruby/bin:$PATH"" >> ~/.bashrc
export PATH="/opt/jruby/bin:$PATH"

# By now, 'jirb' should start IRB on JRuby!

# Let's now install some gems
jruby -S gem install erubis rake json_pure rspec rack mime-types rubigen --no-rdoc --no-ri
jruby -S gem install hpricot --no-rdoc --no-ri --version '~>0.6.1' # version 7 doesn't work with JRuby as of now
jruby -S gem install merb-core merb-more --no-rdoc --no-ri

# Test to see if Merb is installed:
jruby -S merb help

# Create an Hello World app
cd ~
jruby -S merb-gen core hello_world
cd hello_world
jruby -S merb-gen controller hello
echo "<h1>This is a Merb app running on JRuby. w00t!</h1>" > app/views/hello/index.html.erb
# Freeze Merb into your app
jruby -S gem install merb-core merb-more --no-rdoc --no-ri -i gems


# Install Glassfish
cd /tmp
wget http://java.net/download/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar
# and yet more licensing!
java -Xmx256m -jar glassfish-installer-v2.1-b60e-linux.jar
mv glassfish /opt/
cd /opt/glassfish
ant -f setup.xml

# Start Glassfish server, it might take some time.
./bin/asadmin start-domain domain1

# Warbler and friends
jruby -S gem install rails warbler activerecord-jdbc-adapter --no-rdoc --no-ri
cd ~/hello_world
jruby -S warble config

# Make sure frozen gems are included in your .war file.
# edit config/warble.rb and add "gems" to the config.dirs line

# create some missing directories, otherwise, warble will complain.
mkdir -p lib log vendor
# create a .war file
jruby -S warble war
# copy it to Glassfish.
cp hello_world.war /opt/glassfish/domains/domain1/autodeploy/

# Glassfish finds your app and starts it automatically.  Give it a few seconds.
# Then, go to http://{server-ip}:4848
# User: admin    Pass: adminadmin        Sounds like a good idea to change this for production!!!!!
# Click "Web Applications", then "hello_world".  Change "Context Root" to "/" and Save.  Saving was slow for me.

#
# That's it!!!
#
# Now go see your l33t web 2.0 app in action:
# Go to http://{server-ip}:8080/
# and http://{server-ip}:8080/hello
</textarea>

</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/03/30/running-merb-on-jruby-12-and-glassfish-21/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>A dream setup: THREE monitors on a Macbook!</title>
		<link>http://blog.carlmercier.com/2009/02/16/a-dream-setup-three-monitors-on-a-macbook/</link>
		<comments>http://blog.carlmercier.com/2009/02/16/a-dream-setup-three-monitors-on-a-macbook/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 09:00:39 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Cool/funny/stupid stuff]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[monitors]]></category>
		<category><![CDATA[screenrecycler]]></category>
		<category><![CDATA[setup]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=203</guid>
		<description><![CDATA[So you&#8217;ve always dreamed of connecting more than 1 external monitor to your Macbook (or any Mac) huh? Guess what, I just did it! The process is not quite as straightforward as it should be, but it works pretty well. The secret lies in a nifty application called ScreenRecycler.  In a nutshell, it allows you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.carlmercier.com/wp-content/uploads/2009/02/dscf1264.png"><img class="alignleft size-medium wp-image-204" title="OS X Dream Setup" src="http://blog.carlmercier.com/wp-content/uploads/2009/02/dscf1264-300x225.png" alt="OS X Dream Setup" width="300" height="225" /></a>So you&#8217;ve always dreamed of connecting more than 1 external monitor to your Macbook (or any Mac) huh? Guess what, I just did it!</p>
<p>The process is not quite as straightforward as it should be, but it works pretty well.</p>
<p>The secret lies in a nifty application called <a href="http://www.screenrecycler.com/" target="_blank">ScreenRecycler</a>.  In a nutshell, it allows you to use a monitor connected to a second computer as an additional monitor to your main computer.  So yes, you DO need 2 computers.  The good news is that the second computer can be either Mac, Windows or Linux. The bad news is that it&#8217;s slightly slower if the second computer is not a Mac. My second box is running Windows and it&#8217;s very usable for e-mail and calendaring. </p>
<p>My setup consists of:</p>
<ul>
<li>1 Dell 24&#8243; 2405FPW (awesome monitor btw)</li>
<li>1 Samsung 22&#8243; 2243BWX (vertical)</li>
<li>1 Unibody Macbook</li>
<li>1 custom-built PC</li>
</ul>
<p>Screen configuration:</p>
<ul>
<li>Main screen: Pretty much everything happens on this screen</li>
<li>Vertical screen (left): Mail.app (top), iCal (bottom)</li>
<li>Macbook screen: Twhirl, Corporate MSN Messenger, Adium</li>
</ul>
<p>The -really- cool thing about my setup is that, if I ever need to use Windows, I can just stop ScreenRecycler and my Windows desktop appears on my left screen.  Because I use <a href="http://sourceforge.net/projects/synergykm" target="_blank">SynergyKM</a> (and <a href="http://stevehorbachuk.com/?p=45" target="_blank">this</a>), I simply have to move my mouse to the left and my keyboard and mouse automatically start controlling Windows. </p>
<p>For your information, clicking the image will let you see my setup it its full glory!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/02/16/a-dream-setup-three-monitors-on-a-macbook/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>StartupCFO interviews me</title>
		<link>http://blog.carlmercier.com/2009/02/03/startupcfo-interviews-me/</link>
		<comments>http://blog.carlmercier.com/2009/02/03/startupcfo-interviews-me/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 22:11:23 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Defensio]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Startup and business]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bootstrapping]]></category>
		<category><![CDATA[exit]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[karabunga]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=193</guid>
		<description><![CDATA[Mark McLeod of StartupCFO interviewed me. We talked about startups, bootstrapping, lessons learned and the recent acquisition of Defensio by Websense. Here&#8217;s the link&#8230; http://startupcfo.ca/2009/02/startup-lessons-interview-with-carl.html]]></description>
			<content:encoded><![CDATA[<p>Mark McLeod of StartupCFO interviewed me.  We talked about startups, bootstrapping, lessons learned and the recent acquisition of <a href="http://defensio.com" target="_blank">Defensio</a> by <a href="http://websense.com" target="_blank">Websense</a>.</p>
<p>Here&#8217;s the link&#8230; <a href="http://startupcfo.ca/2009/02/startup-lessons-interview-with-carl.html" target="_blank">http://startupcfo.ca/2009/02/startup-lessons-interview-with-carl.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/02/03/startupcfo-interviews-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Very simple paper to email on Mac OS X</title>
		<link>http://blog.carlmercier.com/2008/10/25/very-simple-paper-to-email-on-mac-os-x/</link>
		<comments>http://blog.carlmercier.com/2008/10/25/very-simple-paper-to-email-on-mac-os-x/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 14:37:18 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Cool/funny/stupid stuff]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[mailapp]]></category>
		<category><![CDATA[nifty]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[scan]]></category>
		<category><![CDATA[scanner]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=166</guid>
		<description><![CDATA[Macintosh computers are great.  Not only are they more stable than their PC counterpart, but they totally get out of your way.  On the Mac, things just work, as you would hope or expect they would.  All the little nifty things the Mac offers really add up.  OS X is by far the best operating [...]]]></description>
			<content:encoded><![CDATA[<p>Macintosh computers are great.  Not only are they more stable than their PC counterpart, but they totally get out of your way.  On the Mac, things just work, as you would hope or expect they would.  All the little nifty things the Mac offers really add up.  OS X is by far the best operating system around, in my opinion.</p>
<p>Ok, since you&#8217;re reading this, you&#8217;re probably already convinced of that so let&#8217;s jump to the meat.</p>
<p>Long story short, I had this paper document I wanted to send by email.  I could have done it in a dozen steps, but I felt lazy.  Here&#8217;s a trick I figured out to make it <strong><em>very</em></strong> quick and easy:</p>
<ol>
<li>Fire up Image Capture.</li>
<li>Change Automatic Task to &#8220;Mail.app&#8221;.  To do so, click the dropdown menu, then &#8220;Other&#8221;, then browse to Mail.app in your Applications folder.</li>
<li>Give your document a name in &#8220;Name&#8221; and set all the other settings as necessary.</li>
<li>Hit overview/scan</li>
<li>Mail opens up automatically after the scanning process.  Just type in the email address of the recipient and you&#8217;re done!</li>
</ol>
<div><img class="aligncenter size-full wp-image-167" title="osx-scan-to-email" src="http://blog.carlmercier.com/wp-content/uploads/2008/10/osx-scan-to-email.png" alt="" width="500" height="549" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2008/10/25/very-simple-paper-to-email-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Announcing install_gems.rb</title>
		<link>http://blog.carlmercier.com/2008/10/13/announcing-install_gemsrb/</link>
		<comments>http://blog.carlmercier.com/2008/10/13/announcing-install_gemsrb/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 15:50:53 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Defensio]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[install_gems]]></category>
		<category><![CDATA[install_gems.rb]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubygems]]></category>
		<category><![CDATA[rubyonrails]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=154</guid>
		<description><![CDATA[Over the weekend, I was rethinking the way we should deploy our Merb application (our API) for Defensio. Everything I&#8217;ll say here applies to Rails as well. Managing gems has been painful lately. Like most people, we&#8217;re freezing them, which helps tremendously. However, there&#8217;s a few problems with this approach: We can&#8217;t freeze C extensions [...]]]></description>
			<content:encoded><![CDATA[<p>Over the weekend, I was rethinking the way we should deploy our Merb application (our API) for <a href="http://defensio.com" target="_blank">Defensio</a>.  Everything I&#8217;ll say here applies to Rails as well.</p>
<p>Managing gems has been painful lately.  Like most people, we&#8217;re freezing them, which helps tremendously.  However, there&#8217;s a few problems with this approach:</p>
<ul>
<li>We can&#8217;t freeze C extensions because they need to be compiled for the target platform.  We develop on OS X and Linux 64, but deploy to Linux i386.  As a workaround, we currently freeze but recompile them on every deployment.  Definitely not optimal.</li>
<li>Our frozen gems directory is getting huge.</li>
<li>It&#8217;s becoming complicated and quite a mess to manage multiple gem versions for different branches/tags.</li>
<li>We never quite know which branch needs which gem.</li>
</ul>
<p>Of course, we could manually install the gems we need on our servers.  But the word &#8220;manually&#8221; generally leads to &#8220;epic fail&#8221;.</p>
<p>So I thought, why not install them at deployment time, just before restarting the Mongrels, with Capistrano?  That seemed like a pretty good idea!  The only problem is that Rubygems will always install a gem when asked to do so, even if it&#8217;s already installed.</p>
<p>That&#8217;s where <a href="http://github.com/karabunga/install_gems/tree/master" target="_blank">install_gems.rb</a> comes in.  install_gems.rb takes a file name as an argument.  This file contains a simple list of gems along with their version number.  A custom installation command can also be specified.</p>
<p>Here&#8217;s an example:<br />
<code><br />
# This is an example file.  As you can see, it supports comments.<br />
haml 2.0.3<br />
eventmachine 0.12.2<br />
# Notice the custom command specified after the --<br />
termios 0.9.4 -- gem install termios -v 0.9.4 --no-rdoc --no-ri</p></blockquote>
<p></code></p>
<p>To install the above gems, you&#8217;d simply run<br />
<code>./install_gems.rb input_file</code></p>
<p>install_gems.rb has a few advantages over vanilla rubygems:</p>
<ul>
<li>It will only install a gem if the specified version is not already installed. That&#8217;s obviously much faster than reinstalling everything every time.</li>
<li>C extensions will be properly compiled.</li>
<li>Using different gem versions in different branches/tags/releases is now very easy.  You just have to maintain a list of required gems in your Git repository and make sure Capistrano runs install_gems.rb against this list before restarting the application servers.</li>
<li>It forces us to keep an up-to-date list of the gems we need.</li>
</ul>
<p>Of course, for this to work as expected, you&#8217;ll need to require specific gem versions in your application.  Your production server will likely have multiple versions of the same gems installed and if you don&#8217;t specify which version of the gem you want to require, things might (or will) break.</p>
<p>I released <a href="http://github.com/karabunga/install_gems/tree/master" target="_blank">install_gems.rb on GitHub</a> and <a href="http://danielharan.com" target="_blank">Daniel Haran</a> has already submitted a patch.  Feel free to do so as well, I&#8217;m a puller!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2008/10/13/announcing-install_gemsrb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Facebook can&#8217;t afford software licenses?</title>
		<link>http://blog.carlmercier.com/2008/08/20/facebook-cant-afford-software-licenses/</link>
		<comments>http://blog.carlmercier.com/2008/08/20/facebook-cant-afford-software-licenses/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 15:27:18 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Cool/funny/stupid stuff]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=144</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.carlmercier.com/wp-content/uploads/2008/08/picture-3.png"><img class="alignnone size-full wp-image-146" title="picture-3" src="http://blog.carlmercier.com/wp-content/uploads/2008/08/picture-3.png" alt="" width="500" height="374" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2008/08/20/facebook-cant-afford-software-licenses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Here&#8217;s a reason why we&#8217;re such Mac fanboys</title>
		<link>http://blog.carlmercier.com/2008/08/20/heres-a-reason-why-were-such-mac-fanboys/</link>
		<comments>http://blog.carlmercier.com/2008/08/20/heres-a-reason-why-were-such-mac-fanboys/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 04:44:52 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[customer]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[satisfaction]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=141</guid>
		<description><![CDATA[According to the American Customer Satisfaction Index (ACSI), Apple still tops the list as highest in customer satisfaction for personal computers. Apple&#8217;s customer satisfaction score reached a record 85, which was 10 points higher Dell, its closest competitor. &#8220;We haven&#8217;t seen anything like this before, where a company scores 10 points over its nearest rival,&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.carlmercier.com/wp-content/uploads/2008/08/apple-logo1.jpg"><img class="size-medium wp-image-142 alignleft" title="apple-logo1" src="http://blog.carlmercier.com/wp-content/uploads/2008/08/apple-logo1-248x300.jpg" alt="" width="89" height="108" /></a></p>
<p><em>According to the American Customer Satisfaction Index (ACSI), Apple still tops the list as highest in customer satisfaction for personal computers. Apple&#8217;s customer satisfaction score reached a record 85, which was 10 points higher Dell, its closest competitor.</em></p>
<p><em>&#8220;We haven&#8217;t seen anything like this before, where a company scores 10 points over its nearest rival,&#8221; said Claes Fornell, the head of the American Customer Satisfaction Index (ACSI), conducted quarterly by the University of Michigan.</em></p>
<p>I personally had to contact Apple a few times and every time, they exceeded my expectations.  They know how to treat their customers.  I can&#8217;t say the same for most companies I had to contact.</p>
<p>Read the full story here: <a href="http://www.macrumors.com/2008/08/19/app-tops-customer-satisfaction-surveys/" target="_blank">http://www.macrumors.com/2008/08/19/app-tops-customer-satisfaction-surveys/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2008/08/20/heres-a-reason-why-were-such-mac-fanboys/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Montreal Startup Index</title>
		<link>http://blog.carlmercier.com/2008/07/17/montreal-startup-index/</link>
		<comments>http://blog.carlmercier.com/2008/07/17/montreal-startup-index/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 17:04:19 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Defensio]]></category>
		<category><![CDATA[Startup and business]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=129</guid>
		<description><![CDATA[The Montreal Startup Index for July 2008 is out.  To my amazement, BOTH my startups are in the top 15! Ajaxwhois (recently acquired) is at #9, and Defensio is at #13.  Oddly enough, Defensio has a lot more traffic than Ajaxwhois.  However, API traffic is not reflected in those rankings and since 99.9% of our [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.techvibes.com/blog/montreal-start-up-index-july-2008/" target="_blank">The Montreal Startup Index for July 2008</a> is out.  To my amazement, BOTH my startups are in the top 15!</p>
<p><a href="http://ajaxwhois.com" target="_blank">Ajaxwhois</a> (recently acquired) is at #9, and <a href="http://defensio.com" target="_blank">Defensio</a> is at #13.  Oddly enough, Defensio has a lot more traffic than Ajaxwhois.  However, API traffic is not reflected in those rankings and since 99.9% of our traffic comes through our API, Defensio is not scoring as high as it should.</p>
<p>I&#8217;m sure our friends from <a href="http://praized.com" target="_blank">Praized</a> will take the list by storm in the coming months.  <a href="http://standoutjobs.com" target="_blank">Standout Jobs</a> is also scoring pretty high.  Congrats to all!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2008/07/17/montreal-startup-index/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
