<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Mike Perham</title>
	
	<link>http://www.mikeperham.com</link>
	<description>On Ruby, software and the Internet</description>
	<lastBuildDate>Mon, 13 May 2013 18:00:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mikeperham" /><feedburner:info uri="mikeperham" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>The Sidekiq Pro Giveaway Winner!</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/jKfvI0RZcK8/</link>
		<comments>http://www.mikeperham.com/2013/05/11/the-sidekiq-pro-giveaway-winner/#comments</comments>
		<pubDate>Sat, 11 May 2013 21:36:36 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[sidekiq]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1335</guid>
		<description><![CDATA[I&#8217;m happy to announce the winner of my Sidekiq Pro 1.0 license giveaway is Libin Pan, whose company already uses Sidekiq pretty heavily, having run billions of jobs through Sidekiq in the last year. Let&#8217;s hear his story: I work for Demandbase, a B2B marketing company, we help our client to identify the companies who [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m happy to announce the winner of my <a href="http://sidekiq.org/pro">Sidekiq Pro</a> 1.0 license giveaway is Libin Pan, whose company already uses Sidekiq pretty heavily, having run  <strong>billions</strong> of jobs through Sidekiq in the last year. Let&#8217;s hear his story:<br />
<span id="more-1335"></span></p>
<blockquote><p>
I work for Demandbase, a B2B marketing company, we help our client to identify the companies who visited their online properties.</p>
<p>We were using resque before, because of the nature of forking, the memory and compute power is a big cost for us. So we switched to sidekiq soon after you released it. And we love it.</p>
<p><img src="http://www.mikeperham.com/wp-content/uploads/2013/05/BJzXcEFCcAE-8a2.jpg" alt="BJzXcEFCcAE-8a2" width="658" height="178" class="aligncenter size-full wp-image-1339" /></p>
<p>We&#8217;re using it in several projects, this screenshot is just one of them, a larger one of course. This sidekiq cluster handles the aggregation of realtime traffic for some clients. There&#8217;re two major sidekiq workers, one normalizes the traffic, another one updates all the aggregation counts. Every task is very small and fast, and sidekiq is a perfect tool for it.</p>
<p>There&#8217;re 4 sidekiq worker servers, and every one has 4 processes which every one has 25 workers. As we are all on EC2, we use spot instances for part of the cluster so we can add more workers as needed, so it could grow up from 400 to 800 or more.</p>
<p>The technology is nothing special but solid, Rails + Redis + Sharded MySQL.
</p></blockquote>
<p>Thanks Libin and everyone else who entered. I hope Sidekiq Pro makes your system even better!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/05/11/the-sidekiq-pro-giveaway-winner/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/05/11/the-sidekiq-pro-giveaway-winner/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-sidekiq-pro-giveaway-winner</feedburner:origLink></item>
		<item>
		<title>Sidekiq Pro reaches 1.0!</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/jWXOuu6uNVM/</link>
		<comments>http://www.mikeperham.com/2013/05/07/sidekiq-pro-reaches-1-0/#comments</comments>
		<pubDate>Tue, 07 May 2013 17:46:07 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[sidekiq]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1325</guid>
		<description><![CDATA[I announced Sidekiq Pro seven months ago and since then I&#8217;ve released 15 versions with both minor bugfixes and major new features. Today I decided to pull the trigger and call it 1.0! I&#8217;ve moved the Sidekiq Pro changelog to the sidekiq repo for better visibility for all Sidekiq users. Watsi, Litmus, Customer.io and Travis-CI [...]]]></description>
				<content:encoded><![CDATA[<p>I announced <a href="http://sidekiq.org/pro">Sidekiq Pro</a> seven months ago and since then I&#8217;ve released 15 versions with both minor bugfixes and major new features.</p>
<p>Today I decided to pull the trigger and call it 1.0!  I&#8217;ve moved the <a href="https://github.com/mperham/sidekiq/blob/master/Pro-Changes.md">Sidekiq Pro changelog</a> to the sidekiq repo for better visibility for all Sidekiq users.  <a href="https://watsi.org/">Watsi</a>, <a href="http://litmus.com/">Litmus</a>, <a href="http://customer.io/">Customer.io</a> and <a href="https://travis-ci.org/">Travis-CI</a> are just a few of the companies that have upgraded to Pro.</p>
<p><strong>To celebrate the 1.0 release, I&#8217;m giving away one free license to an existing Sidekiq user!</strong>  All you have to do is tweet an image of your current dashboard &#8220;Processed&#8221; count and say you want Sidekiq Pro.  Here&#8217;s The Clymb&#8217;s dashboard:</p>
<p><img src="http://www.mikeperham.com/wp-content/uploads/2013/05/Screen-Shot-2013-05-07-at-10.38.46-AM.png" alt="dashboard" width="201" height="106" class="aligncenter size-full wp-image-1328" /></p>
<p>Example: &#8220;.@AcmeCorp wants Sidekiq Pro! http://example.org/dashboard.png&#8221;</p>
<p>A few days from now, I&#8217;ll collect all the tweets and draw one at random from a hat.  Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/05/07/sidekiq-pro-reaches-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/05/07/sidekiq-pro-reaches-1-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sidekiq-pro-reaches-1-0</feedburner:origLink></item>
		<item>
		<title>Dealing with Stuck Workers</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/PFQIPfly0nE/</link>
		<comments>http://www.mikeperham.com/2013/05/03/dealing-with-stuck-workers/#comments</comments>
		<pubDate>Sat, 04 May 2013 00:19:19 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1301</guid>
		<description><![CDATA[Occasionally Sidekiq users report workers that are &#8220;stuck&#8221; processing jobs for a long time. Usually this means that there are entries in the Workers page in the Web UI that linger for a long time. This post explains what you can do as a Sidekiq user to track down what is happening. In the Web [...]]]></description>
				<content:encoded><![CDATA[<p>Occasionally Sidekiq users report workers that are &#8220;stuck&#8221; processing jobs for a long time.  Usually this means that there are entries in the Workers page in the Web UI that linger for a long time.  This post explains what you can do as a Sidekiq user to track down what is happening.</p>
<p><span id="more-1301"></span></p>
<p><img src="http://www.mikeperham.com/wp-content/uploads/2013/05/Screen_Shot_2013-05-03_at_4.52.02_PM.png" alt="Screen_Shot_2013-05-03_at_4.52.02_PM" width="998" height="245" class="aligncenter size-full wp-image-1302" /></p>
<p>In the Web UI, the Workers page shows you a listing of all worker status entries in Redis.  When a Worker starts processing a job, it adds a status entry to Redis.  When the job is complete, the worker removes its entry from Redis.  If you see one or more entries linger for much longer, this is a symptom of a bigger problem:</p>
<ol>
<li>The worker thread has locked up or is blocked by some other issue</li>
<li>The Sidekiq process crashed</li>
</ol>
<p>Log into the host noted in the list and look for the process with the PID.  If the PID exists, the job is probably locked up somehow.  Send the TTIN signal to Sidekiq to print a thread dump which should give you an idea where the job is stuck.  Modify your code as necessary to fix the issue.</p>
<p>If the PID is gone, the process crashed, the worker dies and the status entry is orphaned in Redis.  A Ruby process can crash due to bugs in either the Ruby VM itself or in a native extension your application is using.</p>
<p>Process crashes can be a serious problem: any jobs executing during the crash are lost.  Unless the jobs are optional, you probably want to stop the job loss ASAP and here you have two solutions: spend time or money to stop the loss.  If you have time you can find a core dump, use gdb to get a backtrace and start investigating the code at fault.  Debugging a crashed process is a highly technical subject and not something that I can really cover adequately in a blog post.</p>
<p>Alternatively, you can buy <a href="http://sidekiq.org/pro">Sidekiq Pro</a> and use its reliable queueing feature.  I spoke with a Sidekiq user at Railsconf whose processes were crashing and losing jobs.  They jumped at the chance: rather than spending days tracking down the bug, they could live with a crash once or twice a day since Upstart would just restart the process and immediately resume the job.  It&#8217;s not the ideal solution but it stopped the loss of jobs and put out the immediate fire: now they could debug the issue at their leisure rather than needing to fix it ASAP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/05/03/dealing-with-stuck-workers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/05/03/dealing-with-stuck-workers/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dealing-with-stuck-workers</feedburner:origLink></item>
		<item>
		<title>Board Games and Beverages at Railsconf 2013</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/yj9ZeU_IghU/</link>
		<comments>http://www.mikeperham.com/2013/04/17/board-games-and-beverages-at-railsconf-2013/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 14:35:56 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1278</guid>
		<description><![CDATA[You are invited to a whimsical evening of merriment and gamesmanship! What: Board Games and Beverages Where: Skyroom Lounge, top of Red Lion Hotel, across the street from Railsconf When: Tuesday, 4/30 7-11pm The Skyroom has a great view of Portland so try to get there before sundown. We should have enough games for everyone [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.wired.com/geekdad/wp-content/uploads/2009/12/carcassonne-board.jpg" width="600" height="401" alt="Carcassonne" class="aligncenter" /></p>
<p>You are invited to a whimsical evening of merriment and gamesmanship!</p>
<p>What: Board Games and Beverages<br />
Where: <a href="http://www.yelp.com/biz/windows-skyroom-and-lounge-portland">Skyroom Lounge</a>, top of Red Lion Hotel, across the street from Railsconf<br />
When: Tuesday, 4/30 7-11pm</p>
<p>The Skyroom has a great view of Portland so try to get there before sundown.  We should have enough games for everyone but bring your favorite if you&#8217;d like.  They have food if you need a late dinner.  They have room for 250 so I&#8217;m hoping we&#8217;ll have plenty of room for everyone.</p>
<p>If you&#8217;re in, please comment to RSVP!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/04/17/board-games-and-beverages-at-railsconf-2013/feed/</wfw:commentRss>
		<slash:comments>78</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/04/17/board-games-and-beverages-at-railsconf-2013/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=board-games-and-beverages-at-railsconf-2013</feedburner:origLink></item>
		<item>
		<title>Railsconf 2013 events</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/yL-BVNTg9vo/</link>
		<comments>http://www.mikeperham.com/2013/04/11/railsconf-2013-events/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 15:14:10 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1270</guid>
		<description><![CDATA[Want to know what&#8217;s going on during Railsconf 2013 outside of the conference center? Here&#8217;s a list of all events open to the public, this page will be updated as I learn of more events. Email mperham at gmail with event details. Sunday 4/28 KidsCodeCamp, 10am-4pm, Multnomah Arts Center PlanetArgon.com Gorge Hike, 12:30-6:30pm, meet at [...]]]></description>
				<content:encoded><![CDATA[<p>Want to know what&#8217;s going on during Railsconf 2013 outside of the conference center?  Here&#8217;s a list of all events open to the public, this page will be updated as I learn of more events.  Email mperham at gmail with event details.</p>
<p><strong>Sunday 4/28</strong></p>
<p><a href="http://portlandkidscodecamp.eventbrite.com/">KidsCodeCamp</a>, 10am-4pm, Multnomah Arts Center<br />
<a href="http://www.eventbrite.com/event/5636226104">PlanetArgon.com Gorge Hike</a>, 12:30-6:30pm, meet at Convention Center</p>
<p><strong>Monday 4/29</strong></p>
<p><a href="http://techwomennightportland.eventbrite.com/">Tech Women&#8217;s Communities Social</a>, 7-9pm, NewRelic HQ<br />
<a href="http://codefellowshappyhourpdx.eventbrite.com/">Code Fellows Happy Hour</a>, 7:30-9:30pm, Rontoms<br />
<a href="http://www.eventbrite.com/event/6375243525">ZenCoder and SendGrid Party</a>, 7:30-9:30pm, Ground Kontrol<br />
<a href="https://pivotalrailsconf2013.eventbrite.com/">Pivotal Labs Mixer</a>, 9-11pm, Spirit of &#8217;77</p>
<p><strong>Tuesday 4/30</strong></p>
<p><a href="http://runnerwhocodes.blogspot.com/2013/04/railsconf-2013-some-running.html">RailsConf Run 1</a>, 7am, Steel Bridge<br />
<a href="http://www.mikeperham.com/2013/04/17/board-games-and-beverages-at-railsconf-2013/">Board Games and Beverages</a>, 7-11pm, Skyroom Lounge<br />
<a href="http://anightintherubyskypdx.eventbrite.com/">A Night in the Ruby Sky</a>, 7:30-10:30pm, NewRelic HQ</p>
<p><strong>Wednesday 5/1</strong></p>
<p><a href="http://www.recursion.org/railsconf-ride/">Railsconf Bike Ride</a>, 6:45pm<br />
<a href=" https://codeclimaterailsconf2013.eventbrite.com/">CodeClimate Drinkup</a>, 6pm, Green Dragon<br />
<a href="http://www.kickstarter.com/backing-and-hacking/kickstarter-engineering-meetup-at-railsconf-2013">Kickstarter Meetup</a>, 7pm, Dig a Pony<br />
<a href="http://railsconf13party.eventbrite.com/">EngineYard / Elemental After Party</a>, 7:30-10pm, Elemental Office<br />
<a href="http://railsconf-lumosity.eventbrite.com/"> Lumosity Party</a>  (pw: lumos), 8:30-11:30pm, Spirit of &#8217;77</p>
<p><strong>Thursday 5/2</strong></p>
<p><a href="http://runnerwhocodes.blogspot.com/2013/04/railsconf-2013-some-running.html">RailsConf Run 2</a>, 7am, MAX Zoo Station</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/04/11/railsconf-2013-events/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/04/11/railsconf-2013-events/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=railsconf-2013-events</feedburner:origLink></item>
		<item>
		<title>Signal Handling with Ruby 2.0</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/aWqEM8FtpRw/</link>
		<comments>http://www.mikeperham.com/2013/02/23/signal-handling-with-ruby/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 16:47:11 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1165</guid>
		<description><![CDATA[A user recently ran Sidekiq with Ruby 2.0 and found that the signal handling did not work well at all. Ctrl-C and other signals resulted in some ominous stack traces. It turns out that Ruby 2.0 locks down what you can do in a signal handler in order to prevent unsafe or possibly non-deterministic behavior. [...]]]></description>
				<content:encoded><![CDATA[<p>A user recently ran Sidekiq with Ruby 2.0 and found that the signal handling did not work well at all. Ctrl-C and other signals resulted in some ominous stack traces.</p>
<p>It turns out that Ruby 2.0 locks down what you can do in a signal handler in order to prevent unsafe or possibly non-deterministic behavior. You can&#8217;t take a Mutex within a signal handler anymore as this could result in a thread context switch or even deadlock. In fact <a href="https://bugs.ruby-lang.org/issues/7917">you can&#8217;t even write to a Logger</a> because it tries to use a Mutex internally.</p>
<p>I <a href="https://github.com/mperham/sidekiq/commit/fb2c286506107dc0d5d3f297c19df8170b32ef54#L1R3">rewrote the signal handling</a> to conform with the new restrictions: all handlers now just push the name of the signal onto a global array and the main thread polls once per second for unhandled signals.  This isn&#8217;t perfect, polling is something to be avoided where possible, but I don&#8217;t know of a better solution and it&#8217;s a lot better than the previous &#8220;fat&#8221; handlers that did a lot of work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/02/23/signal-handling-with-ruby/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/02/23/signal-handling-with-ruby/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=signal-handling-with-ruby</feedburner:origLink></item>
		<item>
		<title>Bill Gates</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/m7OnHY98urM/</link>
		<comments>http://www.mikeperham.com/2013/02/13/bill-gates/#comments</comments>
		<pubDate>Wed, 13 Feb 2013 16:58:27 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1162</guid>
		<description><![CDATA[Some back of the envelope numbers I was pondering this morning: 40 hours / week * 50 weeks / year = 2000 hr / yr Bill Gates is worth about $66 billion. He&#8217;s worked for about 33 years now. 66 billion / 33 years = $2 billion/year / 2000 = $1 million / hour. Bill [...]]]></description>
				<content:encoded><![CDATA[<p>Some back of the envelope numbers I was pondering this morning:</p>
<p>40 hours / week * 50 weeks / year = 2000 hr / yr</p>
<p>Bill Gates is worth about $66 billion.  He&#8217;s worked for about 33 years now.</p>
<p>66 billion / 33 years = $2 billion/year / 2000 = $1 million / hour.</p>
<p>Bill Gates has made roughly $1 million per hour over the length of his career.  Most people would be happy to make that amount in a decade.  No moral or judgment here, just an astonishing number to think about.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/02/13/bill-gates/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/02/13/bill-gates/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=bill-gates</feedburner:origLink></item>
		<item>
		<title>Happy Birthday Sidekiq!</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/nwvpqnlnq5A/</link>
		<comments>http://www.mikeperham.com/2013/02/05/happy-birthday-sidekiq/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 16:34:59 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1104</guid>
		<description><![CDATA[This day last year I released Sidekiq 0.5.0 to the public. I left Carbon Five in mid-January and was moving to Portland to join The Clymb with wife and child in tow. For the previous few months, I&#8217;d been thinking about background processing and felt there was opportunity for a library that was more efficient [...]]]></description>
				<content:encoded><![CDATA[<p>This day last year I released Sidekiq 0.5.0 to the public.  I left Carbon Five in mid-January and was moving to Portland to join <a href="http://www.theclymb.com/invite-from/mperham">The Clymb</a> with wife and child in tow.  For the previous few months, I&#8217;d been thinking about background processing and felt there was opportunity for a library that was more efficient and also provided more functionality.  I spent my two weeks of downtime building what became Sidekiq.<br />
<span id="more-1104"></span><br />
In one year, some numbers:</p>
<ul>
<li>214,300 downloads</li>
<li>2,144 watchers</li>
<li>662 closed issues</li>
<li>266 forks</li>
<li>228 closed pull requests</li>
<li>44 versions released</li>
<li>1 <a href="http://www.mikeperham.com/2013/01/30/2012-oss-rookie-project-of-the-year/">Major Award™</a></li>
</ul>
<p><a href="http://sidekiq.org/pro">Sidekiq Pro</a> has been available for four months now and sales have ramped up as Sidekiq gained traction, exactly like I had hoped.  January was my biggest sales month so far.  Thank you to my Pro customers!</p>
<p>My goal for the first year was to become one of the big three: I wanted people to see Sidekiq as a peer to Resque and Delayed Job.  I think that&#8217;s true now and believe Sidekiq has matched Delayed Job in terms of project velocity.  <strong>For the next year, my goal is to overtake Resque and make Sidekiq the #1 background job library for Ruby.</strong>  There will always be a place for other libraries for various reasons (e.g. redis not available) but I believe Sidekiq&#8217;s great performance and wide range of functionality can&#8217;t be beat by any competing library today.</p>
<p>It&#8217;s been fantastic working with new contributors, noticing more and more people recommend Sidekiq to their friends and seeing my vision of simple, efficient background processing becoming reality.  I promise to continue support for Sidekiq and hope this year goes just as well as the first!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/02/05/happy-birthday-sidekiq/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/02/05/happy-birthday-sidekiq/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=happy-birthday-sidekiq</feedburner:origLink></item>
		<item>
		<title>One Great Year at The Clymb</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/9Ytf9MWaY_w/</link>
		<comments>http://www.mikeperham.com/2013/01/31/one-great-year-at-the-clymb/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 17:16:02 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1109</guid>
		<description><![CDATA[I joined The Clymb one year ago today and what an amazing year it&#8217;s been. Some context for you: I was employee 33 and the third engineer to join. The test suite had hundreds of failures and had been running red for months. We were on REE, Rails 2.3 and Delayed Job &#8211; a stack [...]]]></description>
				<content:encoded><![CDATA[<p>I joined <a href="http://www.theclymb.com/invite-from/mperham">The Clymb</a> one year ago today and what an amazing year it&#8217;s been.</p>
<p>Some context for you: I was employee 33 and the third engineer to join.  The test suite had hundreds of failures and had been running red for months.  We were on REE, Rails 2.3 and Delayed Job &#8211; a stack that was current two years before &#8211; and had no error service to know what errors were happening in production.  The site was deployed with fabric, a Python-based tool.  The first two developers were overworked and fought fires all day, every day.<br />
<span id="more-1109"></span><br />
My first task was to upgrade our entire site infrastructure to state of the art but I also did my best to bring some sanity to our process.  My first two weeks were spent just getting the test suite running green so I could start the upgrade process with some way to verify correctness.  The entire upgrade process took me six weeks.  Today we&#8217;re on Rails 3.2, Ruby 1.9.3 and Sidekiq Pro with help from Travis-CI Pro, Honeybadger, Librato Metrics, Papertrail and capistrano.  We took to using GitHub pull requests like a fish takes to water &#8211; the peer code review has made a marked improvement in code quality.  It took about 3 months but we slowly fought fires less and less every day.</p>
<p>Over the last year we&#8217;ve added major new functionality, including:</p>
<ul>
<li>Complete UI overhaul for a great experience on phones and tablets</li>
<li>Clymb 365 stores with popular products all year around</li>
<li>Overhauled shopping cart and checkout process</li>
<li>Adventures and other &#8220;non-traditional&#8221; product types</li>
<li>Multiple images per product</li>
<li>Waitlist for sold out products</li>
<li>Overnight, 2 and 3 day shipping options</li>
<li>And huge improvements to our inventory, returns and administration backends</li>
</ul>
<p>We&#8217;ve grown to 90 employees with 8 full time engineers and 2 more part time contractors.  We now have dedicated teams for site infrastructure (aka devops), product development and business intelligence (aka analytics).  If you&#8217;re in Portland*, interested in one of those areas and in joining a rapidly growing company, contact me (mike @ theclymb.com).  I&#8217;m really excited for what the next year will hold.</p>
<p>* Unfortunately we can&#8217;t hire remote employees because it legally requires us to charge sales tax in those states.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/01/31/one-great-year-at-the-clymb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/01/31/one-great-year-at-the-clymb/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=one-great-year-at-the-clymb</feedburner:origLink></item>
		<item>
		<title>2012 OSS Rookie Project of the Year!</title>
		<link>http://feedproxy.google.com/~r/mikeperham/~3/JUwsyl8L1mM/</link>
		<comments>http://www.mikeperham.com/2013/01/30/2012-oss-rookie-project-of-the-year/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 15:31:56 +0000</pubDate>
		<dc:creator>Mike Perham</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.mikeperham.com/?p=1127</guid>
		<description><![CDATA[Each year, Black Duck Software picks their top 10 new open source projects created that year. For 2012, Sidekiq has been selected one of those 10 OSS rookie projects! How cool is that? The ranking is based on activity, contributors, pull requests and other factors so I literally could not have done this without those [...]]]></description>
				<content:encoded><![CDATA[<p>Each year, Black Duck Software picks their top 10 new open source projects created that year.  For 2012, <a href="http://sidekiq.org">Sidekiq</a> has been selected one of those <a href="http://www.blackducksoftware.com/rookies/">10 OSS rookie projects</a>!  How cool is that?<br />
<span id="more-1127"></span><br />
<img src="http://www.blackducksoftware.com/files/images/Rookie_Award_2012.png" width="246" height="260" alt="2012 logo" class="aligncenter" /></p>
<p>The ranking is based on activity, contributors, pull requests and other factors so I literally could not have done this without those who used Sidekiq, sent PRs and entered issues.  Thank you to Black Duck and all my users for using and believing in Sidekiq; I hope to make 2013 just as amazing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikeperham.com/2013/01/30/2012-oss-rookie-project-of-the-year/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.mikeperham.com/2013/01/30/2012-oss-rookie-project-of-the-year/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=2012-oss-rookie-project-of-the-year</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.328 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-05-17 10:07:09 -->
