<?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>Wildbit &#187; Beanstalk</title>
	<atom:link href="http://wildbit.com/blog/category/beanstalk/feed/" rel="self" type="application/rss+xml" />
	<link>http://wildbit.com/blog</link>
	<description>Thoughts on building web apps, businesses, and virtual teams</description>
	<lastBuildDate>Mon, 30 Jan 2012 13:55:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Designing a status page for Beanstalk</title>
		<link>http://wildbit.com/blog/2011/09/06/designing-a-status-page-for-beanstalk/</link>
		<comments>http://wildbit.com/blog/2011/09/06/designing-a-status-page-for-beanstalk/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 16:06:11 +0000</pubDate>
		<dc:creator>Eugene Fedorenko</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[Business Strategy]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1405</guid>
		<description><![CDATA[Since the early days of <a href="http://beanstalkapp.com/">Beanstalk</a> we have been using our <a href="http://twitter.com/beanstalkapp">Twitter account</a> for status updates and maintenance notices, but it became obvious that a separate status page was needed for better communication. Twitter is a great way to learn about problems or maintenance, but only for people who check it all the time. People who are not on Twitter or don’t follow us have to check our Twitter stream which can be cluttered with replies or retweets and not clearly display the current status of our services.]]></description>
			<content:encoded><![CDATA[<p>Since the early days of <a href="http://beanstalkapp.com/">Beanstalk</a> we have been using our <a href="http://twitter.com/beanstalkapp">Twitter account</a> for status updates and maintenance notices, but it became obvious that a separate status page was needed for better communication. Twitter is a great way to learn about problems or maintenance, but only for people who check it all the time. People who are not on Twitter or don’t follow us have to check our Twitter stream which can be cluttered with replies or retweets and not clearly display the current status of our services.</p>
<p><span id="more-1405"></span></p>
<h3>Design</h3>
<p>With this problem in mind I designed a <a href="http://status.beanstalkapp.com/">status page</a> to help people understand what’s going on with Beanstalk at any time:</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2011/09/status-ok.jpg" alt="All services are operating normally" width="572" height="470" /></p>
<p>My goal was to make it really simple to get rid of any distraction. We use special headers for moments when we have issues or have a maintenance in progress:</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2011/09/status-issue.jpg" alt="We’re currently experiencing service interruptions" width="572" height="82" /></p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2011/09/status-maintenance.jpg" alt="A scheduled maintenance is in progress" width="572" height="82" /></p>
<h3>Days without incidents</h3>
<p>We thought that it would be interesting to count the days since the last incident, so this number is always there right below “All services are operating normally” message. We are really motivated to keep this number as high as we can!</p>
<p>It&#8217;s simple jQuery which calculates the days since the last update and replaces the default message:</p>
<p><!--</p>
<pre><code><span style="color: #999">// To keep code clean and semantic I store time in datetime attrribute of HTML5's time element</span>
var lastUpdate = $('#updates article:first time').attr('datetime');

<span style="color: #999">// By default this paragraph has universal message for those with disabled JS</span>
$('header section.status-ok p').text(distanceOfTimeInWords());

function distanceOfTimeInWords(){
	var now      = new Date;
	var fromDate = new Date;
	var from     = fromDate.setTime(Date.parse(lastUpdate));

	<span style="color: #999">// Convert milliseconds to days and round to the whole number</span>
	var days     = Math.round(((now - from) / 1000) / 60 / 60 / 24);

	if (days < = 1) return 'Issues were reported in the last 24 hours. Read below for details.';
	else return 'It’s been ' + days + ' days without any incidents.';
}</code>
-->
<pre><code><span style='color:#595979; '>// To keep code clean and semantic I store time in datetime attrribute of HTML5's time element</span>
<span style='color:#200080; font-weight:bold; '>var</span> lastUpdate <span style='color:#308080; '>=</span> $<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'#updates article:first time'</span><span style='color:#308080; '>)</span><span style='color:#308080; '>.</span>attr<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'datetime'</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>

<span style='color:#595979; '>// By default this paragraph has universal message for those with disabled JS</span>
$<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'header section.status-ok p'</span><span style='color:#308080; '>)</span><span style='color:#308080; '>.</span>text<span style='color:#308080; '>(</span>distanceOfTimeInWords<span style='color:#308080; '>(</span><span style='color:#308080; '>)</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>

<span style='color:#200080; font-weight:bold; '>function</span> distanceOfTimeInWords<span style='color:#308080; '>(</span><span style='color:#308080; '>)</span><span style='color:#406080; '>{</span>
    <span style='color:#200080; font-weight:bold; '>var</span> now      <span style='color:#308080; '>=</span> <span style='color:#200080; font-weight:bold; '>new</span> <span style='color:#007d45; '>Date</span><span style='color:#406080; '>;</span>
    <span style='color:#200080; font-weight:bold; '>var</span> fromDate <span style='color:#308080; '>=</span> <span style='color:#200080; font-weight:bold; '>new</span> <span style='color:#007d45; '>Date</span><span style='color:#406080; '>;</span>
    <span style='color:#200080; font-weight:bold; '>var</span> from     <span style='color:#308080; '>=</span> fromDate<span style='color:#308080; '>.</span><span style='color:#200080; font-weight:bold; '>setTime</span><span style='color:#308080; '>(</span><span style='color:#007d45; '>Date</span><span style='color:#308080; '>.</span><span style='color:#200080; font-weight:bold; '>parse</span><span style='color:#308080; '>(</span>lastUpdate<span style='color:#308080; '>)</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>

    <span style='color:#595979; '>// Convert milliseconds to days and round to the whole number</span>
    <span style='color:#200080; font-weight:bold; '>var</span> days     <span style='color:#308080; '>=</span> <span style='color:#007d45; '>Math</span><span style='color:#308080; '>.</span><span style='color:#200080; font-weight:bold; '>round</span><span style='color:#308080; '>(</span><span style='color:#308080; '>(</span><span style='color:#308080; '>(</span>now <span style='color:#308080; '>-</span> from<span style='color:#308080; '>)</span> <span style='color:#800000; '>/</span><span style='color:#1060b6; '> 1000) </span><span style='color:#800000; '>/</span> <span style='color:#008c00; '>60</span> <span style='color:#800000; '>/</span><span style='color:#1060b6; '> 60 </span><span style='color:#800000; '>/</span> <span style='color:#008c00; '>24</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>

    <span style='color:#200080; font-weight:bold; '>if</span> <span style='color:#308080; '>(</span>days <span style='color:#308080; '>&lt;</span> <span style='color:#308080; '>=</span> <span style='color:#008c00; '>1</span><span style='color:#308080; '>)</span> <span style='color:#200080; font-weight:bold; '>return</span> <span style='color:#1060b6; '>'Issues were reported in the last 24 hours. Read below for details.'</span><span style='color:#406080; '>;</span>
    <span style='color:#200080; font-weight:bold; '>else</span> <span style='color:#200080; font-weight:bold; '>return</span> <span style='color:#1060b6; '>'It’s been '</span> <span style='color:#308080; '>+</span> days <span style='color:#308080; '>+</span> <span style='color:#1060b6; '>' days without any incidents.'</span><span style='color:#406080; '>;</span>
<span style='color:#406080;'>}</span>
</code></pre>
<h3>Platform choice</h3>
<p>We had internal debates on how to build this page&nbsp;— plain HTML is easy to build but hard to update and maintain, while simple Rails app hosted on Heroku takes some time to build, maintain and extend with extra features. <a href="http://www.tumblr.com/">Tumblr</a> become a winner for a variety of reasons:</p>
<ul>
<li>It took only half an hour to create a new blog, convert HTML mockup to template and add a custom domain name.</li>
<li>Everyone on our team already has Tumblr accounts, so we all can post updates.</li>
<li>We can quickly post updates and even change headers with just an email.</li>
<li>It already has an RSS feed.</li>
<li>It doesn't share our servers and environment.</li>
</ul>
<p>We use <a href="http://feedburner.google.com/">FeedBurner</a> for all our RSS feeds and it has a nifty feature which lets our users subscribe to updates by email. This way subscribers can be notified of maintenance work or issues on our end within minutes.</p>
<h3>Switching headers</h3>
<p>Of course Tumblr wasn't intended for this use, so I had to come up with some workaround to show appropriate headers. Thankfully Tumblr has tags, which can be used even when posting by email. We agreed to use three tags - 'ok', 'problem' and 'maintenance'. The appropriate header is displayed with simple JS based on tag of the last post, while tags itself are hidden.</p>
<p><!--<br />
var state = $('#updates article:first .status');<br />
var latestState = (state.length > 0) ? $(state).html().toLowerCase() : 'ok';</p>
<p>$('header section').hide();</p>
<p>if (latestState == 'problem') $('header section.status-problem').show();<br />
else if (latestState == 'maintenance') $('header section.status-maintenance').show();<br />
else $('header section.status-ok').show();<br />
--></p>
<pre><code><span style='color:#200080; font-weight:bold; '>var</span> state <span style='color:#308080; '>=</span> $<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'#updates article:first .status'</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>
<span style='color:#200080; font-weight:bold; '>var</span> latestState <span style='color:#308080; '>=</span> <span style='color:#308080; '>(</span>state<span style='color:#308080; '>.</span>length <span style='color:#308080; '>></span> <span style='color:#008c00; '>0</span><span style='color:#308080; '>)</span> <span style='color:#406080; '>?</span> $<span style='color:#308080; '>(</span>state<span style='color:#308080; '>)</span><span style='color:#308080; '>.</span>html<span style='color:#308080; '>(</span><span style='color:#308080; '>)</span><span style='color:#308080; '>.</span><span style='color:#200080; font-weight:bold; '>toLowerCase</span><span style='color:#308080; '>(</span><span style='color:#308080; '>)</span> <span style='color:#406080; '>:</span> <span style='color:#1060b6; '>'ok'</span><span style='color:#406080; '>;</span>

$<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'header section'</span><span style='color:#308080; '>)</span><span style='color:#308080; '>.</span>hide<span style='color:#308080; '>(</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>

<span style='color:#200080; font-weight:bold; '>if</span> <span style='color:#308080; '>(</span>latestState <span style='color:#308080; '>==</span> <span style='color:#1060b6; '>'problem'</span><span style='color:#308080; '>)</span> $<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'header section.status-problem'</span><span style='color:#308080; '>)</span><span style='color:#308080; '>.</span>show<span style='color:#308080; '>(</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>
<span style='color:#200080; font-weight:bold; '>else</span> <span style='color:#200080; font-weight:bold; '>if</span> <span style='color:#308080; '>(</span>latestState <span style='color:#308080; '>==</span> <span style='color:#1060b6; '>'maintenance'</span><span style='color:#308080; '>)</span> $<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'header section.status-maintenance'</span><span style='color:#308080; '>)</span><span style='color:#308080; '>.</span>show<span style='color:#308080; '>(</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>
<span style='color:#200080; font-weight:bold; '>else</span> $<span style='color:#308080; '>(</span><span style='color:#1060b6; '>'header section.status-ok'</span><span style='color:#308080; '>)</span><span style='color:#308080; '>.</span>show<span style='color:#308080; '>(</span><span style='color:#308080; '>)</span><span style='color:#406080; '>;</span>
</code></pre>
<p>The status page is linked from many places on our landing site and within the application. Make sure to <a href="http://feeds.feedburner.com/beanstalkstatus">subscribe to RSS</a> or <a href="http://feedburner.google.com/fb/a/mailverify?uri=beanstalkstatus">email notifications</a> or <a href="http://twitter.com/beanstalkapp">follow us on Twitter</a> to get latest system updates in time.</code></p>
<h3>Great Communication Earns Trust</h3>
<p>One of the most common pieces of positive feedback we get from Beanstalk customers is how responsive we are to support and communication &#8211; but that doesn&#8217;t mean we can&#8217;t always be looking for ways to improve! We know that being clear communicators, not just when things are going wrong, helps people trust us and love our products even more. </p>
<p>This simple status page will help us build and keep the trust of our customers, hopefully you can use some of these techniques to do the same thing for your product status pages!</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2011/09/06/designing-a-status-page-for-beanstalk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to get better email content previews in Gmail</title>
		<link>http://wildbit.com/blog/2011/08/16/how-to-get-better-email-content-previews-in-gmail/</link>
		<comments>http://wildbit.com/blog/2011/08/16/how-to-get-better-email-content-previews-in-gmail/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 15:53:49 +0000</pubDate>
		<dc:creator>Alex Hillman</dc:creator>
				<category><![CDATA[Articles & Reports]]></category>
		<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[Tips & Tools]]></category>
		<category><![CDATA[Usability & Design]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1373</guid>
		<description><![CDATA[Does this look familiar?

You might not have even noticed, but Gmail previews the first few lines of text in an email right after the subject. Normally, this is great, helping you peek inside an email to determine if you want to read the rest. But we realized that for our newsletters, the preview piece was [...]]]></description>
			<content:encoded><![CDATA[<p>Does this look familiar?</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2011/08/preview-before.png" alt="Gmail preview" width="572" height="18" /></p>
<p>You might not have even noticed, but Gmail previews the first few lines of text in an email right after the subject. Normally, this is great, helping you peek inside an email to determine if you want to read the rest. But we realized that for our newsletters, the preview piece was always the same: &#8220;Follow us on Twitter. Read our Blog. View this Newsletter Online&#8221;. Not very helpful, is it? Wouldn&#8217;t it be great if those first few lines were more descriptive, or at least more enticing to the reader?</p>
<p>I poked Eugene about this problem, since <a href="http://wildbit.com/blog/2011/06/30/design-for-the-largest-mobile-audience-email-clients/">he&#8217;d recently done a bunch of work to optimize our email templates</a> for Beanstalk. He hadn&#8217;t heard of a good solution, so he set out to experiment and create his own.</p>
<p>The challenge was to create some text at the beginning of the email that would be shown as the preview, but not appear in the body of the email itself. It turns out, like many HTML email tricks, an old-school method ended up working best.</p>
<h3>Remember spacer gifs?</h3>
<p>Back in the days before beautiful CSS-powered layouts, we used tables. Sometimes a table cell needed to be propped open, and a common technique was to take a 1px by 1px transparent gif image file and set its height or width dimensions to stretch it as a &#8220;shim&#8221; to hold a table cell to a certain size. </p>
<p>Since HTML emails use tables for layout, Eugene was inspired to go back to some old tricks.</p>
<p><code>&lt;img alt="Free tutorials, tips and best practices to help you make the most of your design and development workflow." src="spacer.gif" width="1" height="1" border="0"&gt;</code></p>
<p>By putting the text we want to show up in the Gmail preview in the alt tag of a 1px by 1px spacer gif, we were able to accomplish the desired effect without changing the visible content of the email. Success! Nice work Eugene!</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2011/08/preview-after.png" alt="Better Gmail preview" width="572" height="18" /></p>
<h3>What to put in your optimized email preview text?</h3>
<p>The key to these previews being useful is to find information that supplements the subject line of an email.</p>
<p>For our newsletter announcing <a href="http://guides.beanstalkapp.com">Beanstalk Guides</a>, we made the preview more focused on the kind of person who might want to look at guides &#8211; in our case, people who wanted to make the most of their design and development workflows.</p>
<p>For your newsletter, you will want to write a preview that speaks to your ideal recipient. Let the subject focus on the specifics of a deal or offer &#8211; the preview should be a little more personal feeling!</p>
<p><strong>Update:</strong> Looks like <a href="http://www.campaignmonitor.com/blog/post/1842/optimizing-for-gmails-snippets/">Campaign Monitor wrote about this technique</a>&#8230;in 2006! We&#8217;re glad to see that we&#8217;re not the only ones who&#8217;ve found this solution, but we&#8217;re also sure that we&#8217;re not the only people who hadn&#8217;t seen Campaign monitor&#8217;s post, either. So we&#8217;re happy to give this topic a much needed &#8220;bump&#8221; and encourage people to improve their emails!</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2011/08/16/how-to-get-better-email-content-previews-in-gmail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Responsive design for email &#8211; the largest mobile audience</title>
		<link>http://wildbit.com/blog/2011/06/30/design-for-the-largest-mobile-audience-email-clients/</link>
		<comments>http://wildbit.com/blog/2011/06/30/design-for-the-largest-mobile-audience-email-clients/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 18:18:47 +0000</pubDate>
		<dc:creator>Eugene Fedorenko</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Usability & Design]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1341</guid>
		<description><![CDATA[A month ago, Wildbit released a mobile-optimized view of Beanstalk which is very handy for code-collaboration on the go. While researching for this project, I was surprised to find that mobile usage is slowly passing usage of IE 6-8 at Beanstalk. It&#8217;s like a dream come true!
Mobile isn&#8217;t just in the browser
David Greiner from Campaign [...]]]></description>
			<content:encoded><![CDATA[<p>A month ago, Wildbit released a <a href="http://blog.beanstalkapp.com/post/6037162097/beanstalk-is-better-on-the-go-new-mobile-web-views">mobile-optimized view of Beanstalk</a> which is very handy for code-collaboration on the go. While researching for this project, I was surprised to find that mobile usage is slowly passing usage of IE 6-8 at Beanstalk. It&#8217;s like a dream come true!</p>
<h3>Mobile isn&#8217;t just in the browser</h3>
<p>David Greiner from Campaign Monitor recently posted <a href="http://www.campaignmonitor.com/blog/post/3495/the-rise-of-mobile-email/">results from their report</a> and it’s fascinating to see that mobile email clients grown from 4% to <strong>almost 20% of the market</strong> in just 2 years! From their historical chart, it seems fairly certain that mobile email usage will overgrow desktop email usage in a year or two. Thinking about my own iPhone usage supports these statistics&nbsp;— I check emails, feeds and tweets all the time, but go into Mobile Safari only when I have a good reason.</p>
<p>With this in mind, I began to think about Beanstalk&#8217;s emails&nbsp;— newsletters, digests and commit notifications. We&#8217;ve made them quite nice in desktop and web clients, but what about mobile clients? Can we keep them nice and readable here? Turns out we can! Mobile Mail on iPhone supports media queries, which makes possible to use the same <a href="http://www.alistapart.com/articles/responsive-web-design/">responsive web design technique</a> we applied to the rest of Beanstalk. How cool is that?</p>
<p>I&#8217;d like to show you how we applied screen-size specific media queries to target styles, and what design decisions were made to make the mobile email experience much better</p>
<h3>Digests</h3>
<p>I started with our <a href="http://blog.beanstalkapp.com/post/5046075484/daily-digest-emails">Daily Digest emails</a>, which provide an overview of the previous 24 hours activity for a given Beanstalk repository.</p>
<p><strong>First was to add a media query for the iPhone&#8217;s small screen:</strong></p>
<p><code>@media only screen and (max-device-width: 480px) { ... }</code></p>
<p>After improving font sizes and margins it was clear that mobile version was too cramped, so I decided to hide the commit time. It’s usually more important to see what’s changing than when exactly something was committed, and the time is still presented on changeset page for reference if needed. Next, I reformatted the changes summary&nbsp;— a vertical layout worked much better on a small screen. And the last change was to reformat header into two lines instead of just one. Here is how digests look now:</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2011/06/bs-digests.png" alt="Beanstalk digests"/></p>
<p>I noticed minor visual issues on iPad, but they were easy to fix by <strong>targeting with this media query for the iPad&#8217;s screen size</strong>:</p>
<p><code>@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { ... }</code></p>
<h3>Newsletter</h3>
<p>We also send a regular newsletter to Beanstalk customers, and with experience from digests, it was a piece of cake!</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2011/06/bs-newsletter.png" alt="Beanstalk newsletters"/></p>
<p>I improved font sizes and margins to use more of the screen space, resized the logo to be proportional to the screen, reorganized the navigation to avoid wrapping, and made images flexible. Now our newsletter doesn’t need any pinch-zooming to navigate and is much more readable on small screens!</p>
<h3>What I have learned</h3>
<ul>
<li>Testing in a mobile email client and not just in mobile browser or resized desktop browser is more important now than ever before. Mobile Safari and Mail on iPhone don&#8217;t work exactly the same.</li>
<li>It’s not easy to customize layout based on table cells, but <kbd>display: block;</kbd> and negative margins work really well for for small changes.</li>
<li>In my tests it seems like <kbd>&lt;meta name="viewport"&gt;</kbd> (<a href="https://developer.mozilla.org/en/mobile/viewport_meta_tag">?</a>) doesn’t work in Apple Mail. This caught me off-guard, and may cause you problems as well.</li>
<li>At first I tried to keep width of emails flexible but in a result every digest had different scaling based on content. That looks really weird if you receive a few digests every day. Sometimes it’s better to keep things fixed at 320px. This requires thinking about your use case!</li>
<li>Yahoo! Mail removes media queries and applies all included mobile stylesheets to web client, but there is <a href="http://www.campaignmonitor.com/blog/post/3457/media-query-issues-in-yahoo-mail-mobile-email/">an easy fix</a> for that.</li>
</ul>
<h3>Conclusion</h3>
<p>It’s not hard to optimize emails for mobile email clients, and the result is worth it! Even while we still use table layouts and inline stylesheets for emails in 2011 it feels like a fresh breeze to drop in some media queries and advanced stylesheets for the clients that can support them. </p>
<p>We&#8217;ll continue to optimize our HTML emails here at Wildbit, and would like to see more optimized emails from the apps we use and love every day as well. Hopefully sharing our experience helps make that a reality!</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2011/06/30/design-for-the-largest-mobile-audience-email-clients/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>We&#8217;re hiring a Rails developer!</title>
		<link>http://wildbit.com/blog/2011/05/04/were-hiring-a-rails-developer/</link>
		<comments>http://wildbit.com/blog/2011/05/04/were-hiring-a-rails-developer/#comments</comments>
		<pubDate>Wed, 04 May 2011 16:47:38 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Postmark]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1312</guid>
		<description><![CDATA[We’re looking to hire a Rails developer to help grow and support our apps: Beanstalk and Postmark (with a primary focus on Postmark). A minimum of 2 years experience in building Rails apps is required. Email <a href="mailto:jobs@wildbit.com">jobs@wildbit.com</a> or continue reading.]]></description>
			<content:encoded><![CDATA[<p>Wildbit is looking to hire another Rails developer to help grow and support Beanstalk and Postmark (with a primary focus on Postmark). A minimum of 2 years experience in building Rails apps is required, and comfort/experience in a Mac OS X development environment is strongly preferred.</p>
<p>We like to spread out our support hours and for that reason would love someone <strong>in North America or South America</strong>. We are a completely virtual team, so you&#8217;ll need to be self-motivated, very passionate, and organized. Our team is currently located in Philadelphia, Russia, Ukraine, Serbia, Germany and Canada.</p>
<p><strong>If you’re interested, we&#8217;re going to be looking for the following information about you. Just email <a href="mailto:jobs@wildbit.com">jobs@wildbit.com</a>.</strong></p>
<ul>
<li>Your experience working with / building web apps</li>
<li>The city and country where you live</li>
<li>Any open source projects you&#8217;ve contributed to or maintain</li>
<li>Personal blog, site or articles</li>
<li>Any blogs or people you follow (helps us understand your interests)</li>
<li>Books that have inspired your work</li>
</ul>
<p><strong>Some things you should know about us:</strong></p>
<ul>
<li>We plan and release in short iterations.</li>
<li>We use Campfire for daily meetings</li>
<li>We have team retreats in places like <a href="http://wildbit.com/blog/2010/09/07/wildbit-retreat-2010-greece/">Greece</a>, Turkey, Cyprus and <a href="http://wildbit.com/blog/2011/04/13/wildbit-retreat-2011-spain/">Spain</a></li>
<li>We have a dedicated QA Tester, but expect your work to be fully tested on your own as well.</li>
<li>We have each person contribute to support in order to understand the needs of our customers.</li>
<li>We schedule time for open source projects as part of <a href="http://wildbit.com/blog/2010/11/12/open-source-friday-dynectastic/">Open</a> <a href="http://wildbit.com/blog/2010/09/10/olark-simple-and-awesome-customer-chat/">Source</a> <a href="http://wildbit.com/blog/2011/04/29/open-source-friday-metrics-and-bantam/">Friday&#8217;s</a>.</li>
</ul>
<h2>Interested?</h2>
<p>Email <a href="mailto:jobs@wildbit.com">jobs@wildbit.com</a> and include the information above. If you&#8217;re not the right person but you know somebody who is, please <a href="http://twitter.com/?status=Team%20@Wildbit%20is%20looking%20for%20a%20new%20rails%20dev!%20http%3A%2F%2Fwildbit%2Ecom%2Fblog%2F2011%2F05%2F03%2Fwere-hiring-a-rails-developer%2F">share this post</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2011/05/04/were-hiring-a-rails-developer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>HTML5 on Beanstalk&#8217;s landing site</title>
		<link>http://wildbit.com/blog/2010/03/24/html5-on-beanstalks-landing-site/</link>
		<comments>http://wildbit.com/blog/2010/03/24/html5-on-beanstalks-landing-site/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:41:27 +0000</pubDate>
		<dc:creator>Eugene Fedorenko</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[HTML and CSS]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1054</guid>
		<description><![CDATA[I was excited and eager to try HTML5 in a real project for a long time, so when <a href="http://wildbit.com/blog/2010/03/16/beanstalk-landing-redesign/">Gilbert redesigned the Beanstalk landing site</a> I was fully armed for coding it. The web doesn&#8217;t need one more HTML5 overview, so this post will focus on 5 things I liked the most during the project.]]></description>
			<content:encoded><![CDATA[<p>I was excited and eager to try HTML5 in a real project for a long time, so when <a href="http://wildbit.com/blog/2010/03/16/beanstalk-landing-redesign/">Gilbert redesigned the Beanstalk landing site</a> I was fully armed for coding it. The web doesn&#8217;t need one more HTML5 overview, so this post will focus on 5 things I liked the most during the project.</p>
<p><span id="more-1054"></span></p>
<h3>1. Semantic tagline and subtitles</h3>
<p><code>&lt;hgroup&gt;<br />
	&lt;h1&gt;Beanstalk&lt;/h1&gt;<br />
	&lt;h2&gt;Version Control with a Human Face&lt;/h2&gt;<br />
&lt;/hgroup&gt;</code></p>
<p>The <kbd>hgroup</kbd> element saved me twice during this work&nbsp;&ndash; first for coding our logo and then for marking up subtitles on pages like <a href="http://beanstalkapp.com/partners">Partners</a> or <a href="http://beanstalkapp.com/security">Security</a>. It was a pleasure to ditch <kbd>&lt;p class="tagline"&gt;</kbd> and other mess like that.</p>
<h3>2. Using &lt;h1&gt; as section header</h3>
<p><code>&lt;section&gt;<br />
	&lt;h1&gt;Mom, look at this header!&lt;/h1&gt;<br />
&lt;/section&gt;</code></p>
<p>In HTML5 each section can have its own <kbd>&lt;h1&gt;</kbd> element, so it&#8217;s much easier to maintain the correct page outline.</p>
<h3>3. Better forms</h3>
<p><code>&lt;label for="fname"&gt;Full name&lt;/label&gt;<br />
&lt;input type="text" id="fname" placeholder="First"&gt;<br />
&lt;input type="text" id="lname" placeholder="Last"&gt;</code></p>
<p>The <kbd>Placeholder</kbd> attribute was a nice and painless way to add text placeholders without any JS.</p>
<p><code>&lt;input type="email"&gt;<br />
...<br />
&lt;input type="url"&gt;</code></p>
<p>On the signup and blog comments forms we used new input types&nbsp;&ndash; <kbd>email</kbd> and <kbd>url</kbd>. I especially love how they improve the user experience on the iPhone with customized keyboards.</p>
<p><code>&lt;input type="text" required="required"&gt;</code></p>
<p>Finally there is a way to semantically mark required fields!</p>
<h3>4. <kbd>figure</kbd> element in features tour</h3>
<p><code>&lt;figure&gt;<br />
	&lt;img src="../images/ss-repositories.png" alt="Beanstalk Repositories"&gt;<br />
&lt;/figure&gt;</code></p>
<p>This element may be used for much more than images, but I decided to use it in our <a href="http://beanstalkapp.com/features">feature tour</a>. Sadly, optional <kbd>&lt;figcaption&gt;</kbd> child element didn&#8217;t allow titles and paragraphs, so I wasn&#8217;t able to use it for captions. The <kbd>&lt;figure&gt;</kbd> element may not suit the feature tour 100%, but I believe that so far this is the most appropriate element in HTML5.</p>
<h3>5. Meaningful dates in blog</h3>
<p><code>&lt;time datetime="2010-03-18" pubdate="pubdate"&gt;Mar 18&lt;/time&gt;</code></p>
<p>This speaks for itself. A great way to add semantic meaning to dates.</p>
<h3>* * *</h3>
<p>Overall, this project went really well. I had only 3 minor issues:</p>
<ul>
<li>Wrapping several block elements (like <kbd>H1</kbd> and <kbd>H2</kbd>) in <kbd>A</kbd> element still doesn&#8217;t work well in most browsers.</li>
<li>Textmate incorrectly highlights HTML5 elements in CSS.</li>
<li>HTML5 elements code folding doesn&#8217;t work in Textmate, too.</li>
</ul>
<p>After spending couple of weeks with HTML5 it&#8217;s painful to get back to old XHTML 1.0 projects&nbsp;&ndash; I miss all these funky features!</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/03/24/html5-on-beanstalks-landing-site/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Beanstalk is moving to Rackspace</title>
		<link>http://wildbit.com/blog/2009/08/06/beanstalk-is-moving-to-rackspace/</link>
		<comments>http://wildbit.com/blog/2009/08/06/beanstalk-is-moving-to-rackspace/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 14:35:32 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=670</guid>
		<description><![CDATA[We're migrating Beanstalk to a new environment at Rackspace. Read more about our decision process, the migration, and what you have to look forward to as a Beanstalk customer.]]></description>
			<content:encoded><![CDATA[<p>Growing a popular web product is hard work and a lot of fun. With Beanstalk we&#8217;ve attracted tons of attention, which means we constantly face server and performance issues. We&#8217;re designers and coders, so when it comes to managing servers its not the thing we enjoy most.</p>
<p>When we decided to partner with <a href="http://engineyard.com">Engine Yard</a>, I can say it was one of the best things that happened to Beanstalk. We let them take care of our infrastructure while we worked on strategy, design, usability, code, and improving the product overall. When it comes to Rails, no one does it better than <a href="http://engineyard.com">Engine Yard</a>. The problem is, Beanstalk is a lot more than just a Rails app, we&#8217;re a hosting service on our own. As we&#8217;ve grown, our need for a unique hosting environment became more apparent.</p>
<h3>Making the decision</h3>
<p>I have to admit, it was really freaking hard to move away from <a href="http://engineyard.com">Engine Yard</a>. They literally take care of everything and their support team is awesome (and a cool group of people). At the same time, we needed more control and a specific configuration for things like svn, storage, apache, virtualization, and so on. So, we decided to go with the leader, <a href="http://rackspace.com">Rackspace</a>. They are well known for their network, support, and are able to deliver the managed complex hosting environment that we needed.</p>
<h3>Getting help where it is needed</h3>
<p>Like I said, we know how to build web apps, but we are not server admins. Moving the amount of data and configurations we have to a new host is a scary process. To make it smoother, we reached out to the experts. For help with setting up our <a href="http://rackspace.com">Rackspace</a> environment, we contacted Tom Copeland at <a href="http://infoether.com">InfoEther</a>. He&#8217;s been a big part of the process for setting up our new environment, tuning our servers, and understanding our current bottlenecks. It&#8217;s obviously a big help that he already runs <a href="http://rubyforge.com">RubyForge</a>. When it comes to Subversion, we contacted Blair Zajac from <a href="http://orcaware.com">Orcaware</a>. Blair has provided some advice for us in the past. This time around, we had him review our Apache and Subversion setup to make sure we covered everything.</p>
<h3>Better performance and stability</h3>
<p>Beanstalk has had its share of performance problems in the past. The majority of these problems were due to our storage and IO performance. In our environment at Rackspace, we have invested heavily in the best hardware and storage options available. This should reduce most of the headaches when it comes to the speed of checkouts and commits in Subversion. I&#8217;m sure we&#8217;ll have some kinks to work out after the migration, but the new environment will benefit all of our customers (free and paid).</p>
<h3>The migration</h3>
<p>Planning the migration was tricky, but we&#8217;re confident we have it figured out. Over the next couple weeks we will be migrating groups of accounts over to the new Rackspace environment. We&#8217;ll have plenty of notices before it happens and we expect little downtime for each account. With the migration, we also have some really nice improvements like Subversion 1.6 support.</p>
<h3>Want to know more about our setup?</h3>
<p>This has been a really detailed and exhausting process, so I&#8217;d like to share more about the actual server architecture in a future post. Once we get through the migration process, I will post some more details about the new environment. We&#8217;re really excited about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/08/06/beanstalk-is-moving-to-rackspace/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>New Code Viewer in Beanstalk</title>
		<link>http://wildbit.com/blog/2009/07/01/new-code-viewer-in-beanstalk/</link>
		<comments>http://wildbit.com/blog/2009/07/01/new-code-viewer-in-beanstalk/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 14:29:42 +0000</pubDate>
		<dc:creator>Ilya Sabanin</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=534</guid>
		<description><![CDATA[I'm extremely pleased to announce a new feature in Beanstalk in addition to Search that we launched last week (yes, we don't sleep at Wildbit). Today we're launching the new Code Viewer with support for more than 80 (eighty!) language syntaxes and a new improved look. Read on for the juicy details...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m extremely pleased to announce a new feature in Beanstalk, in addition to <a title="Wildbit Blog: Introducing Search in Beanstalk" href="http://wildbit.com/blog/2009/06/22/introducing-search-in-beanstalk/">Search</a>, that we launched last week (yes, we don&#8217;t sleep at Wildbit). Today we&#8217;re launching the new Code Viewer with support for more than 80 (eighty!) language syntaxes and a new improved look. Read on for the juicy details&#8230;</p>
<p><span id="more-534"></span></p>
<p><img src="http://wildbit.com/uploads/2009/06/code-viewer.jpg" alt="Code Viewer Screenshot" width="400" height="250" /></p>
<p>I&#8217;m not kidding about eighty languages here, you can see a full list at the <a title="Pygments — Python Syntax Highlighter" href="http://pygments.org/languages">Pygments web-site</a>. It includes stuff like a full family of C languages, Ruby, Python, Java, Scala, Haskell, Scheme, JavaScript, Io, Matlab, Erlang, HTML and many many more.</p>
<p>It also has lovely bits like &#8220;.html.erb&#8221;, that our fellow Rails-developers use every day in their projects, and will have both HTML and ERB highlighted properly. And much anticipated support for CSS for all the designers out there.</p>
<p>We also updated the diff viewer so that it will now display line numbers correctly for file comparisons.</p>
<p>So, jump into your Beanstalk account (or <a title="Beanstalk — Version Control with a Human Face" href="http://beanstalkapp.com">grab one for free</a>) and check how nifty your code looks with the new Code Viewer. But please keep in mind that as with any other new cool feature there may be some raw edges, such as problems with various character encodings out there. Don&#8217;t hesitate to <a title="Welcome - Beanstalk Support" href="http://help.beanstalkapp.com">contact us</a> and provide feedback that will help us make the Code Viewer even better.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/07/01/new-code-viewer-in-beanstalk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing Search in Beanstalk</title>
		<link>http://wildbit.com/blog/2009/06/22/introducing-search-in-beanstalk/</link>
		<comments>http://wildbit.com/blog/2009/06/22/introducing-search-in-beanstalk/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 16:48:49 +0000</pubDate>
		<dc:creator>Ilya Sabanin</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=429</guid>
		<description><![CDATA[We've been working on a new search functionality in Beanstalk for a while and today I'm super excited to introduce it to you! Initially we thought about something simple for the first iteration, but I managed to make a full-featured indexed search of commits, scoped by repository or specific user. And there are a few tricks for power users also! Let me show you.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been working on a new search functionality in Beanstalk for a while and today I&#8217;m super excited to introduce it to you! Initially we thought about something simple for the first iteration, but I managed to make a full-featured indexed search of commits, scoped by repository or specific user. And there are a few tricks for power users also! Let me show you.</p>
<p><span id="more-429"></span></p>
<h3>Overview</h3>
<p>When you log in to your account you will notice a new search field at the top right corner of the interface. It will always be there across all pages. If you are on the Dashboard, it will search for commits across all repositories. If you are in repository Activity page or Browser, or any other repository-related page, it will search only in that repository. When you enter something in that field you will be redirected to a Search Results page with a list of all revisions found for your search term.</p>
<p><img title="Beanstalk Search" src="http://wildbit.com/blog/wp-content/uploads/2009/06/bs-search.jpg" alt="Beanstalk Search" /></p>
<p>Right now Search is only capable of finding your commits, searching for files contents is coming later. You can use Search to find by commit message, name of file or directory changed in commit, author name and revision number. Search is using stemming so it will treat words like &#8220;fishing&#8221;, &#8220;fish&#8221; and &#8220;fisher&#8221; as the same word.</p>
<p>And the search is blazing fast, because it&#8217;s using an industry standard Sphinx search engine.</p>
<h3>Search Scopes</h3>
<p>Ok, let&#8217;s do some advanced searching now. On the Search Results page you noticed a few options to adjust your search: select boxes for repository and user. Use these to search for commits only in some repository or made by a specific user. If you leave the search field empty and select some user, you will get a list of all commits made by him (or her). Very useful to get information about a user&#8217;s activity.</p>
<h3>Tricks</h3>
<p>There are two special triggers that you can use in the search field to adjust your search results: +by and +rev. +by is the same as the users select box on the Search Results page but it allows you to find by users that are not registered in your Beanstalk accounts. You can use that trigger like that (without quotes): &#8220;updating CSS +by gilbert&#8221;. Or you can use it without search term to get the list of all commits made by user: &#8220;+by ilya&#8221;.</p>
<p>The +rev trigger is my favorite. Using it you can quickly jump to a specific revisions in your repository. Say you are on Activity page and you want to see a changeset for revision 400 of your repository. Just enter this in the search field and you will get what you want: &#8220;+rev 400&#8243; (again, without quotes). If you do that on the Dashboard you will  get a list of revision 400 changesets for all repositories in your account.</p>
<h3>How do you like it?</h3>
<p>This implementation of Search is just iteration number one so it&#8217;s probably not ideal and won&#8217;t suit all your needs, but as we move forward we will continue improving it according to your feedback. So we would like to hear from you! Let us know how search works for you and what interesting ideas do you have about making it even better.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/06/22/introducing-search-in-beanstalk/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What happened to OpenID support in Beanstalk?</title>
		<link>http://wildbit.com/blog/2009/05/26/what-happened-to-openid-support-in-beanstalk/</link>
		<comments>http://wildbit.com/blog/2009/05/26/what-happened-to-openid-support-in-beanstalk/#comments</comments>
		<pubDate>Tue, 26 May 2009 14:37:55 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=363</guid>
		<description><![CDATA[You may be wondering why we removed OpenID support in Beanstalk. While we love OpenID, it just did not fit with Beanstalk's system. Since Subversion requires a user/pass (no OAuth love for svn yet), it makes OpenID less valuable.]]></description>
			<content:encoded><![CDATA[<p>You may be wondering why we removed OpenID support in Beanstalk. While we love OpenID, it just did not fit with Beanstalk&#8217;s system. Since Subversion requires a user/pass (no OAuth love for svn yet), it makes OpenID less valuable.</p>
<p><span id="more-363"></span></p>
<p>In addition to this, our OpenID support was never really complete. We lacked the proper verification and over time, it became a little difficult to maintain. This month we discussed internally whether we should finally improve OpenID implementation in Beanstalk. As we discussed the effort, we decided that it may be better to just remove it. This creates less maintenance for us and does not remove too much value for our customers since a user/pass is still required for SVN.</p>
<p>We&#8217;re hoping we can revisit this in the future as we improve integration options, especially if SVN gets OAuth support. </p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/05/26/what-happened-to-openid-support-in-beanstalk/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Recent Beanstalk outage explained</title>
		<link>http://wildbit.com/blog/2009/05/18/recent-beanstalk-outage-explained/</link>
		<comments>http://wildbit.com/blog/2009/05/18/recent-beanstalk-outage-explained/#comments</comments>
		<pubDate>Mon, 18 May 2009 17:01:44 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=362</guid>
		<description><![CDATA[Last Tuesday around 5pm EST Beanstalk experienced a pretty major outage. It reminded me of the days before we had <a href="http://engineyard.com">Engine Yard</a> around. While we do battle with performance issues and periodic slow downs, an outage like this is pretty rare. I want to explain what happened.]]></description>
			<content:encoded><![CDATA[<p>Last Tuesday around 5pm EST Beanstalk experienced a pretty major outage. It reminded me of the days before we had <a href="http://engineyard.com">Engine Yard</a> around. While we do battle with performance issues and periodic slow downs, an outage like this is pretty rare. I want to explain what happened.</p>
<p><span id="more-362"></span></p>
<p>At <a href="http://engineyard.com">Engine Yard</a>, we have a group of slices that manage SVN, Web Servers, and our backend processes for things like deployments, integration tools, and so on. All of these slices use a shared storage system called GFS. This allows us to scale to many slices while still having access to essential data.</p>
<h3>The issue</h3>
<p>When the outage occurred, one of our slices had a severe memory problem. We attempted to fix it with Engine Yard, but due to the nature of GFS we had to first make sure there we no data corruptions. This forced us to shut down the entire environment while we checked the disks. It&#8217;s basically a precaution to make sure we don&#8217;t reboot with data corruption.</p>
<p>Since we have so much data, the disk checks took a really long time, which resulted in a full environment outage. It was the best approach to make sure we safely brought the environment back, but obviously not ideal for those who needed access to their code. After the disk checks and reboot all was back to normal and the data was verified.</p>
<h3>Future avoidance</h3>
<p>When things like this happen, we always need to reflect and figure out ways to avoid them from happening again. In this situation, we need to make sure we have enough resources to handle severe spikes that might cause full environment problems. I am confident we added the necessary resources and can control it in the future.</p>
<h3>More updates coming</h3>
<p>We recently got back from <a href="http://railsconf.com">Railsconf</a>. I have to say that hanging out with <strong>Engine Yard</strong> was the most valuable part of being there. We had a great opportunity to sit down with the team and discuss better ways for us to scale Beanstalk. There are many options, so choosing the right path can be tricky. We feel like we came up with a good plan to not only scale the service, but also isolate our shards (nodes) to avoid system wide issues when things go wrong. As of now, many of you should have already noticed SVN speed improvements.</p>
<p>We have tons of cool features to work on, but our first priority is performance. It&#8217;s amazing how challenging and rewarding a successful web product can be at the same time. We&#8217;re excited about our growth and ready to take on the challenge to continue scaling the service.  Thanks for being patient and helping us grow.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/05/18/recent-beanstalk-outage-explained/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wildbit at RailsConf 09</title>
		<link>http://wildbit.com/blog/2009/05/13/wildbit-at-railsconf-09/</link>
		<comments>http://wildbit.com/blog/2009/05/13/wildbit-at-railsconf-09/#comments</comments>
		<pubDate>Wed, 13 May 2009 15:09:23 +0000</pubDate>
		<dc:creator>Ilya Sabanin</dc:creator>
				<category><![CDATA[About Us]]></category>
		<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=361</guid>
		<description><![CDATA[I've worked with Rails for 5 years, but since I live in Siberia it's always pretty hard to find anyone like-minded in my area, except bears and php guys. So this year I wanted to attend to RailsConf badly, and luckily Chris said: sure, why not.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve worked with Rails for 5 years, but since I live in Siberia it&#8217;s always pretty hard to find anyone like-minded in my area, except bears and php guys. So this year I wanted to attend to RailsConf badly, and luckily Chris said: sure, why not.</p>
<p><span id="more-361"></span></p>
<p>So for me, RailsConf was all about people. Meeting Railsists and Rubyists as I am, sharing experiences, talking about our projects and just bragging about day-to-day shit. It was a very inspiring and interesting experience. RailsConf talks and tutorials were a good bonus to all this :)</p>
<p>I really enjoyed the talks by Obie Fernandez, DHH and Chris Wanstrath. Too bad I missed the talk about Smalltalk and Ruby by Robert Martin.</p>
<p>We also attended New Relic&#8217;s customers party. Free food and drinks, you can&#8217;t ignore something like that :) New Relic seriously rocks.</p>
<p>Probably the most useful thing we did at RailsConf is talk to the Engine Yard guys. We solved many many problems from our current Beanstalk setup. Hopefully this will make our scaling pain go away soon and make Beanstalk faster. We are working really hard on this one.</p>
<p>And of course, Vegas itself is a super-crazy place to visit! Probably the craziest city in the world. Super amazing shows, lot&#8217;s and lot&#8217;s of fun and beautiful stuff to see.</p>
<p>We also visited NYC and Philadelphia during the trip. It was also very interesting. I liked Philadelphia very much. Calm and beautiful place to live. I plan to move there for a couple of months to try living the US way.</p>
<p>So, RailsConf 09 was a blast, I really enjoyed it and will definitely attend next year. I hope we will make some small Beanstalk users meet-up also :)</p>
<p>Don&#8217;t forget to check out <a href="http://www.flickr.com/photos/ilya_sabanin/sets/72157617759583132/">some photos</a> that I took at the conference.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/05/13/wildbit-at-railsconf-09/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TeamSupport Integration with Beanstalk</title>
		<link>http://wildbit.com/blog/2009/05/11/teamsupport-integration-with-beanstalk/</link>
		<comments>http://wildbit.com/blog/2009/05/11/teamsupport-integration-with-beanstalk/#comments</comments>
		<pubDate>Mon, 11 May 2009 15:16:49 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=359</guid>
		<description><![CDATA[Recently one of our customers, <a href="http:/www.TeamSupport.com">TeamSupport</a>, contacted us about integrating their product with Beanstalk.  We decided that our new WebHook integration would be a great place to start, and a few weeks later they came back with a fully functioning integration.]]></description>
			<content:encoded><![CDATA[<p>Recently one of our customers, <a href="http://www.TeamSupport.com">TeamSupport</a>, contacted us about integrating their product with <a href="http://beanstalkapp.com">Beanstalk</a>. We decided that our new WebHook integration would be a great place to start, and a few weeks later they came back with a fully functioning integration.</p>
<p><span id="more-359"></span></p>
<p><a href="http://www.TeamSupport.com">TeamSupport</a> is a SaaS application that integrates a Help Desk with a Bug Tracking system. They feel that most software companies struggle with internal communication since they have different applications for their customer service group and their development/QA teams. Having one tool that both groups can use will facilitate internal communication and also lead to better customer satisfaction.</p>
<p>Of course, the Beanstalk integration is of most interest to the developers and designers using TeamSupport, but it is nice that the customer service group can also see that a particular ticket is addressed by a revision in Beanstalk.</p>
<p>When a new version is committed into Beanstalk, we send out a WebHook configured for TeamSupport. TeamSupport receives this and scans the description field for “version” and “tickets” tags. They then match up the tickets that the new version addresses and they add a note to the ticket with information about the commit, including the link back to their repository on Beanstalk so they can review the actual code.</p>
<p>Hope you like it. Be sure to give us feedback and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/05/11/teamsupport-integration-with-beanstalk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Space Cookies on CNN</title>
		<link>http://wildbit.com/blog/2009/04/21/space-cookies-on-cnn/</link>
		<comments>http://wildbit.com/blog/2009/04/21/space-cookies-on-cnn/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 18:18:19 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=354</guid>
		<description><![CDATA[<a href='http://www.cnn.com/video/#/video/tech/2009/04/18/natpkg.robot.comp.cnn?iref=videosearch'><img src="http://www.wildbit.com/uploads/2009/04/space-cookies.png" alt="" title="Space Cookies on CNN" /></a>

In the beginning of the year we helped sponsor Space Cookies, An all-girls FIRST robotics team from the San Francisco Bay Area. They've been doing extremely well and were just interviewed on CNN for their competition in Atlanta. Really great work and best of luck!]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.cnn.com/video/#/video/tech/2009/04/18/natpkg.robot.comp.cnn?iref=videosearch'><img src="http://www.wildbit.com/uploads/2009/04/space-cookies.png" alt="" title="Space Cookies on CNN" /></a></p>
<p>In the beginning of the year we helped sponsor Space Cookies, An all-girls FIRST robotics team from the San Francisco Bay Area. They&#8217;ve been doing extremely well and were just interviewed on CNN for their competition in Atlanta. Really great work and best of luck!</p>
<p><a href="http://www.cnn.com/video/#/video/tech/2009/04/18/natpkg.robot.comp.cnn?iref=videosearch">View the CNN Video</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/04/21/space-cookies-on-cnn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beanstalk Update: Incidents, Releases, Upgrades</title>
		<link>http://wildbit.com/blog/2009/03/31/beanstalk-update-incidents-releases-upgrades/</link>
		<comments>http://wildbit.com/blog/2009/03/31/beanstalk-update-incidents-releases-upgrades/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 11:43:54 +0000</pubDate>
		<dc:creator>Dima Sabanin</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=352</guid>
		<description><![CDATA[Hi! I'm Dima Sabanin, Rails developer at Wildbit. I've been working on some cool new Beanstalk features that we'll be releasing today. Let me give you a short guide on what we've added and changed.]]></description>
			<content:encoded><![CDATA[<p>Hi! I&#8217;m Dima Sabanin, Rails developer at Wildbit. I&#8217;ve been working on some cool new Beanstalk features that we&#8217;ll be releasing today. Let me give you a short guide on what we&#8217;ve added and changed.</p>
<p><span id="more-352"></span></p>
<h3>Incidents</h3>
<p>At Beanstalk we are always striving to make your experience as flawless as possible, to make things &#8220;just work&#8221;, but it&#8217;s not always possible. Sometimes errors happen, and up until now you had to contact support to do something about it.</p>
<h4>Enter Incidents.</h4>
<p>I&#8217;ve created a system that will report all kinds of different issues that may rise for your account, and give you a way to debug them or notify support.</p>
<p>For instance, in the case if you have a failing repository import &#8211; you will know exactly why it failed &#8211; maybe you uploaded the wrong file, and now you can resolve the issue by yourself, without waiting for an answer from support.</p>
<p>Another instance is failing Release deployment &#8211; these were hard to debug without support before.<br />
Now if Release fails, you will see an error message, complete log information about what went wrong &#8211; it will help you setup and debug your Release servers correctly.</p>
<p>Third example where Incidents will come in handy is debugging integrations with third-party services that we offer to all of our customers. Sometimes API&#8217;s change, authentication tokens get changed or accounts get suspended &#8211; whatever the reason &#8211; you will know.</p>
<p><img src="http://www.wildbit.com/uploads/2009/03/incidents.png" alt="" /></p>
<p>I want to add, that Incidents will not replace our support team. We&#8217;re always eager to help you with any issues, no matter if there are any Incidents involved. Incidents are for those cases when there is a big chance the issue is not on our side, and you want to take care of it yourself to continue with your work faster.</p>
<h3>Releases</h3>
<p>We&#8217;ve had Releases &#8211; automated and manual deployment of your repositories to your own servers &#8211; for a year already and yet it&#8217;s still in Beta. Here&#8217;s an explanation for this &#8211; we weren&#8217;t happy with the functionality or with the average time it took for Release to get deployed. <em>Until now.</em></p>
<p>I&#8217;ve replaced a big chunk of Releases code with a simpler and more straightforward system, that works using a different principle. Let me explain. Before now, to deploy a Release we basically made an export of your repository on our server, then connected to your deployment server and just mirrored these two directories. It took a lot of time, because we had no way to know what had changed on your server, and even if you were deploying the change to a single file, we had to compare every single directory of your deployment directory with our local copy.</p>
<p>I must admit that it was my bad decision, back when I was developing the previous version of Releases. I won&#8217;t defend it now, let&#8217;s just say we all make bad judgements sometimes :)</p>
<p>Here&#8217;s how new Releases work. We figure out what is the last revision deployed on your server, and we know what revision you want to deploy. We take all the changesets in between these revisions, and extrapolate exactly what we should update, add and delete from the server. Now you see why it will be much faster than the previous way.</p>
<h4>There is one catch though.</h4>
<p>Subversion is not very bright. It thinks that when you move two directories, you actually delete old one and create new directory. It&#8217;s more complicated than that, but basically it is true. Because of this, when we collect changesets to deploy on your server, <strong>we have to delete directories that were removed/renamed/moved</strong> in Subversion repository from your server. This is an important change from the previous Releases, when nothing was ever removed from your server, even if you wanted it to.</p>
<p>We discussed an option where we would only delete files from your server if you enabled a checkbox in your Release configuration, but we decided that it won&#8217;t work. Just imagine what the deployment on your server would look like, if every source directory for any moved or renamed directory would just be left lying there forever. The tree would turn into a mess very fast. Anyway, we wanted to let everyone know about the change, so if anyone relies on the behavior that Releases do not delete files will have a chance to stop it.</p>
<p>If new Releases cause problems for you or you have some bright ideas on how to solve the situation with moved directories, please contact us. If everything goes fine, in the next few weeks hopefully Beta tag from Releases will go away forever.</p>
<h3>Other small, but important stuff</h3>
<p>While working on Incidents, I&#8217;ve also put a lot of effort in making daemons that manage background tasks in Beanstalk, such as Releases, Imports, Caching work faster and more reliable. One of the things that was improved is Amazon S3 backups &#8211; we had some issues with it, and now they are resolved and we have reliable constant running incremental backups to S3, in addition to our various other backups. Your data is now safer than ever.</p>
<p>We&#8217;ve also had some noticeable hardware and infrastructure improvements, thanks to <a href="http://www.engineyard.com/">EngineYard</a>.</p>
<p><a href="http://www.wildbit.com/blog/2008/10/28/being-part-of-a-virtual-team-the-good-the-bad-the-awesome/">Petyo</a> and <a href="http://www.wildbit.com/blog/2008/12/11/refined-repository-export-in-beanstalk/">Ilya</a> also put a lot of hard work into fixing old and new bugs, that were bugging our users, and they have plenty new stuff up their sleeves. <a href="http://www.wildbit.com/blog/2008/12/04/scrum-in-virtual-teams/">Igor Balos</a>, testing superman, made this release stable, and our design gurus <a href="http://www.wildbit.com/blog/2008/12/29/i-demand-freedom/">Gilbert</a> and <a href="http://www.wildbit.com/blog/2008/11/05/beanstalk-wallpapers/">Eugene</a>, added style to the UI.</p>
<p>We won&#8217;t be deploying all the upgrades at once though. Today we will deploy bugfixes, Incidents and Releases. Later this week we&#8217;ll deploy infrastructure changes such as new slice for our daemons and another GFS storage partition for your repositories.</p>
<p>This turned out to be one lengthy post, but so is this <a href="http://beanstalkapp.com/">Beanstalk</a> upgrade. We sincerely hope you&#8217;ll like it.</p>
<p>Please, let us know if you have <strong>any</strong> issues or comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/03/31/beanstalk-update-incidents-releases-upgrades/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Deploying Rails apps with Beanstalk and Passenger</title>
		<link>http://wildbit.com/blog/2009/03/12/deploying-rails-apps-with-beanstalk-and-passenger/</link>
		<comments>http://wildbit.com/blog/2009/03/12/deploying-rails-apps-with-beanstalk-and-passenger/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 18:50:10 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[deployments]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=347</guid>
		<description><![CDATA[Here is a nice write up from Jason Schrader on deploying Rails apps with <a href="http://beanstalkapp.com">Beanstalk</a> and <a href="http://www.modrails.com/">Passenger</a>. Jason explains how to use <a href="http://help.beanstalkapp.com/admin/articles/17-deployment-and-releases">Beanstalk's deployment feature</a> to quickly and easily release to his server.]]></description>
			<content:encoded><![CDATA[<p>Here is a <a href="http://julianschrader.de/20090312-deploying-rails-apps-with-beanstalk-and-passenger/">nice write up</a> from Julian Schrader on deploying Rails apps with <a href="http://beanstalkapp.com">Beanstalk</a> and <a href="http://www.modrails.com/">Passenger</a>. He explains how to use <a href="http://help.beanstalkapp.com/admin/articles/17-deployment-and-releases">Beanstalk&#8217;s deployment feature</a> to quickly and easily release to his server. Thanks Julian!</p>
<p><a href="http://julianschrader.de/20090312-deploying-rails-apps-with-beanstalk-and-passenger/">Read the full post at JulianSchrader.de</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/03/12/deploying-rails-apps-with-beanstalk-and-passenger/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Recent Beanstalk delays explained</title>
		<link>http://wildbit.com/blog/2009/03/11/recent-beanstalk-delays-explained/</link>
		<comments>http://wildbit.com/blog/2009/03/11/recent-beanstalk-delays-explained/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 18:54:39 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=346</guid>
		<description><![CDATA[The last couple days were pretty rough for Beanstalk and our customers. We experience very high load across all of our slices, eventually determining that the performance problem was on our GFS drives that store our application and SVN data. Since we host with Engine Yard, we have nice Nagios warnings about high load, which started to come in on Tuesday. After lots of digging and help from the Engine Yard support team, we were able to narrow down the problems.]]></description>
			<content:encoded><![CDATA[<p>The last couple days were pretty rough for Beanstalk and our customers. We experience very high load across all of our slices, eventually determining that the performance problem was on the GFS drives that store our application and SVN data. Since we host with <a href="http://engineyard.com">Engine Yard</a>, we have nice Nagios warnings about high load, which started to come in on Tuesday morning. After lots of digging and help from the <a href="http://engineyard.com">Engine Yard</a> support team, we were able to narrow down the problems.</p>
<p><span id="more-346"></span></p>
<h3>Problem: Storage calculation</h3>
<p>Each plan level in Beanstalk has a storage limit, which determines the plan you need or if you have exceeded your storage capacity across your repositories. In order to keep this information up to date, we need to constantly calculate storage. On the server, we would run a &#8220;du&#8221; on every commit  to calculate the storage, then report back to the application. If the storage is too high, we can inform the customer that it is time to upgrade.</p>
<p>As you can imagine, this creates a huge problem as the application grows. Considering that we have thousands of commits each day, the process would have to calculate storage for literally thousands of files in each repository on every commit. The IO usage was absurd.</p>
<h3>Solution: Adjust and compromise</h3>
<p>The only solution was to reduce the number of times we calculate storage. Of course, this also means that some people could go over their storage limits and continue to use the system. For us this was an easy compromise. Having a stable system with the ability to grow compared to a short delay in exceeded storage is a no brainer.</p>
<p>We&#8217;ve had this fix ready to go since late last week, but it required some additional testing. After the problems in the past two days we decided enough is enough. We all got together today, tested the fix rigidly, and deployed the fix to our slices. </p>
<h3>The results</h3>
<p>It&#8217;s only been running for a short time, but so far load has gone down dramatically. We also increased the RAM on our the slices that handle our daemons. We&#8217;ll be watching this carefully to adjust and improve.</p>
<p>While we just <a href="http://www.wildbit.com/blog/2009/02/11/subversion-15-and-performance-improvements/">recently released performance updates</a>, it&#8217;s an ongoing process. This latest fix is another improvement that will help us grow. In the next several weeks we will be working with Engine Yard to improve the speed of our GFS drives as well as some tuning for Subversion specifically. </p>
<p>We really appreciate the patience while we improve and we welcome as much feedback as possible. Please don&#8217;t forget to <a href="http://twitter.com/wildbit">follow us on Twitter</a> for more frequent updates.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/03/11/recent-beanstalk-delays-explained/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lessons from Advertising Beanstalk</title>
		<link>http://wildbit.com/blog/2009/03/03/lessons-from-advertising-beanstalk/</link>
		<comments>http://wildbit.com/blog/2009/03/03/lessons-from-advertising-beanstalk/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 20:02:07 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[partnerships]]></category>
		<category><![CDATA[promotion]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=336</guid>
		<description><![CDATA[Beanstalk has been booming ever since we launched it. We've learned a lot in the last 18 months about what works and what doesn't when it comes to promotion and advertising. I'd like to share some our experiences.
]]></description>
			<content:encoded><![CDATA[<p>Beanstalk has been booming ever since we launched it. We&#8217;ve learned a lot in the last 18 months about what works and what doesn&#8217;t when it comes to promotion and advertising. I&#8217;d like to share some of our experiences.</p>
<p><span id="more-336"></span></p>
<p>Right after we launched paid plans in November of 2007, we prepared a bunch of advertising campaigns to announce it. Some of the resources included <a href="http://decknetwork.net/">The Deck</a>, <a href="http://daringfireball.net">Daring Fireball</a>, and <a href="http://smashingmagazine.com">Smashing Magazine</a>. We were most excited about <a href="http://decknetwork.net/">The Deck</a> due to the number of high-profile sites and targeted audience. </p>
<p>When the ads were placed, we started seeing the traffic come in. We made sure to setup conversion tracking with Google Analytics and we also associated referrals to each new account that signed up. The results surprised us a bit. While <a href="http://decknetwork.net/">The Deck</a> has the most reach, we noticed much better results from <a href="http://daringfireball.net">Daring Fireball</a>. Check out the chart below:</p>
<p><img src="http://www.wildbit.com/uploads/2009/03/google-chart-0108.png" alt="Ad Traffic" title="Ad Traffic" width="300" height="97" /></p>
<p>The first spike is from our ad on Daring Fireball. After that we noticed a steady increase in visitors from The Deck when the ads were posted in February. The second spike, however, is from a <a href="http://37signals.com/svn/posts/841-screens-around-town-sliding-in-from-the-right-at-netflix-beanstalk-and-apple">post on 37 Signals</a> about our public site design. </p>
<h3>What does this tell us?</h3>
<p>We could probably conclude a bunch of things from this little bit of information. Overall, it made us realize two key distinctions:</p>
<ul>
<li>Banners, no matter what site they are on, are still banners and people tend to ignore them.</li>
<li>Blog posts hit the readers directly, whether they are paid or not.</li>
</ul>
<p>The Deck still brought lots of valuable traffic to our site over a longer timeframe and we can definitely recommend it for big announcements. What we learned is that instead of focusing on advertising, we should instead focus on making the product better and getting people excited about it. If people are excited about your product, they are more likely to post about it, giving you direct exposure to their readers. For example, check out this chart, which shows all of 2008:</p>
<p><img src="http://www.wildbit.com/uploads/2009/03/google-chart-all08.png" alt="All traffic in 08" title="All traffic in 08" /></p>
<p>You can see a series of spikes. The first two are the same from above, which shows Daring Fireball and the 37 Signals post. The gigantic one in the middle is when Versions announced their release (I&#8217;ll talk about partnerships in later post), the fourth larger spike is from <a href="http://www.tuaw.com/2008/10/24/friday-favorite-coda-versions-beanstalk/">TUAW in October</a>.</p>
<p>There are lots of little spikes here and there, all from blog posts, integrations, or partnerships. The main point to take away from this is that we have not spent a penny on advertising since The Deck, but continue to see the traffic pour in. </p>
<p>While it is nothing new, we&#8217;ve learned that good promotion just depends on the quality of your product and whether or not people are excited. So put your head down, improve your product, and get people excited about it.</p>
<p>I&#8217;d love to hear what others have experienced when it comes to promotion and advertising for a web product. If you have some thoughts, post a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/03/03/lessons-from-advertising-beanstalk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beanstalk: More storage, new plan.</title>
		<link>http://wildbit.com/blog/2009/02/17/beanstalk-more-storage-new-plan/</link>
		<comments>http://wildbit.com/blog/2009/02/17/beanstalk-more-storage-new-plan/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 21:10:05 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[plans]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=330</guid>
		<description><![CDATA[Today we upgraded storage levels on all Beanstalk plans, including 100mb on the Free Plan. The increase in storage includes:

Free: From 20Mb to 100Mb
Personal: From 1GB to 3GB
Team: From 3GB to 6GB
Business: From 8GB to 12GB
Corporate: From 15GB to 24GB


We also introduced a new plan after some recent demand. The Giant Plan features 200 users, [...]]]></description>
			<content:encoded><![CDATA[<p>Today we upgraded storage levels on all Beanstalk plans, including 100mb on the Free Plan. The increase in storage includes:</p>
<ul>
<li>Free: From 20Mb to 100Mb</li>
<li>Personal: From 1GB to 3GB</li>
<li>Team: From 3GB to 6GB</li>
<li>Business: From 8GB to 12GB</li>
<li>Corporate: From 15GB to 24GB</li>
</ul>
<p><span id="more-330"></span></p>
<p>We also introduced a new plan after some recent demand. The <strong>Giant Plan</strong> features 200 users, 150 repositories, and 48GB of space for $200/m.</p>
<p>We hope this helps as your repositories continue to grow and evolve.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/02/17/beanstalk-more-storage-new-plan/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Beanstalk is hiring a Rails Developer</title>
		<link>http://wildbit.com/blog/2009/02/16/beanstalk-is-hiring-a-rails-developer/</link>
		<comments>http://wildbit.com/blog/2009/02/16/beanstalk-is-hiring-a-rails-developer/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 16:47:41 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[About Us]]></category>
		<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=329</guid>
		<description><![CDATA[We’re looking to hire a Rails developer to help grow and support Beanstalk, our hosted Subversion app. A minimum of 2 years experience in building Rails apps is required.]]></description>
			<content:encoded><![CDATA[<p>We’re looking to hire a Rails developer to help grow and support Beanstalk, our hosted Subversion app. A minimum of 2 years experience in building Rails apps is required.</p>
<p><span id="more-329"></span></p>
<p>Our team is located in Philadelphia, Russia, Ukraine, Serbia, Germany and Bulgaria, so location is not important. We’re accepting applicants from anywhere in the world. This is a pure telecommute job and we need an individual who is self-motivated, very passionate, and organized. (i.e. We don’t babysit at Wildbit:)</p>
<p>If you’re interested, please send the following to <a href="mailto:jobs@wildbit.com">jobs@wildbit.com</a>.</p>
<ul>
<li>Experience with Subversion and Beanstalk</li>
<li>Past projects and your role / accomplishments</li>
<li>Personal blog or site, Articles</li>
<li>Any blogs or people you follow (helps us understand your interests)</li>
<li>Favorite books</li>
</ul>
<h4>Some things about our team</h4>
<ul>
<li>Our process is mostly Agile / Scrum</li>
<li>We use Basecamp, talk in Campfire, and avoid IM as much as possible</li>
<li>We have team retreats in places like <a href="http://www.wildbit.com/blog/2008/09/08/next-wildbit-retreat-turkey/">Turkey</a> and <a href="http://www.wildbit.com/blog/2007/03/12/wildbit-retreat-cyprus/">Cyprus</a></li>
<li>We have a dedicated QA Tester</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/02/16/beanstalk-is-hiring-a-rails-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion 1.5 and Performance Improvements</title>
		<link>http://wildbit.com/blog/2009/02/11/subversion-15-and-performance-improvements/</link>
		<comments>http://wildbit.com/blog/2009/02/11/subversion-15-and-performance-improvements/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 17:12:26 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Beanstalk]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.wildbit.com/?p=328</guid>
		<description><![CDATA[This weekend we launched two important updates to Beanstalk: Upgraded to Subversion 1.5.5 and released major performance improvements to the web interface. Learn about the upgrades, how it effects your account, and some known issues.]]></description>
			<content:encoded><![CDATA[<p>This weekend we launched two important updates on Beanstalk: Upgrade to Subversion 1.5.5 and major performance improvements to the web interface. Learn about the upgrades, how it affects your account and a few known issues.</p>
<p><span id="more-328"></span></p>
<h3>Upgrade to Subversion 1.5.5</h3>
<p>We upgraded all Subversion servers to SVN 1.5.5. With this update you can now take advantage of <a href="http://svnbook.red-bean.com/en/1.5/svn.branchmerge.advanced.html">Merge Tracking</a> and <a href="http://subversion.tigris.org/svn_1.5_releasenotes.html">many new features</a> in the latest Subversion release. To make the conversion process painless, we added a simple tool to the Dashboard for account owners. Once the upgrade is activated, all repositories in your account will be upgraded to SVN 1.5.5. We also run <em>svn-populate-node-origins-index</em>, which is new as of Subversion 1.5, and behaves as a cache to vastly speed up certain history-querying operations. This process only takes a few minutes to complete. <a href="http://help.beanstalkapp.com/articles/31-upgrading-to-subversion-15">Read the full help article</a>.</p>
<h3>Major performance improvements</h3>
<p>Beanstalk has been steadily growing since we launched. Along with the growth, performance has been a constant challenge. While the speed of our SVN servers have been solid in recent months, our web interface for browsing files, viewing activity, and reviewing changesets have been slow. All of this ended during this weekend&#8217;s release. </p>
<p>We identified the issue two weeks ago and narrowed it down to the Ruby SVN bindings. Along with updating the bindings and refactoring code, we also improved caching. The results have been fantastic! In some cases larger repositories that used to take 20 seconds to load (ouch!) now load in under a second.</p>
<p>You may notice <strong>pre-caching notices</strong> when going to a repository. We had to setup this process to cache your repository on the servers. This ensures your repositories load quickly in the future. </p>
<h3>Known issues and troubleshooting</h3>
<p>With an upgrade of this size, we have noticed a few issues. Here are some known problems and what you can do.</p>
<h4>Receiving a 403 Forbidden error in SVN.</h4>
<p>In some cases we have seen this happen. During the 1.5 upgrade some AUTH files were corrupted. While we think we fixed it, if you experience this issue just update your account password by going to &#8220;My profile&#8221; after logging in. Another thing that can help is to do a fresh checkout of the repository.</p>
<h4>Pre-caching takes too long</h4>
<p>A few cases of pre-caching taking too long have occurred. If you think the process is taking too long, please <a href="mailto:support@beanstalkapp.com">contact us</a> and we will take a look.</p>
<h4>Delay in the commit activity page</h4>
<p>The cache is set to a short time frame. However, we are noticing longer delays in some accounts. We&#8217;re working on this and it should be resolved very soon.</p>
<p>We really hope these updates show our commitment to making Beanstalk the best hosted Subversion service available. Your feedback has been crucial in helping us improve and we greatly appreciate it. </p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/02/11/subversion-15-and-performance-improvements/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

