<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Carl Mercier's blog</title>
	
	<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>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CarlMercier" /><feedburner:info uri="carlmercier" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Changes at IsItJRuby.com</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/AWVOvn-COwc/</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>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/AWVOvn-COwc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/12/14/changes-at-isitjruby-com/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.carlmercier.com/2009/12/14/changes-at-isitjruby-com/</feedburner:origLink></item>
		<item>
		<title>Announcing IsItJruby.com</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/qKJCaUU7CPQ/</link>
		<comments>http://blog.carlmercier.com/2009/05/28/announcing-isitjrubycom/#comments</comments>
		<pubDate>Thu, 28 May 2009 12:41:18 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=267</guid>
		<description><![CDATA[Ever wondered if a certain Ruby Gem works on JRuby? Wonder no more. I just launched IsItJruby.com, a community-driven Gem compatibility website. If you&#8217;re familiar with IsItRuby19.com, you&#8217;ll notice a lot of similarities (ie: blatant rip-off). It&#8217;s simply because I forked Brightbox&#8217;s GitHub project to build isitjruby.com. Brightbox should get all the credit. Although I [...]]]></description>
			<content:encoded><![CDATA[<p>Ever wondered if a certain Ruby Gem works on JRuby?  Wonder no more.  I just launched <a href="http://isitjruby.com" target="_blank">IsItJruby.com</a>, a community-driven Gem compatibility website.  If you&#8217;re familiar with <a href="http://isitruby19.com" target="_blank">IsItRuby19.com</a>, you&#8217;ll notice a lot of similarities (ie: blatant rip-off).  It&#8217;s simply because I forked Brightbox&#8217;s <a href="http://github.com/brightbox/isitruby19" target="_blank">GitHub project</a> to build isitjruby.com.  <a href="http://brightbox.co.uk" target="_blank">Brightbox</a> should get all the credit.</p>
<p><center><a href="http://blog.carlmercier.com/wp-content/uploads/2009/05/picture-2.png"><img class="aligncenter size-medium wp-image-269" title="IsItJruby.com homepage" src="http://blog.carlmercier.com/wp-content/uploads/2009/05/picture-2-300x259.png" alt="IsItJruby.com homepage" width="300" height="259" /></a></center></p>
<p>Although I didn&#8217;t change the UI (because it&#8217;s so gorgeous already!), I added the following features:</p>
<ul>
<li>Gem page lists dependencies</li>
<li>Warning when Gem contains C extensions (since they don&#8217;t work on JRuby)</li>
<li>Ability to specify the JRuby version against which the Gem was tested</li>
</ul>
<p>I accept patches, so <a href="http://github.com/cmer/isitjruby" target="_blank">fork away</a>!</p>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/qKJCaUU7CPQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/05/28/announcing-isitjrubycom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.carlmercier.com/2009/05/28/announcing-isitjrubycom/</feedburner:origLink></item>
		<item>
		<title>Lessons learned: How I founded, bootstrapped, grew and sold my web startup</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/peU8pFsH95k/</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>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/peU8pFsH95k" height="1" width="1"/>]]></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>
		<feedburner:origLink>http://blog.carlmercier.com/2009/04/08/lessons-learned-how-i-founded-bootstrapped-grew-and-sold-my-web-startup/</feedburner:origLink></item>
		<item>
		<title>Running Merb on JRuby 1.2 and Glassfish 2.1</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/EXQHfvM9_SU/</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>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/EXQHfvM9_SU" height="1" width="1"/>]]></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>
		<feedburner:origLink>http://blog.carlmercier.com/2009/03/30/running-merb-on-jruby-12-and-glassfish-21/</feedburner:origLink></item>
		<item>
		<title>A dream setup: THREE monitors on a Macbook!</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/kq7RX-0eP9g/</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>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/kq7RX-0eP9g" height="1" width="1"/>]]></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>
		<feedburner:origLink>http://blog.carlmercier.com/2009/02/16/a-dream-setup-three-monitors-on-a-macbook/</feedburner:origLink></item>
		<item>
		<title>StartupCFO interviews me</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/anNJO7eKMPM/</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>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/anNJO7eKMPM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/02/03/startupcfo-interviews-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.carlmercier.com/2009/02/03/startupcfo-interviews-me/</feedburner:origLink></item>
		<item>
		<title>Defensio acquired!</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/xF-8oG5S9ug/</link>
		<comments>http://blog.carlmercier.com/2009/01/27/defensio-acquired/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 21:13:13 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Defensio]]></category>
		<category><![CDATA[Startup and business]]></category>
		<category><![CDATA[acquisition]]></category>
		<category><![CDATA[goodnews]]></category>
		<category><![CDATA[websense]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=185</guid>
		<description><![CDATA[It is my pleasure to announce that my latest venture, Defensio (Karabunga Inc), has been acquired by leading Internet security company, Websense, Inc (NSDQ: WBSN). I&#8217;m not quite moving to the Caribbeans just yet as I&#8217;m now employed by Websense as Director of Software Development.  Needless to say, this is an exciting challenge for me [...]]]></description>
			<content:encoded><![CDATA[<p>It is my pleasure to announce that my latest venture, <a href="http://defensio.com" target="_blank">Defensio</a> (<a href="http://karabunga.com" target="_blank">Karabunga Inc</a>), has been acquired by leading Internet security company, <a href="http://websense.com" target="_blank">Websense, Inc</a> (NSDQ: <a href="http://www.marketwire.com/mw/stock.jsp?Ticker=WBSN" target="_blank">WBSN</a>).</p>
<p>I&#8217;m not quite moving to the Caribbeans just yet as I&#8217;m now employed by Websense as Director of Software Development.  Needless to say, this is an exciting challenge for me and an amazing opportunity to further protect the web from all the malicious content that&#8217;s being posted nowadays.  Our users should rejoice because we have a lot of amazing ideas already cooking!</p>
<p><a href="http://blog.defensio.com/2009/01/27/websense-acquires-defensio/" target="_blank">Read the official acquisition announcement here for more details..</a>.</p>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/xF-8oG5S9ug" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/01/27/defensio-acquired/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.carlmercier.com/2009/01/27/defensio-acquired/</feedburner:origLink></item>
		<item>
		<title>Announcing ec2-extra-tools</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/h--WsGDSBCg/</link>
		<comments>http://blog.carlmercier.com/2008/10/26/announcing-ec2-extra-tools/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 22:49:48 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=174</guid>
		<description><![CDATA[Hola!  I just started a new project on GitHub, I&#8217;m calling it ec2-extra-tools.  It&#8217;s basically a set of extra command line tools that I find useful on Amazon EC2. Right now, it only has 2, but I will add more in the future and encourage other people to collaborate on the project. Here&#8217;s what&#8217;s included [...]]]></description>
			<content:encoded><![CDATA[<p>Hola!  I just started a new project on GitHub, I&#8217;m calling it <a href="http://github.com/cmer/ec2-extra-tools">ec2-extra-tools</a>.  It&#8217;s basically a set of extra command line tools that I find useful on Amazon EC2. Right now, it only has 2, but I will add more in the future and encourage other people to collaborate on the project.</p>
<p>Here&#8217;s what&#8217;s included so far:</p>
<ul>
<li>ec2-identify-instance: returns the current EC2 instance id</li>
<li>ec2-identify-volume: returns the EBS volume id of a device</li>
</ul>
<p>I needed ec2-identify-volume to automate EBS snapshots, so I thought I&#8217;d release my work on GitHub.</p>
<p>Here&#8217;s what I added in /etc/crontab to automate EBS snapshots:</p>
<p><code> 0 2 * * * root ec2-create-snapshot `ec2-identify-volume /dev/sdj` &gt;&gt; /var/log/ebs_snapshots<br />
</code></p>
<p>The great thing about this line is that I don&#8217;t need to know the volume id beforehands.  If a new volume is attached at /dev/sdj, I don&#8217;t have to change my crontab file either.  In my situation, this is very convenient.</p>
<p>Hope you find ec2-extra-tools useful!</p>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/h--WsGDSBCg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2008/10/26/announcing-ec2-extra-tools/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://blog.carlmercier.com/2008/10/26/announcing-ec2-extra-tools/</feedburner:origLink></item>
		<item>
		<title>Very simple paper to email on Mac OS X</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/KWs2fyCgch8/</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>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/KWs2fyCgch8" height="1" width="1"/>]]></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>
		<feedburner:origLink>http://blog.carlmercier.com/2008/10/25/very-simple-paper-to-email-on-mac-os-x/</feedburner:origLink></item>
		<item>
		<title>Announcing install_gems.rb</title>
		<link>http://feedproxy.google.com/~r/CarlMercier/~3/nGEdsYKOtp0/</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>
<img src="http://feeds.feedburner.com/~r/CarlMercier/~4/nGEdsYKOtp0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2008/10/13/announcing-install_gemsrb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.carlmercier.com/2008/10/13/announcing-install_gemsrb/</feedburner:origLink></item>
	</channel>
</rss>
