<?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>Thu, 02 Feb 2012 18:38:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>EC2 is basically one big rip-off</title>
		<link>http://blog.carlmercier.com/2012/01/05/ec2-is-basically-one-big-ripoff/</link>
		<comments>http://blog.carlmercier.com/2012/01/05/ec2-is-basically-one-big-ripoff/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 19:47:08 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Software development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[dedicated]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=468</guid>
		<description><![CDATA[First of all, let me set this straight: I LOVE Amazon Web Services. I&#8217;ve been using EC2 for about 6 years and Defensio has always been entirely running on AWS. The flexibility is unparalleled and the variety of services such as EC2, ELB, EBS, S3 and CloudFront is a joy to use. However, there&#8217;s a problem with EC2. [...]]]></description>
			<content:encoded><![CDATA[<p>First of all, let me set this straight: I <strong>LOVE</strong> Amazon Web Services. I&#8217;ve been using EC2 for about 6 years and Defensio has always been entirely running on AWS. The flexibility is unparalleled and the variety of services such as EC2, ELB, EBS, S3 and CloudFront is a joy to use.</p>
<p>However, there&#8217;s a problem with EC2. A big one: performance. Bang for your buck. My friend <a href="http://jamesgolick.com/" target="_blank">James Golick</a> (<a href="http://twitter.com/jamesgolick" target="_blank">@jamesgolick</a>) has often <a href="http://vimeo.com/12814529" target="_blank">publicly talked about how crappy performance was on EC2</a>, both in terms of CPU and IO. I knew he was right, but didn&#8217;t know how right he was really.</p>
<p>I recently found out about <a href="http://joesdatacenter.com/" target="_blank">Joe&#8217;s Data Center</a>, a low-cost dedicated hosting provider so I decided to give them a shot for a pet project I&#8217;m working on. They certainly don&#8217;t have the infrastructure of Amazon, but that&#8217;s a trade-off I can live with given the scope of my project. They have great reviews all over the interwebs so that made me feel at ease.</p>
<p>I leased one of the cheapest machines they are offering: a dual processor AMD Opteron SledgeHammer 2.2Ghz for $55/mo. I went crazy and added 2GB of Ram for an extra $10/mo. Total damage: $65. Roughly the same price as a small instance on EC2 (m1.small). The SledgeHammer is by today&#8217;s standards a pretty old and crappy CPU, but I figured it would be plenty for my needs.</p>
<p>I decided to run some benchmarks against an m1.small to see how &#8220;bad&#8221; the SledgeHammer really was. I stopped paying attention to CPUs the minute I bought my first Mac 6 or 7 years ago. All these fancy CPU names don&#8217;t mean much to me anymore.</p>
<p>After some Googling, I settled on UnixBench for my benchmarks. I didn&#8217;t need very precise or scientific numbers, just a ballpark to see what I was getting at Joe&#8217;s.</p>
<p>I WAS BLOWN AWAY!!! In a nutshell, my dedicated server is <strong>10 times faster</strong> than an m1.small instance. TEN TIMES!!! For the same price! IO is also about 5 times faster  than EC2&#8242;s local storage. And as a bonus, I get 4GB of Ram instead of just 1.7GB.</p>
<p>After such a surprise, I decided to benchmark more expensive EC2 instance types to see how well my new best friend fares against my olf virtual friends. The results were equally surprising: my dedicated box is faster than a m1.large ($250/mo), faster than a m1.xlarge ($500/mo) and roughly as fast as a High CPU c1.xlarge ($500/mo). More explicitly, the c1.xlarge did ~50% better when running UnixBench with 8 threads, but the Opteron box is 50% faster when single threaded. Also, to get IO roughly equivalent to my dedicated box on EC2, you have to shell out $500/mo for a c1.xlarge. Even the m1.xlarge doesn&#8217;t cut it.</p>
<p>EDIT: Since publishing this article, I rented a EX 4S at Hetzner. It is effectively 58 times faster than an m1.small and has 32 GB of Ram. IO throughput is 29 times higher. All this for just $13 more a month.</p>
<p>Here&#8217;s a chart of my results (UnixBench index):</p>
<table width="100%" border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td></td>
<td><strong>m1.small</strong></td>
<td><strong>m1.large</strong></td>
<td><strong>m1.xlarge</strong></td>
<td><strong>c1.xlarge</strong></td>
<td><strong>Joe&#8217;s Dedicated</strong></td>
<td><strong>Hetzner EX 4S</strong></td>
</tr>
<tr>
<td><strong>Monthly Price</strong></td>
<td> $65.00</td>
<td> $250.00</td>
<td> $500.00</td>
<td> $500.00</td>
<td> $65.00</td>
<td> $78.00</td>
</tr>
<tr>
<td><strong>Architecture (Ubuntu)</strong></td>
<td> 32-bit</td>
<td> 64-bit</td>
<td> 64-bit</td>
<td> 64-bit</td>
<td> 64-bit</td>
<td> 64-bit</td>
</tr>
<tr>
<td><strong>CPUs/Cores</strong></td>
<td>1</td>
<td>2</td>
<td>4</td>
<td>8</td>
<td>2</td>
<td>8</td>
</tr>
<tr>
<td><strong>RAM (GB)</strong></td>
<td>1.7</td>
<td>7.5</td>
<td>15</td>
<td>7</td>
<td>4</td>
<td>32</td>
</tr>
<tr>
<td><strong>Index (1 Thread)</strong></td>
<td>116</td>
<td>357.5</td>
<td>438.1</td>
<td>494.4</td>
<td>777.6</td>
<td>1803.3</td>
</tr>
<tr>
<td><strong>Index (2 Threads)</strong></td>
<td></td>
<td>571.5</td>
<td></td>
<td></td>
<td>1210.5</td>
<td></td>
</tr>
<tr>
<td height="15"><strong>Index (4 Threads)</strong></td>
<td></td>
<td></td>
<td>1070.5</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><strong>Index (8 Threads)</strong></td>
<td></td>
<td></td>
<td></td>
<td>1746.3</td>
<td></td>
<td>6696.7</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>The raw numbers (including IO) can be found here: <a href="https://gist.github.com/1566734" target="_blank">https://gist.github.com/1566734</a>.</p>
<p>I&#8217;ll let you draw your own conclusions, but to me, it&#8217;s clear that Amazon needs to improve its performance. The bang-for-your-buck ratio of EC2 is completely out of whack.</p>
<p>EDIT: Title was initially &#8220;EC2 is basically one big scam&#8221;, which was a bad choice of word. I changed to word scam to rip-off, which is more appropriate I believe.</p>
<p>EDIT 2: <a href="http://www.hetzner.de/en/" target="_blank">Hetzner.de</a> has a new amazing machine, the EX 4S (Intel Core i7 2600, 32 GB, 3TB RAID 1). It&#8217;s just ~$78/month so I decided to benchmark it as well. HOLY FUCKING SHIT. Check this out: <a href="https://gist.github.com/1724957" target="_blank">Hetzner EX 4S Benchmarks</a>. I added the numbers in the table above for comparison. Looks like we have a winner!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2012/01/05/ec2-is-basically-one-big-ripoff/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>10 Tech Predictions for 2012</title>
		<link>http://blog.carlmercier.com/2011/12/15/10-tech-predictions-for-2012/</link>
		<comments>http://blog.carlmercier.com/2011/12/15/10-tech-predictions-for-2012/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 02:01:09 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Startup and business]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=452</guid>
		<description><![CDATA[The iPhone&#8217;s market share will continue to grow as users will slowly move away from Android out of frustration. The iPhone 4s will be the best selling iPhone of all time by a large margin. Apple will acquire Square. Apple will announce and possibly launch its mobile device-based payment system. Apple TV will take a [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>The iPhone&#8217;s market share will continue to grow as users will slowly move away from Android out of frustration.</li>
<li>The iPhone 4s will be the best selling iPhone of all time by a large margin.</li>
<li>Apple will acquire Square.</li>
<li>Apple will announce and possibly launch its mobile device-based payment system.</li>
<li>Apple TV will take a whole new meaning, either with the introduction of a TV set, or through major improvements to the current device. More content will be available and the new Apple TV will be a real contenter at replacing your cable subscription.</li>
<li>The iPad will maintain its dominance and the iPad 3 will be introduced (duh).</li>
<li>Other tablets such as Android and Playbook will continue to underwhelm and will sell in negligible quantities. Except for one&#8230;</li>
<li>The Kindle Fire will be a HUGE hit at Christmas 2011 and throughout 2012. It will give the iPad a run for its money.</li>
<li>Research in Motion&#8217;s stock will continue to plunge and will drop below $10. The company will be acquired by either Microsoft or Google for its assets or worst case, they&#8217;ll file for Chapter 11. I don&#8217;t think will see a Blackberry device in 2013.</li>
<li>Google+ will growth will cease and its users will slowly return to Facebook and Twitter.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2011/12/15/10-tech-predictions-for-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Restoring Twitter for Mac&#8217;s Black Icon</title>
		<link>http://blog.carlmercier.com/2011/01/12/restoring-twitter-for-macs-black-icon/</link>
		<comments>http://blog.carlmercier.com/2011/01/12/restoring-twitter-for-macs-black-icon/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 18:18:49 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=291</guid>
		<description><![CDATA[Twitter just changed the color of the Twitter for Mac icon to blue. I hate it. Most people hate it. Don&#8217;t worry, there&#8217;s hope! I have saved the old black icon and you can return to the old school way pretty easily. How to update Twitter for Mac&#8217;s icon from blue to black: Download the [...]]]></description>
			<content:encoded><![CDATA[<p>Twitter just changed the color of the Twitter for Mac icon to blue. I hate it. Most people hate it.</p>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-292" title="Icon" src="http://blog.carlmercier.com/wp-content/uploads/2011/01/Icon.png" alt="" width="200" height="200" /></div>
<p>Don&#8217;t worry, there&#8217;s hope! I have saved the old black icon and you can return to the old school way pretty easily.</p>
<p>How to update Twitter for Mac&#8217;s icon from blue to black:</p>
<ol>
<li>Download the <a href="http://blog.carlmercier.com/wp-content/uploads/black-twitter-icon.zip">Black Twitter Icon Pack</a></li>
<li>Navigate to your Applications folder</li>
<li>Right click Twitter and select Show Package Content</li>
<li>Go to Contents, then Resources</li>
<li>Update the file Icon.icns with the one included in the Black Twitter Icon Pack zip file.</li>
<li>Profit!</li>
</ol>
<p>As a bonus, you&#8217;ll find an <a href="http://blog.carlmercier.com/wp-content/uploads/2011/01/Icon_2.png" target="_blank">alternative icon</a> that Twitter never used. You may use it if you wish.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2011/01/12/restoring-twitter-for-macs-black-icon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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">
<!--start_raw--><br />
<textarea rows=30 cols=80><br />
# Setup the scene<br />
apt-get update<br />
apt-get upgrade<br />
# this is the Corporate World, folks, you&#8217;ll need to accept some license agreement in the next step<br />
apt-get install -y vim-full build-essential git-core sun-java6-jdk ant<br />
apt-get install -y mysql-server mysql-client</p>
<p># Install JRuby<br />
cd /tmp<br />
wget http://dist.codehaus.org/jruby/1.2.0/jruby-bin-1.2.0.tar.gz<br />
tar xzvf jruby-bin*<br />
mv jruby-1.2.0 /opt/jruby<br />
echo &#8220;export PATH=&#8221;/opt/jruby/bin:$PATH&#8221;" >> ~/.bashrc<br />
export PATH=&#8221;/opt/jruby/bin:$PATH&#8221;</p>
<p># By now, &#8216;jirb&#8217; should start IRB on JRuby!</p>
<p># Let&#8217;s now install some gems<br />
jruby -S gem install erubis rake json_pure rspec rack mime-types rubigen &#8211;no-rdoc &#8211;no-ri<br />
jruby -S gem install hpricot &#8211;no-rdoc &#8211;no-ri &#8211;version &#8216;~>0.6.1&#8242; # version 7 doesn&#8217;t work with JRuby as of now<br />
jruby -S gem install merb-core merb-more &#8211;no-rdoc &#8211;no-ri</p>
<p># Test to see if Merb is installed:<br />
jruby -S merb help</p>
<p># Create an Hello World app<br />
cd ~<br />
jruby -S merb-gen core hello_world<br />
cd hello_world<br />
jruby -S merb-gen controller hello<br />
echo &#8220;<br />
<h1>This is a Merb app running on JRuby. w00t!</h1>
<p>&#8221; > app/views/hello/index.html.erb<br />
# Freeze Merb into your app<br />
jruby -S gem install merb-core merb-more &#8211;no-rdoc &#8211;no-ri -i gems</p>
<p># Install Glassfish<br />
cd /tmp<br />
wget http://java.net/download/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar<br />
# and yet more licensing!<br />
java -Xmx256m -jar glassfish-installer-v2.1-b60e-linux.jar<br />
mv glassfish /opt/<br />
cd /opt/glassfish<br />
ant -f setup.xml</p>
<p># Start Glassfish server, it might take some time.<br />
./bin/asadmin start-domain domain1</p>
<p># Warbler and friends<br />
jruby -S gem install rails warbler activerecord-jdbc-adapter &#8211;no-rdoc &#8211;no-ri<br />
cd ~/hello_world<br />
jruby -S warble config</p>
<p># Make sure frozen gems are included in your .war file.<br />
# edit config/warble.rb and add &#8220;gems&#8221; to the config.dirs line</p>
<p># create some missing directories, otherwise, warble will complain.<br />
mkdir -p lib log vendor<br />
# create a .war file<br />
jruby -S warble war<br />
# copy it to Glassfish.<br />
cp hello_world.war /opt/glassfish/domains/domain1/autodeploy/</p>
<p># Glassfish finds your app and starts it automatically.  Give it a few seconds.<br />
# Then, go to http://{server-ip}:4848<br />
# User: admin    Pass: adminadmin        Sounds like a good idea to change this for production!!!!!<br />
# Click &#8220;Web Applications&#8221;, then &#8220;hello_world&#8221;.  Change &#8220;Context Root&#8221; to &#8220;/&#8221; and Save.  Saving was slow for me.</p>
<p>#<br />
# That&#8217;s it!!!<br />
#<br />
# Now go see your l33t web 2.0 app in action:<br />
# Go to http://{server-ip}:8080/<br />
# and http://{server-ip}:8080/hello<br />
</textarea><br />
<!--end_raw-->
</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>26</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>
	</channel>
</rss>

