<?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; Carl Mercier</title>
	<atom:link href="http://blog.carlmercier.com/author/admin/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>Last night I experienced Silicon Valley</title>
		<link>http://blog.carlmercier.com/2011/11/11/last-night-i-experienced-silicon-valley/</link>
		<comments>http://blog.carlmercier.com/2011/11/11/last-night-i-experienced-silicon-valley/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 00:52:44 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Startup and business]]></category>
		<category><![CDATA[help]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[silicon valley]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=459</guid>
		<description><![CDATA[Many people fail to understand why Silicon Valley is such a great ecosystem to build startups. I had a great experience last night that embodies everything the Valley is all about. It goes like this&#8230; A fellow Montrealer entrepreneur who recently moved to The City invited me over for Schartz&#8217;s Smoked Meat. He somehow managed [...]]]></description>
			<content:encoded><![CDATA[<p>Many people fail to understand why Silicon Valley is such a great ecosystem to build startups. I had a great experience last night that embodies everything the Valley is all about. It goes like this&#8230;</p>
<p>A fellow Montrealer entrepreneur who recently moved to The City invited me over for Schartz&#8217;s Smoked Meat. He somehow managed to import smoked meat from Montreal. Crazy Canuck. Turns out he had enough meat to invite a few other entrepreneurs. I accepted the invitation because experience has taught me that these impromptu parties and gatherings are often the best source of inspiration, validation, information and networking Silicon Valley has to offer. And of course, cooking Montreal smoked meat in San Francisco sounded like a lot of fun!</p>
<p>A relatively well-known and successful startup guy was at the party. We &#8220;knew&#8221; each other over Twitter and email, but we had never met in person. I started by congratulating him on his recent acquisition, something not quite uncommon in the Valley. I then proceeded to ask a few questions about his startup and mainly why they had to pivot from their awesome and successful first product, since I&#8217;ve been toying with an idea that relates to what they were doing.</p>
<p>He asks me what I&#8217;m working on and I unleash the elevator pitch. He quickly interrupts me. No need to babble on and on, he already fully understands what I&#8217;m talking about, what I&#8217;m building, why and who the target market is.</p>
<p>He says &#8220;Check out company XYZ. They built pretty much just that 4 years ago but they were too early. I&#8217;ll introduce you to the founder if you want.&#8221; Awesome! Years of insider knowledge now within reach! He then goes on mentioning a few companies who&#8217;s APIs will save me months of research and development.</p>
<p>These serendipitous meetings are what make Silicon Valley so awesome. I went to a smoked meat party &#8220;after work&#8221; and ended up getting more work done than I would have in 6 months or a year sitting at my desk in Montreal. If you are an entrepreneur outside of Silicon Valley and don&#8217;t visit the Bay Area on a regular basis, you are way behind. The world moves fast here.</p>
<p>Oh&#8230; and as I&#8217;m writing this, Ron Conway just walked by&#8230; Hi Ron!</p>
<p>(this actually happened a while ago. I wrote this article the next day but didn&#8217;t publish it until now.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2011/11/11/last-night-i-experienced-silicon-valley/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>US incorporation for Canadian startups</title>
		<link>http://blog.carlmercier.com/2011/08/29/us-incorporation-for-canadian-startups/</link>
		<comments>http://blog.carlmercier.com/2011/08/29/us-incorporation-for-canadian-startups/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 04:47:13 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Startup and business]]></category>
		<category><![CDATA[canada]]></category>
		<category><![CDATA[corporation]]></category>
		<category><![CDATA[delaware]]></category>
		<category><![CDATA[incorporation]]></category>
		<category><![CDATA[quebec]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=324</guid>
		<description><![CDATA[In March 2009, I gave a talk entitled How I founded, bootstrapped, grew and sold my web startups at Mesh U in Toronto, Canada. Ever since, people have been fascinated by how I incorporated Karabunga (Defensio&#8216;s parent company) in Delaware despite living in Canada, and yet maintained the simplicity and benefits of running a Canadian company. [...]]]></description>
			<content:encoded><![CDATA[<p>In March 2009, I gave a talk entitled <a href="http://www.slideshare.net/cmercier/how-i-founded-bootstrapped-grew-and-sold-my-web-startups-meshu-2009" target="_blank">How I founded, bootstrapped, grew and sold my web startups</a> at Mesh U in Toronto, Canada. Ever since, people have been fascinated by how I incorporated Karabunga (<a href="http://defensio.com" target="_blank">Defensio</a>&#8216;s parent company) in Delaware despite living in Canada, and yet maintained the simplicity and benefits of running a Canadian company. I don&#8217;t think a month has since gone by without me having to explain in more detail how I did it. Today, I thought I&#8217;d finally share with the world what I learned.</p>
<p>There are numerous reasons to incorporate your startup in the USA, particularly in Delaware. I won&#8217;t bore you with the details, since I assume you did your homework. Right? Read this <a href="http://www.quora.com/Whats-the-advantage-of-incorporating-a-startup-in-Delaware-for-a-closely-held-company" target="_blank">great thread on Quora explaining the benefits of Delaware incorporation for startups</a>. Read the whole thing. It&#8217;s a goldmine.</p>
<p>The reasons for me to incorporate in the US were very simple:</p>
<ul>
<li>I thought I might raise capital from US investors</li>
<li>Exit was most likely going to be an acquisition by a US company (that&#8217;s what eventually happened)</li>
<li>Wanted the option to move to the US (possibly with an <a href="http://en.wikipedia.org/wiki/L-1_visa" target="_blank">L-1 visa</a>)</li>
<li>I expected to sell our product mostly to US-based customers</li>
<li>Wanted to escape Quebec&#8217;s stupid French-language laws</li>
</ul>
<p>After weighing different options with my excellent US/Canada tax accountant <a href="http://www.rsmrichter.com/Our_People/robertchayer.aspx" target="_blank">Robert Chayer</a>, it was clear that I had to incorporate in Delaware. If you are starting a tech startup, <strong>you are most likely doing it wrong if you incorporate in a US state other than Delaware.</strong>  60% of Fortune 500 companies, 50% of publicly traded companies and 50% of all American corporations are based in Delaware.</p>
<p>Facebook? Google? LinkedIn? Yahoo? Amazon? YouTube? Sendgrid? Quora? Yup. Delaware. (<a href="https://delecorp.delaware.gov/tin/GINameSearch.jsp" target="_blank">search here</a>)  This didn&#8217;t happen by accident. But it&#8217;s not the point of this post; I&#8217;ll let you figure out on your own why Delaware is usually the right choice.</p>
<p>I finally incorporated <a href="https://delecorp.delaware.gov/tin/controller" target="_blank">Karabunga as a Delaware C Corporation</a> on March 6, 2007 through <a href="http://www.delawareintercorp.com/" target="_blank">Delaware Intercorp</a>. I also used them as my <a href="http://www.delawareintercorp.com/t-CanIChangeMyRegisteredAgent.aspx" target="_blank">Registered Agent </a>until I sold Karabunga to <a href="http://websense.com" target="_blank">Websense</a> in 2009. I do not hesitate to recommend them. They were very professional and knowledgable every time I had to deal with them. I also used their mail forwarding service which was as advertised.</p>
<p>I did not use Delaware Intercorp&#8217;s generic Certificate of Incorporation since it didn&#8217;t fit the requirements of a tech startup. I had a good idea of what I wanted/needed in terms of number of shares, par value and so on, but I thought hiring a lawyer to draft the legal document was the smart thing to do. <strong>YOU SHOULD ALWAYS consult with an expert before incorporating a company. </strong>If you screw up, you may have to pay a ridiculous $165,000 franchise tax to the State of Delaware. Doing it right only cost me an extra $150. <a href="http://startuplawyer.com/" target="_blank">Ryan Roberts</a> recently published <a href="http://startuplawyer.com/startup-issues/if-i-launched-a-startup" target="_blank">an awesome incorporation checklist</a>. You <del>should</del> need to follow his advice and discuss it with your attorney.</p>
<p>With Karabunga incorporated, I was ready to do business in the US. I was however running the business <a href="http://g.co/maps/ejt3" target="_blank">from a small town near Montreal, Canada</a>. Having Canadian employees working from Canada for a US entity is a pain in the ass and a tongue-twister. Moreover, American companies cannot benefit from the generous startup tax credits offered in Canada.</p>
<p>This is where it gets fun! I ended up incorporating a second company in Canada to deal with these issues. In my case, I incorporated in the province of Quebec for simplicity. Let&#8217;s call this new company &#8220;QC-inc&#8221;.</p>
<p>Both Karabunga and QC-inc would be owned directly by me. According to Robert, this is critical. A Canadian individual owning a US company that owns a Canadian company forms what he called a &#8220;sandwich&#8221; (CA &#8211; US &#8211; CA), and although sandwiches are yummy, they have important tax implications that you should in most cases avoid. In retrospect, I wonder what would have happened if I owned QC-inc, and QC-inc owned Karabunga (CA &#8211; CA &#8211; US). This could have had interesting tax-minimizing benefits after the acquisition. It&#8217;s definitely something to bring up with your tax accountant. There was probably a reason why we didn&#8217;t do it this way, I forget.</p>
<p>Here&#8217;s what the corporate structure looked like:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-386" title="Karabunga Corporate Structure" src="http://blog.carlmercier.com/wp-content/uploads/2011/08/Untitled-drawing-Google-Docs-11.jpg" alt="" width="369" height="250" /></p>
<p>Karabunga owned all the IP, the Defensio name, the trademarks, the code and the servers (in our case, EC2). Karabunga owned and controlled all the value.</p>
<p>QC-inc was a simple consulting firm that had only one client: Karabunga. Our employees, office, dev computers, ping-pong table and our infamous Dev1 development server all belonged to QC-inc. The idea is to keep both companies as independent as possible. If QC-inc went out of business for whatever reason, it would not have impacted Karabunga in any way (aside from losing all the employees). QC-inc also obeyed Quebec&#8217;s French-language laws such as <a href="http://en.wikipedia.org/wiki/Charter_of_the_French_Language" target="_blank">Bill 101</a>. Hopefully you don&#8217;t have that problem where you live.</p>
<p>Karabunga is the company we sold to Websense and the employees became Websense employees. I later dismantled QC-inc since it lost its only client and no longer had a purpose.</p>
<p>Having two <em>independent</em> companies also meant treating them as such. It was important for QC-inc to invoice Karabunga at a fair market rate for consulting services. For example, it would have been illegal to take a loss in QC-inc to keep Karabunga&#8217;s expenses low. From what I understand, as long as QC-inc breaks even or makes a small profit, you should be fine. But then again, talk to your tax accountant!</p>
<p>Because QC-inc is just like any other Canadian entity, it was eligible for <a href="http://www.cra-arc.gc.ca/sred/" target="_blank">SR&amp;ED</a>. We dealt with <a href="http://twitter.com/rayluk" target="_blank">Raymond Luk</a> and his fantastic team at <a href="http://www.flowventures.com/" target="_blank">Flow Ventures</a>. I advice you to work with a consultant for your tax credits and grants. They&#8217;ll take a small cut, but it&#8217;s worth it. As a startup founder, you shouldn&#8217;t be wasting your time filling out paperwork. I don&#8217;t hesitate to recommend Raymond and Flow every occasion I get.</p>
<p>I mentioned earlier that our employees worked for QC-inc rather than Karabunga. &#8220;What about stock options?&#8221; I can hear you all say! Well, turns out, that was never an issue. QC-inc and Karabunga had an agreement to grant Karabunga stock options to QC-inc employees. End of story.</p>
<p>The US/Canada setup worked very well and was easy to manage. Believe it or not, most headaches came from dealing with the provincial government, not from the State of Delaware. Incorporating and maintaining an incorporation in Delaware is also very affordable.</p>
<p>The first problem I ran into was opening a bank account in the US for Karabunga. Since the shareholders (i.e.: me) were Canadian, banks wouldn&#8217;t let me open and account. This is because of some new anti-terrorism laws since 9/11. I applied at 2 or 3 banks and was turned down every time. I finally found RBC Centura (now called <a href="http://www.rbcbankusa.com/" target="_blank">RBC Bank</a>), which at the time was owned by RBC in Canada. The closest branch was in Virginia Beach, so I went there an opened an account without any problems. I later learned that I could have opened an account with RBC Centura through a Canadian branch, but I could not have expensed my beach vacation. RBC Bank was recently sold and is no longer owned by a Canadian bank, but according to their website, <a href="http://www.rbcbankusa.com/cid-275447.html" target="_blank">they will maintain US banking for Canadians</a>.</p>
<p>Another problem arose when I had to file Karabunga&#8217;s tax return. I called a few people specialized in US taxes in Canada but they all quoted me thousands of dollars, even though we were not yet profitable. I ended up hiring a <a href="http://www.angolanoandcompany.com/" target="_blank">small family-run accounting firm in Burlington, VT</a> who did everything over email for just a few hundred dollars. This goes for lawyers as well. US-specialized lawyers in Canada can be ridiculously expensive. US-based lawyers are just expensive.</p>
<p>If you think a good reason to incorporate in Delaware is to save money and avoid taxation, think again. As far as I know, corporate taxes are the same, or maybe even a little higher in the US. Moreover, selling a US corporation instead of a Canadian one could cost you an extra ~$180,000 CAD in taxes. Let me explain.</p>
<p>Every Canadian has a $750,000 lifetime capital gain exemption. It can only be used once. If you sell a Canadian company for $750,000. You pay $0 taxes. If you sell a Canadian company for $1M, you&#8217;ll pay taxes on $250k. Only half your capital gain is taxable, and this amount would be taxed at approximately 48%. In this case, you&#8217;d pay $60k in taxes ($250k / 2 * 0.48).</p>
<p>If the same million-dollar company was incorporated in the US, the capital gain exemption does <em>not</em> apply. The formula would be $1M / 2 * 0.48. You would have to pay $240k in taxes. These numbers are all approximate, obviously.</p>
<p>The following table illustrates the impact of the capital gain exemption. As you can see, the impact (in percent) decreases as the value of your company goes up. Nevertheless, it&#8217;s something to keep in mind.</p>
<p style="text-align: center;"><a href="http://blog.carlmercier.com/wp-content/uploads/2011/08/Unsaved-spreadsheet.jpg"><img class="aligncenter size-full wp-image-332" title="Taxes due" src="http://blog.carlmercier.com/wp-content/uploads/2011/08/Unsaved-spreadsheet.jpg" alt="" width="505" height="171" /></a></p>
<p>This dual-incorporation structure is not for everyone. I think it&#8217;s a great way to get the best of both worlds, however. It was relatively easy to manage; much easier than I originally envisioned.  Now that you have all this information, it should be relatively easy to replicate. If I started another Internet startup, I would definitely consider replicating the Karabunga setup.</p>
<p>I hope this was helpful. I&#8217;m open to questions or comments.</p>
<p><strong>UPDATE: </strong>This article is being discussed on Hacker News. <a href="http://news.ycombinator.com/item?id=2935970" target="_blank">Join the conversation.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2011/08/29/us-incorporation-for-canadian-startups/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Giving Hope</title>
		<link>http://blog.carlmercier.com/2011/01/18/giving-hope/</link>
		<comments>http://blog.carlmercier.com/2011/01/18/giving-hope/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 16:33:31 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Startup and business]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=305</guid>
		<description><![CDATA[A little over a year ago (December 2009), my good friends Gary Haran (@garyharan) and Marc-André Cournoyer (@macournoyer) invited me to lunch to discuss their startup ambitions. Or more precisely, to discuss the idea that would change their lives and those of so many others: Talker. Just like most first time entrepreneurs, they had high [...]]]></description>
			<content:encoded><![CDATA[<p>A little over a year ago (December 2009), my good friends <a href="http://www.garyharan.com/" target="_blank">Gary Haran</a> (<a href="http://twitter.com/garyharan" target="_blank">@garyharan</a>) and <a href="http://macournoyer.com/" target="_blank">Marc-André Cournoyer</a> (<a href="http://twitter.com/macournoyer" target="_blank">@macournoyer</a>) invited me to lunch to discuss their startup ambitions. Or more precisely, to discuss the idea that would change their lives and those of so many others: <a href="http://talkerapp.com/" target="_blank">Talker</a>. Just like most first time entrepreneurs, they had high hopes and no fear. They had caught the wonderful disease I call &#8220;entrepreneur naivety&#8221;.</p>
<p>It was exciting to see these two super smart guys taking the plunge into the crazy world of startups. I was obviously willing to give them as much advice as I could to help them achieve their goals.</p>
<p>However, I don&#8217;t believe in giving &#8220;empty advice&#8221;. That&#8217;s useless and a waste of everybody&#8217;s time. Instead, I exposed all the problems and roadblocks I identified in their idea and go-to-market strategy. And there were many. Not ridiculous-many, but first-time-entrepreneur-many. </p>
<p>There&#8217;s a very fine line between providing valuable advice and killing somebody&#8217;s dream. Giving blunt honest opinions and useful advice is hard. However, it&#8217;s probably the most valuable things young entrepreneurs can get from more experienced people; novice entrepreneurs tend to repeat the same mistakes.</p>
<p>At the end of our lunch meeting, I told the guys that I didn&#8217;t think their business would grow as fast and as big as they were hoping, mainly because of the competitive landscape, but that they should give it a shot anyways. After all, they&#8217;re rockstar developers&#8230; it wouldn&#8217;t take them long to build it and they&#8217;d learn a ton. Worst case, they&#8217;ll waste just a couple of months of salary, best case, they&#8217;ll be rich. It was worth a shot.</p>
<p>And of course, they went for it. They had passed my &#8220;got some balls?&#8221; test.</p>
<p>Fast forward a few months, I get a phone call from my entrepreneur friends. They said that what I had predicted was happening: competition was tougher than previously anticipated, the user base wasn&#8217;t growing as fast as expected, and more importantly, they still couldn&#8217;t afford their private zoos.</p>
<p>They once again sought my advice and mentioned that they&#8217;d be willing to sell to the right buyer, at the right price. I gave them a few pointers on what to do, who to talk to, and how to play their cards right to make things happen.</p>
<p>April 20, 2010, <a href="http://talkerapp.tumblr.com/post/536387940/talker-acquired-by-teambox" target="_blank">TeamBox acquires Talker</a>. The guys made a decent chunk of change, certainly not <a href="http://www.urbandictionary.com/define.php?term=fuck+you+money" target="_blank">FU money</a>, but definitely something to be more than happy with.</p>
<p>I had lunch with them again yesterday and they told me how much my support and advice had inspired and motivated them. Really!? <a href="http://blog.asmartbear.com/self-doubt-fraud.html" target="_blank">I felt like a fraud</a>. I didn&#8217;t do anything special&#8230; I basically (unintentionally) crushed their dreams into oblivion. The advice I gave was so obvious to me, yet, it made a huge difference. Apparently.</p>
<p>Their immense appreciation made me realize something: the smallest things can have a significant impact on other people&#8217;s lives. What I did was easy: I just had lunch and a couple phone calls with friends and gave them my 2 cents. It inspired them to work harder, faster and to aim for success.</p>
<p>This is something veteran entrepreneurs need to do more with up-and-coming guys. Grab a coffee and give your honest opinion. Expose flaws, problems and help find solutions. Apparently, it helps a lot, or at least, it gives them hope.</p>
<p>It sure made my day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2011/01/18/giving-hope/feed/</wfw:commentRss>
		<slash:comments>0</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>YAML, ZAML, Marshal &amp; JSON benchmark in Ruby</title>
		<link>http://blog.carlmercier.com/2010/11/19/yaml-zaml-marshal-json-benchmark-in-ruby/</link>
		<comments>http://blog.carlmercier.com/2010/11/19/yaml-zaml-marshal-json-benchmark-in-ruby/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 23:18:42 +0000</pubDate>
		<dc:creator>Carl Mercier</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.carlmercier.com/?p=282</guid>
		<description><![CDATA[At Defensio, we recently needed to find out how slow YAML was compared to Marshal. We also wanted to know how much faster ZAML, an alternative to YAML, is. I ran a few benchmarks under 1.8.7 MRI, 1.8.7 REE, 1.9.2 and Rubinius to see how they compare. I also benchmarked to_json to have an order [...]]]></description>
			<content:encoded><![CDATA[<p>At Defensio, we recently needed to find out how slow YAML was compared to Marshal. We also wanted to know how much faster ZAML, an alternative to YAML, is.</p>
<p>I ran a few benchmarks under 1.8.7 MRI, 1.8.7 REE, 1.9.2 and Rubinius to see how they compare. I also benchmarked to_json to have an order of magnitude. My benchmarks consist of serializing/deserializing a relatively complex Hash (many nested levels). The YAML representation of the Hash is ~3kb.</p>
<p>Conclusions:</p>
<ul>
<li>YAML is really slow</li>
<li>YAML is twice as fast under 1.9.2 vs 1.8.7</li>
<li>ZAML is much faster than YAML under 1.8.7, but about the same in 1.9.2</li>
<li>REE (no GC tweaks) isn&#8217;t faster in this situation</li>
<li>Rubinius is ridiculously slow</li>
<li>Psych under Ruby 1.9.2 is disappointing </li>
</ul>
<p>Here are the results:</p>
<div id="gist-707375" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]</div><div class='line' id='LC2'>--------------------------------------------------------------------</div><div class='line' id='LC3'>YAML.load:	0.7924</div><div class='line' id='LC4'>Marshal.load:	0.0742</div><div class='line' id='LC5'>to_yaml:	5.1661</div><div class='line' id='LC6'>ZAML.dump:	1.4574</div><div class='line' id='LC7'>to_json:	0.1152</div><div class='line' id='LC8'>Marshal.dump:	0.0845</div><div class='line' id='LC9'><br/></div><div class='line' id='LC10'>ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-darwin10.4.0], MBARI 0x6770, Ruby Enterprise Edition 2010.02</div><div class='line' id='LC11'>--------------------------------------------------------------------</div><div class='line' id='LC12'>YAML.load:	0.7976</div><div class='line' id='LC13'>Marshal.load:	0.0864</div><div class='line' id='LC14'>to_yaml:	4.9012</div><div class='line' id='LC15'>ZAML.dump:	1.3508</div><div class='line' id='LC16'>to_json:	0.0940</div><div class='line' id='LC17'>Marshal.dump:	0.0812</div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'>ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]</div><div class='line' id='LC20'>--------------------------------------------------------------------</div><div class='line' id='LC21'>YAML.load:		0.7079</div><div class='line' id='LC22'>YAML.load (Psych):	2.6055</div><div class='line' id='LC23'>Marshal.load:		0.0928</div><div class='line' id='LC24'>to_yaml:		2.1682</div><div class='line' id='LC25'>to_load (Psych):	2.2924</div><div class='line' id='LC26'>ZAML.dump:		5.0259</div><div class='line' id='LC27'>to_json:		0.1133</div><div class='line' id='LC28'>Marshal.dump:		0.0908</div><div class='line' id='LC29'><br/></div><div class='line' id='LC30'><br/></div><div class='line' id='LC31'><br/></div><div class='line' id='LC32'>rubinius 1.1.1 (1.8.7 4018ebda 2010-11-16 JI) [x86_64-apple-darwin10.5.0]</div><div class='line' id='LC33'>--------------------------------------------------------------------</div><div class='line' id='LC34'>YAML.load:	2.7777</div><div class='line' id='LC35'>Marshal.load:	0.8560</div><div class='line' id='LC36'>to_yaml:	23.5828</div><div class='line' id='LC37'>ZAML.dump:	4.0745</div><div class='line' id='LC38'>to_json:	3.6620</div><div class='line' id='LC39'>Marshal.dump:	3.3797</div><div class='line' id='LC40'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/707375/8d21fe844733da7ff00e650103c08dcda34d1b9d/yaml_benchmark_results.txt" style="float:right;">view raw</a>
            <a href="https://gist.github.com/707375#file_yaml_benchmark_results.txt" style="float:right;margin-right:10px;color:#666">yaml_benchmark_results.txt</a>
            <a href="https://gist.github.com/707375">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>If you want to benchmark on your machine, here&#8217;s the source code. Sorry, I couldn&#8217;t include the YAML string as it is confidential data.</p>
<div id="gist-707372" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nb">require</span> <span class="s1">&#39;rubygems&#39;</span></div><div class='line' id='LC2'><span class="nb">require</span> <span class="s1">&#39;benchmark&#39;</span></div><div class='line' id='LC3'><span class="nb">require</span> <span class="s1">&#39;yaml&#39;</span></div><div class='line' id='LC4'><span class="nb">require</span> <span class="s1">&#39;zaml&#39;</span></div><div class='line' id='LC5'><span class="nb">require</span> <span class="s1">&#39;json&#39;</span></div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'><span class="n">yaml_str</span> <span class="o">=</span> <span class="o">&lt;&lt;-</span><span class="no">eos</span></div><div class='line' id='LC8'><span class="sh">yaml goes here</span></div><div class='line' id='LC9'><span class="no">eos</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="n">h</span> <span class="o">=</span> <span class="kp">nil</span></div><div class='line' id='LC12'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC13'><span class="n">yaml_load_time</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC14'><span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="n">h</span> <span class="o">=</span> <span class="no">YAML</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">yaml_str</span><span class="p">)</span> <span class="p">}</span></div><div class='line' id='LC15'><span class="p">}</span></div><div class='line' id='LC16'><br/></div><div class='line' id='LC17'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC18'><span class="n">to_yaml_time</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC19'><span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="n">h</span><span class="o">.</span><span class="n">to_yaml</span> <span class="p">}</span></div><div class='line' id='LC20'><span class="p">}</span></div><div class='line' id='LC21'><br/></div><div class='line' id='LC22'><span class="k">begin</span></div><div class='line' id='LC23'>&nbsp;&nbsp;<span class="no">YAML</span><span class="o">::</span><span class="no">ENGINE</span><span class="o">.</span><span class="n">yamler</span> <span class="o">=</span> <span class="s1">&#39;psych&#39;</span> <span class="k">if</span> <span class="no">RUBY_VERSION</span> <span class="o">==</span> <span class="s2">&quot;1.9.2&quot;</span></div><div class='line' id='LC24'><span class="k">rescue</span></div><div class='line' id='LC25'>&nbsp;&nbsp;<span class="nb">puts</span> <span class="s2">&quot;Cannot load Psych. Is libyaml installed? Install it and recompile Ruby.&quot;</span></div><div class='line' id='LC26'>&nbsp;&nbsp;<span class="nb">puts</span> <span class="s2">&quot;On OS X with RVM, install it with MacPorts and run:&quot;</span></div><div class='line' id='LC27'>&nbsp;&nbsp;<span class="nb">puts</span> <span class="s2">&quot;rvm install ruby-1.9.2 -C --with-libyaml-dir=/opt/local&quot;</span></div><div class='line' id='LC28'>&nbsp;&nbsp;<span class="nb">exit</span> <span class="mi">1</span></div><div class='line' id='LC29'><span class="k">end</span></div><div class='line' id='LC30'><br/></div><div class='line' id='LC31'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC32'><span class="n">psych_load_time</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC33'>&nbsp;&nbsp;<span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="no">YAML</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">yaml_str</span><span class="p">)</span> <span class="p">}</span></div><div class='line' id='LC34'><span class="p">}</span></div><div class='line' id='LC35'><br/></div><div class='line' id='LC36'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC37'><span class="n">to_yaml_psych_time</span>  <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC38'>&nbsp;&nbsp;<span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="n">h</span><span class="o">.</span><span class="n">to_yaml</span> <span class="p">}</span></div><div class='line' id='LC39'><span class="p">}</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC42'><span class="n">to_json_time</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC43'><span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="n">h</span><span class="o">.</span><span class="n">to_json</span> <span class="p">}</span></div><div class='line' id='LC44'><span class="p">}</span></div><div class='line' id='LC45'><br/></div><div class='line' id='LC46'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC47'><span class="n">zaml_dump_time</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC48'><span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="no">ZAML</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">h</span><span class="p">)</span> <span class="p">}</span></div><div class='line' id='LC49'><span class="p">}</span></div><div class='line' id='LC50'><br/></div><div class='line' id='LC51'><span class="n">marshaled</span> <span class="o">=</span> <span class="kp">nil</span></div><div class='line' id='LC52'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC53'><span class="n">marshal_dump_time</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC54'><span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="n">marshaled</span> <span class="o">=</span> <span class="no">Marshal</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">h</span><span class="p">)</span> <span class="p">}</span></div><div class='line' id='LC55'><span class="p">}</span></div><div class='line' id='LC56'><br/></div><div class='line' id='LC57'><span class="no">GC</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC58'><span class="n">marshall_load_time</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="o">::</span><span class="n">realtime</span> <span class="p">{</span></div><div class='line' id='LC59'><span class="mi">1000</span><span class="o">.</span><span class="n">times</span> <span class="p">{</span> <span class="n">h</span> <span class="o">=</span> <span class="no">Marshal</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">marshaled</span><span class="p">)</span> <span class="p">}</span></div><div class='line' id='LC60'><span class="p">}</span></div><div class='line' id='LC61'><br/></div><div class='line' id='LC62'><span class="nb">puts</span> <span class="sb">`ruby -v`</span></div><div class='line' id='LC63'><span class="nb">puts</span> <span class="s2">&quot;--------------------------------------------------------------------&quot;</span></div><div class='line' id='LC64'><span class="nb">puts</span> <span class="s2">&quot;YAML.load:</span><span class="se">\t\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">yaml_load_time</span><span class="si">}</span><span class="s2">&quot;</span></div><div class='line' id='LC65'><span class="nb">puts</span> <span class="s2">&quot;YAML.load (Psych):</span><span class="se">\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">psych_load_time</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="no">RUBY_VERSION</span> <span class="o">==</span> <span class="s2">&quot;1.9.2&quot;</span></div><div class='line' id='LC66'><span class="nb">puts</span> <span class="s2">&quot;Marshal.load:</span><span class="se">\t\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">marshall_load_time</span><span class="si">}</span><span class="s2">&quot;</span></div><div class='line' id='LC67'><span class="nb">puts</span> <span class="s2">&quot;to_yaml:</span><span class="se">\t\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">to_yaml_time</span><span class="si">}</span><span class="s2">&quot;</span></div><div class='line' id='LC68'><span class="nb">puts</span> <span class="s2">&quot;to_load (Psych):</span><span class="se">\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">to_yaml_psych_time</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="no">RUBY_VERSION</span> <span class="o">==</span> <span class="s2">&quot;1.9.2&quot;</span></div><div class='line' id='LC69'><span class="nb">puts</span> <span class="s2">&quot;ZAML.dump:</span><span class="se">\t\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">zaml_dump_time</span><span class="si">}</span><span class="s2">&quot;</span></div><div class='line' id='LC70'><span class="nb">puts</span> <span class="s2">&quot;to_json:</span><span class="se">\t\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">to_json_time</span><span class="si">}</span><span class="s2">&quot;</span></div><div class='line' id='LC71'><span class="nb">puts</span> <span class="s2">&quot;Marshal.dump:</span><span class="se">\t\t</span><span class="si">#{</span><span class="s1">&#39;%.4f&#39;</span> <span class="o">%</span> <span class="n">marshal_dump_time</span><span class="si">}</span><span class="s2">&quot;</span></div><div class='line' id='LC72'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/707372/400b94c19fdde194dd3a52e666a981be1a566dd1/yaml_benchmark.rb" style="float:right;">view raw</a>
            <a href="https://gist.github.com/707372#file_yaml_benchmark.rb" style="float:right;margin-right:10px;color:#666">yaml_benchmark.rb</a>
            <a href="https://gist.github.com/707372">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2010/11/19/yaml-zaml-marshal-json-benchmark-in-ruby/feed/</wfw:commentRss>
		<slash:comments>9</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>Announcing IsItJruby.com</title>
		<link>http://blog.carlmercier.com/2009/05/28/announcing-isitjrubycom/</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>
]]></content:encoded>
			<wfw:commentRss>http://blog.carlmercier.com/2009/05/28/announcing-isitjrubycom/feed/</wfw:commentRss>
		<slash:comments>2</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>
	</channel>
</rss>

