<?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</title>
	<atom:link href="http://wildbit.com/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>Tue, 01 Jun 2010 17:34:36 +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>Reducing ticket noise</title>
		<link>http://wildbit.com/blog/2010/06/01/reducing-ticket-noise/</link>
		<comments>http://wildbit.com/blog/2010/06/01/reducing-ticket-noise/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 17:21:43 +0000</pubDate>
		<dc:creator>Igor Balos</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[qa]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1110</guid>
		<description><![CDATA[Creating a ticket in the task management system is easy. But frequently, you probably run into the situation where your tickets get &#8220;noisy&#8221; and become unreadable. 
Why does this happen? Well, when many people are involved in a specific ticket, there will be bunch of assigning, back and forth communication, until the ticket is approved, [...]]]></description>
			<content:encoded><![CDATA[<p>Creating a ticket in the task management system is easy. But frequently, you probably run into the situation where your tickets get &#8220;noisy&#8221; and become unreadable. </p>
<p>Why does this happen? Well, when many people are involved in a specific ticket, there will be bunch of assigning, back and forth communication, until the ticket is approved, and resolved in the end. I am referring here to tickets that are related to new features or complex bugs. Dealing with simple bugs is easy and this would probably never happen.</p>
<h3>How to deal with ticket readability</h3>
<p>So, how to deal with tickets and avoid &#8220;noise?&#8221; You don&#8217;t want developers to miss out on features or bugs in the ticket and you also want testers to see what they need to review so it can be properly checked and approved. </p>
<p>I prepared a list of things we do to improve ticket readability and reduce the risk of missing valuable information.</p>
<h4>Separate discussion from tickets as much as possible</h4>
<p>We are lazy in nature, so from time to time, we tend to discuss things in tickets more than needed. Try to avoid this. Leave out all unnecessary information from the ticket and leave only clean concise data which is required for people working on the ticket. For additional details link to an external discussion, which is posted separately. </p>
<p>For example, say you are not sure how you want to implement a feature. The feature was discussed and final requirements are settled. </p>
<p>Now think about if you have all this information in ticket. This is a lot of unneeded data. The person to which ticket is assigned only needs to know about the final decision, and perhaps something else, but this can be all written down cleanly with a link to the discussion in which final decision was made. </p>
<h4>Always attach links to the final copy and design updates to the ticket</h4>
<p>When a developer is working on a feature, the ticket also includes a link to <a href="http://beanstalkapp.com/">Beanstalk</a> changeset and the latest design pages. Now these pages can change many times through the ticket. Attaching all the changeset changes and design pages at bottom of the ticket is a huge help. </p>
<h3>Clean tickets reduce the probability of error</h3>
<p>The bottom line is that you should try to keep your tickets clean and easily readable, at the same time try not to have long tickets which have thousands of lines of text. This means you should have separate tickets in smaller pieces.</p>
<p>Let me know what you think and how you are working in your task management system with tickets.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/06/01/reducing-ticket-noise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postmark Meets SMTP</title>
		<link>http://wildbit.com/blog/2010/05/20/postmark-meets-smtp/</link>
		<comments>http://wildbit.com/blog/2010/05/20/postmark-meets-smtp/#comments</comments>
		<pubDate>Thu, 20 May 2010 17:08:21 +0000</pubDate>
		<dc:creator>Hristo Deshev</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1105</guid>
		<description><![CDATA[Ever since we started working on Postmark we decided we would have a cool REST API that uses simple JSON as transport. Being mostly web developers ourselves, we wanted to help people break away from the SMTP tyranny. As most people around, we hated SMTP &#8212; it&#8217;s an ancient protocol and its age shows&#8230;  [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since we started working on Postmark we decided we would have a cool REST API that uses simple JSON as transport. Being mostly web developers ourselves, we wanted to help people break away from the SMTP tyranny. As most people around, we hated SMTP &#8212; it&#8217;s an ancient protocol and its age shows&#8230;  Now we have gone back to the SMTP roots and have provided an SMTP endpoint that you can use to send messages through Postmark. Simple as that &#8212; you configure your SMTP credentials and just start sending.</p>
<h3>But, why are you bringing SMTP back?</h3>
<p>Well, we are not really bringing it back. Think of the SMTP endpoint as another API entry point. We realize that the entire world does not speak our REST API (yet!), and we want to make sure we can accept messages from as many clients as possible. The whole world speaks SMTP and that is a fantastic way to use Postmark.</p>
<h3>I can use both the REST API and SMTP access. Which one do you recommend?</h3>
<p>The REST API is, and will always be, the preferred choice to send email through Postmark. We fully control it and can evolve it to fit our customers&#8217; needs best. We add and will add exciting features that are plain impossible to do with SMTP. These days I like to call SMTP access &#8220;the gateway drug&#8221; to using Postmark. It is ideal in cases like:</p>
<ul>
<li>You already have an application in place that sends email using SMTP. You want to try Postmark out, but you don&#8217;t want to change your code. Change your SMTP configuration to point to Postmark&#8217;s servers, and you are all set.</li>
<li>You have an old legacy application and you are damn sure you don&#8217;t want to touch that code again! Proceed as above :-).</li>
<li>You depend on an external tool that can only send SMTP. Now, you can use Postmark for that too.</li>
<li>You happen to work with an ancient or exotic platform (COBOL anyone?) and there is no client library for our REST API for that platform. Share emails generated by your oldest code with us!</li>
</ul>
<h3>How do I use it?</h3>
<p>SMTP access is configured for each Postmark server. It is not enabled by default, so you need to go to the server settings screen and enable it. You will get the connection instructions, but basically you need to connect to <em>smtp.postmarkapp.com</em> on port 25 and use your server API token as both the SMTP user name and password. We support both plain text and CRAM-MD5 authentication &#8212; please, do yourselves a favor and use the latter.</p>
<h3>What is not supported as compared to the REST API</h3>
<p>I mentioned above that advanced features will not be available over SMTP. Here is a list of what is not available or just works differently:</p>
<ul>
<li>Tagging emails is not supported. We could have implemented that with a custom SMTP header, but our philosophy for this is that using SMTP should require no changes to your code. Modifying your code to add headers sort of defeats the purpose.</li>
<li>We do not support encrypting the communications channel. Due to a limitation of our SMTP server we do not offer TLS. If you need to guarantee encrypted message delivery, use the REST API over SSL.</li>
<li>The REST API will immediately return an error if you feed it bad data. SMTP will not. If we detect an error, such as trying to send with a <em>From</em> address that you have not configured in a sender signature, we will log a special &#8220;SMTP API&#8221; type of bounce. We advise that you review your bounces often or set up a <a href="http://developer.postmarkapp.com/bounces#bounce-hooks">bounce web hook</a> that will alert you when that happens.</li>
</ul>
<h3>I want to know more!</h3>
<p>I bet you do! Head to the <a href="http://developer.postmarkapp.com/smtp-access">docs</a> for the details.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/05/20/postmark-meets-smtp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Handle Postmark Bounces Your Way</title>
		<link>http://wildbit.com/blog/2010/03/29/handle-postmark-bounces-your-way/</link>
		<comments>http://wildbit.com/blog/2010/03/29/handle-postmark-bounces-your-way/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 15:03:15 +0000</pubDate>
		<dc:creator>Hristo Deshev</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1083</guid>
		<description><![CDATA[<a href="http://wildbit.com/blog/2010/03/22/better-bounce-management-for-postmark/">Last week</a> we launched our new bounces UI for <a href="http://www.postmarkapp.com/">Postmark</a>. We significantly cleaned up the delivery issues page trying to both give you a better tool for visualizing bounces and spam complaints and introduce our new features: tags, bounce dumps, inactive bounces. We are proud with the user interface, but having a UI is not always the best thing you can do. What if you had in mind a different way to visualize delivery issues? What if you want to tightly integrate your application with Postmark and fetch and display bounces directly in your dashboard instead of requiring users to use the Postmark UI? Now you can do that!]]></description>
			<content:encoded><![CDATA[<p><a href="http://wildbit.com/blog/2010/03/22/better-bounce-management-for-postmark/">Last week</a> we launched our new bounces UI for <a href="http://www.postmarkapp.com/">Postmark</a>. We significantly cleaned up the delivery issues page trying to both give you a better tool for visualizing bounces and spam complaints and introduce our new features: tags, bounce dumps, inactive bounces. We are proud with the user interface, but having a UI is not always the best thing you can do. What if you had in mind a different way to visualize delivery issues? What if you want to tightly integrate your application with Postmark and fetch and display bounces directly in your dashboard instead of requiring users to use the Postmark UI? Now you can do that!</p>
<h3>A New API Is Born</h3>
<p>Postmark has a pretty interesting architecture &#8212; its user interface is implemented as a Ruby-on-Rails application, while the delivery API engine is done in ASP.NET. This has enforced on us a clean separation of UI code from delivery code from the very beginning of the project. Since we already had the internal API to let the Ruby app fetch data from the .NET side, it was pretty easy to take that API and expose it through a different endpoint that uses the server API token authentication we already had in place for email delivery and that was basically it. Should I go into details about the extra layer that we built to make sure people had a descriptive error message when they feed us broken data or they get a nice slap on the wrist when they try to access somebody else&#8217;s data? Probably not.</p>
<h3>Using the API to Work with Bounces</h3>
<p>So, what&#8217;s in store with the new API? Here&#8217;s the list:</p>
<ul>
<li>Getting a list of tags defined for the current server</li>
<li>Retrieving a summary of the delivery issues: the number of bounces for every bounce type and the number of inactive bounces</li>
<li>Fetching a filtered list of bounces with paging support</li>
<li>Reading the details of a single bounce</li>
<li>Obtaining the raw dump for a bounce (One more and I have to hunt for a Thesaurus to get more verbs for reading/loading data)</li>
<li>Activating an inactive bounce</li>
</ul>
<p>You can get the full details for every method, the input it requires, and the returned output in the <a href="http://developer.postmarkapp.com/bounces">Bounce API documentation</a>.</p>
<h3>Now what?</h3>
<p>We have done our best to make the API as extensive as possible, and we are almost as good at guessing the way people would use Postmark as <a href="http://www.chucknorrisfacts.com/">Chuck Norris</a> himself, but we may have missed something. So, if a cool idea on using Postmark bounces crosses your mind, feel free to <a href="http://help.postmarkapp.com/">share</a> it.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/03/29/handle-postmark-bounces-your-way/feed/</wfw:commentRss>
		<slash:comments>1</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>0</slash:comments>
		</item>
		<item>
		<title>Better Bounce Management for Postmark</title>
		<link>http://wildbit.com/blog/2010/03/22/better-bounce-management-for-postmark/</link>
		<comments>http://wildbit.com/blog/2010/03/22/better-bounce-management-for-postmark/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 19:55:53 +0000</pubDate>
		<dc:creator>Hristo Deshev</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1064</guid>
		<description><![CDATA[Phew, that was a busy several weeks. We have been hard at work improving the way we handle bounces on Postmark. The newest additions to our service are support for tagging emails and disabling delivery to addresses that do not want your email.
Tagging
How many times have you wanted to tag your outgoing email and check [...]]]></description>
			<content:encoded><![CDATA[<p>Phew, that was a busy several weeks. We have been hard at work improving the way we handle bounces on <a href="http://postmarkapp.com">Postmark</a>. The newest additions to our service are support for tagging emails and disabling delivery to addresses that do not want your email.</p>
<h4>Tagging</h4>
<p>How many times have you wanted to tag your outgoing email and check if it gets delivered, or just get statistics about that category of emails? Would you reconsider your email delivery strategy if all your spam complaints get triggered for the &#8220;Mr. X wants to be your friend&#8221; invitation email that you send from your social networking site? Now you can see this right in the interface and optimize your email delivery. To start tagging emails, see the new property in the <a href="http://developer.postmarkapp.com/">Postmark Developer Docs</a>.</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2010/03/pm-delivery3.png" alt="Postmark Delivery" title="Postmark Delivery" width="500" height="197" class="alignnone size-full wp-image-1080" /></p>
<h4>Automatically blocking delivery for certain bounces</h4>
<p>We realized that most of the time people do not want to send email to a nonexistent mailbox just to have the target SMTP server bounce the message back. Imagine a bunch of emails hitting the same addresses every day and achieving nothing. It&#8217;s both a waste of bandwidth and Postmark credits. Not to mention that ISP&#8217;s don&#8217;t like that at all and at the extreme you can end up degrading reputation and delivery.</p>
<p>The above situation is not even the worst thing that can happen. Say a user doesn&#8217;t want to receive email from you, and clicks the &#8220;Report spam&#8221; button in his email client. If you fail to handle that, you will keep delivering email, effectively annoying him or her even more. That can have mild consequences like bad email karma resulting in maybe you getting more spam than usual, or, if you are particularly obnoxious at sending those emails, it could result in getting blocked by the ISP and Postmark.</p>
<p>To help with that we decided to start rejecting email that you try to deliver to an address which has previously bounced back. We will do this only for <strong>hard bounces</strong> since those are guaranteed to represent mailboxes or servers that do not exist, and for <strong>spam complaints</strong> &#8211; those always mean that the user does not want to hear from you. The algorithm is simple &#8212; whenever we receive a hard bounce or a spam complaint sent through a server you configured, we will deactivate the recipient address and will not let you deliver email to it. The cool part is that you will not waste credits on those messages either.</p>
<p><strong><span style="color: #ff0000;">Important: Right now we are still allowing emails to be delivered. On Monday March 29th we will flip the switch and stop sending to bounced and spam emails</span></strong><span style="color: #ff0000;">.</span></p>
<h4>But I insist on sending to that address!</h4>
<p>Do not worry! The delivery issues interface will allow you to reactivate an email address that has generated a hard bounce, so that you can send email to it again. Spam complaints are different. We feel that nobody should have to put up with continuously getting email he or she feels is spam, so we will not allow you to reactivate an address that has been deactivated because of a spam complaint.</p>
<h4>I have several applications. Will deactivating an address for one of them affect the others?</h4>
<p>Inactive addresses are associated with a Postmark server. Your applications should follow the recommended practice of using a different server for every application, so that a spam complaint for your <a href="http://www.wwe.com/">WWE</a> fans social network does not hurt your other apps&#8217; delivery.</p>
<h4>How will you reject my email? Will I get an error?</h4>
<p>Yes, the plan is to eventually get an error back at you. Since that email will not reach anybody, we think it is best that you get an early notification and do something about that. This might cause some problems with your existing code though. Imagine the following pseudocode:</p>
<pre>    actionA();
    sendEmail();
    actionB();</pre>
<p>If <em>sendEmail()</em> throws an exception because you sent to an inactive email address, <em>actionB()</em> will never be executed. While I think this is not a typical situation (You are doing proper error checking when calling an external service over the network, right? Right?!), we still have to do the right thing and provide a grace period until people check their code. For the time being you will get a warning when you try to send to an inactive address, if you check the <em>Message</em> property of the JSON response. In a week or so, we&#8217;ll flip the switch that will start generating real errors.</p>
<p>As a conclusion, I&#8217;d like to say that I&#8217;m pretty excited about the new features. I hope they are useful for you and your apps. As usual, feedback is <a href="http://help.postmarkapp.com/">welcome</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/03/22/better-bounce-management-for-postmark/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Wildbit on Github</title>
		<link>http://wildbit.com/blog/2010/03/18/wildbit-on-github/</link>
		<comments>http://wildbit.com/blog/2010/03/18/wildbit-on-github/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 15:21:40 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=949</guid>
		<description><![CDATA[Wait, Github? That's right, we use <a href="http://github.com/wildbit">Github</a>. While some people think that Github is a competitor, we feel our goals and mission are quite different. <a href="http://beanstalkapp.com">Beanstalk</a>, which is now offering Git support, is fully focused on private team collaboration around version control. Github, on the other hand, has taken social coding to an entirely new level, using Git as an excellent technical solution to the problem. We use Github for this exact reason, opening up our code to a large community to help others and improve the tools.]]></description>
			<content:encoded><![CDATA[<p>Wait, Github? That&#8217;s right, we use <a href="http://github.com/wildbit">Github</a>. While some people think that Github is a competitor, we feel our goals and mission are quite different. <a href="http://beanstalkapp.com">Beanstalk</a>, which is now offering Git support, is fully focused on private team collaboration around version control. Github, on the other hand, has taken social coding to an entirely new level, using Git as an excellent technical solution to the problem. We use Github for this exact reason, opening up our code to a large community in case others find it useful and to improve our projects.</p>
<h3>Open Source Fridays, Postmark Libraries, and more</h3>
<p>So far our public repos are mostly focused around our products, such as the gems for <a href="http://developer.postmarkapp.com">Postmark</a> and <a href="http://newsberry.com">Newsberry</a>, along with a few others like <a href="http://wildbit.com/blog/2010/03/05/oss-friday-release-shellshot-gem/">shellshot</a> and unpacker. Some more recent additions are <a href="http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/">PrettyDiff</a>, which is the first result of Wildbit&#8217;s Open Source Friday&#8217;s and <a href="http://wildbit.com/blog/2010/02/15/oss-friday-upgrading-to-the-hoptoad-v2-api/">Hopsharp</a>, a .NET library for <a href="http://hoptoadapp.com">Hoptoad</a>. </p>
<p>As we go, you can expect more projects to be added, so be sure to <a href="http://github.com/wildbit">follow us on Github</a> for the latest.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/03/18/wildbit-on-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beanstalk Landing Redesign</title>
		<link>http://wildbit.com/blog/2010/03/16/beanstalk-landing-redesign/</link>
		<comments>http://wildbit.com/blog/2010/03/16/beanstalk-landing-redesign/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 19:38:04 +0000</pubDate>
		<dc:creator>Gilbert Guttmann</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1036</guid>
		<description><![CDATA[You might have noticed by now, but we gave Beanstalk's landing site a new, fresh look. While we were always very happy with the identity itself (logotype, colors, etc.), the landing site got cluttered over time because we added several elements (like customer logos) which weren't really planned right from the beginning.]]></description>
			<content:encoded><![CDATA[<p>You might have noticed by now, but we gave Beanstalk&#8217;s landing site a new, fresh look. While we were always very happy with the identity itself (logotype, colors, etc.), the landing site got cluttered over time because we added several elements (like customer logos) which weren&#8217;t really planned right from the beginning.</p>
<p><a href="http://blog.beanstalkapp.com/2010/03/11/git-support-is-official/">Git support</a> was probably the biggest update for quite some time, so it did make perfect sense to relaunch the landing site at the same time. I didn&#8217;t try to reinvent the wheel here and decided to use the fairly basic <a href="http://960.gs/">960 grid system</a>, which you can see below. We didn&#8217;t use their CSS though, we always prefer to write our own code instead of relying on any 3rd party code or frameworks. The site is our first official HTML5 project and Eugene had a lot of fun with it, he&#8217;ll go more into detail in another post.</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2010/03/bs-landing-grid.jpg" width="400" height="392" alt="Grid" title="Grid" /></p>
<p>Besides the visual and technical updates, we also set some goals on the content which we wanted to achieve. A lot of customers asked us about the security of Beanstalk, so instead of answering the same questions over and over again, <a href="http://beanstalkapp.com/security">we build it into the site</a>. Since security is a concern for customers, we made a bit more prominent on the homepage too:</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2010/03/bs-security.png" alt="Security" title="Security" /></p>
<p>Another thing I want to mention is the <a href="http://beanstalkapp.com/features">Feature Tour</a>. You probably remember our <a href="http://wildbit.com/blog/wp-content/uploads/2010/03/bs-slides.jpg">old homepage</a>, where we built the slides right into the header area. While this was an elegant solution, it was also very limited at the same time: the slides weren&#8217;t easily extendable. That&#8217;s why a separate page is a much more future-proof solution.</p>
<p>I hope you enjoy our new site, feel free to ask any questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/03/16/beanstalk-landing-redesign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postmark Now with Multiple Recipients Support</title>
		<link>http://wildbit.com/blog/2010/03/10/postmark-now-with-multiple-recipients-support/</link>
		<comments>http://wildbit.com/blog/2010/03/10/postmark-now-with-multiple-recipients-support/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 15:26:47 +0000</pubDate>
		<dc:creator>Hristo Deshev</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1031</guid>
		<description><![CDATA[You might have been one of the &#8220;lucky&#8221; few that tried to pass a comma separated list of email in the To field of a Postmark message just to get back the &#8220;Multiple recipients not supported&#8221; error. Or maybe you are one of the guys that have been wondering &#8220;How come they don&#8217;t support Cc?&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>You might have been one of the &#8220;lucky&#8221; few that tried to pass a comma separated list of email in the <em>To</em> field of a <a href="http://postmarkapp.com">Postmark</a> message just to get back the &#8220;Multiple recipients not supported&#8221; error. Or maybe you are one of the guys that have been wondering &#8220;How come they don&#8217;t support <em>Cc</em>?&#8221; We have been reluctant to add that feature because of two reasons:</p>
<ul>
<li>It seemed to us it was not a typical usage scenario for transactional email, so it was a safe choice to delay implementing it.</li>
<li>It was hard to implement. Apart from having to parse the almost free-form format of email addresses that mail servers accepted, we had to deal with finding out exactly which recipient triggered a bounce or a spam complaint.</li>
</ul>
<p>We wanted to solve this problem anyway because the alternative for customers is pretty bad. To send an email to three recipients, you&#8217;d have to generate three Postmark messages. That means three HTTP requests to our service. I wouldn&#8217;t do that in a web request handler in my web app because it would degrade the user experience. The alternative is to queue a background job and process it asynchronously&#8230; which adds a lot of complexity to a seemingly simple task. That is why we just went ahead and added the feature. You can now pass multiple addresses in the <em>To</em> field and optionally include a <em>Cc</em> field with one or more additional recipients.</p>
<h3>But What about Bounces?</h3>
<p>Didn&#8217;t I just say it was hard to find out which recipient is invalid and triggers a bounce or represents a trigger-happy user that hates your guts and won&#8217;t think twice before clicking the &#8220;Report Spam&#8221; button? Yes, it is not only hard, but it sometimes is just impossible. The tricky part for us was to parse bounces that we get back and try to extract the original recipient from there. That is especially hard to do with spam feedback reports. Some ISP&#8217;s (looking at you, AOL!) explicitly redact every occurrence of the original recipient in their reports, and you can literally do nothing about it.</p>
<p>Our solution to that problem was to try and do our best in finding the original recipient. If we fail, we log a bounce or spam complaint with an empty email address. Pretty soon we&#8217;ll provide the UI to let you review the full text of the bounce, so that you have some idea what really happened and why. Of course single-recipient emails will use our proven mechanism of detecting the recipient, and in that case we should always be able to infer the bounced address.</p>
<h3>I Am Using Client Library X &#8212; Does It Support the New Features</h3>
<p>I think client libraries will not need any changes to support multiple <em>To</em> recipients. Your code should just work. As far as <em>Cc</em> is concerned, libraries will need to be changed, so that they add the <strong>Cc</strong> field to the JSON they send to our servers. Library authors, please consult the <a href="http://developer.postmarkapp.com/">developer docs</a> for details. We will update the Ruby gems shortly.</p>
<h3>You support <em>Cc</em>, but not <em>Bcc</em>. How come?</h3>
<p>Frankly we can&#8217;t think of a good use for <em>Bcc</em> in a web application. The only times people were trying to use it were when they wanted to have some sort of delivery tracking for their emails and we already offer that through our application. We are working on better bounces tracking and statistics, and to us the most logical way to implement that is to build it in Postmark instead of requiring customers to do <em>Bcc</em> hacks. Of course, we may be completely wrong here &#8212; in that case, please <a href="http://help.postmarkapp.com">contact us</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/03/10/postmark-now-with-multiple-recipients-support/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>OSS Friday release &#8211; Shellshot gem</title>
		<link>http://wildbit.com/blog/2010/03/05/oss-friday-release-shellshot-gem/</link>
		<comments>http://wildbit.com/blog/2010/03/05/oss-friday-release-shellshot-gem/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 15:48:06 +0000</pubDate>
		<dc:creator>Petyo Ivanov</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1022</guid>
		<description><![CDATA[After Ilya presenting <a href="http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/">pretty-diff</a> gem, this Friday it is my turn to share another gem we chose to extract from Beanstalk.

<h3>Shellshot – Deal With System Commands the Right Way</h3>
First of all, let me warn you. Issuing system calls is usually the <strong>worst</strong> way to deal with a certain problem. Executable locations vary from platform to platform. Eventual errors are hard to track. Stuck processes are hard to kill. Parameters should be escaped properly. Chances are someone from the community implemented what you need as a gem. If you really need the performance, <a href="http://onlamp.com/pub/a/onlamp/2004/11/18/extending_ruby.html">drop to C</a> even.]]></description>
			<content:encoded><![CDATA[<p>After Ilya presenting <a href="http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/">pretty-diff</a> gem, this Friday it is my turn to share another gem we chose to extract from Beanstalk.</p>
<h3>Shellshot – Deal With System Commands the Right Way</h3>
<p>First of all, let me warn you. Issuing system calls is usually the <strong>worst</strong> way to deal with a certain problem. Executable locations vary from platform to platform. Eventual errors are hard to track. Stuck processes are hard to kill. Parameters should be escaped properly. Chances are someone from the community implemented what you need as a gem. If you really need the performance, <a href="http://onlamp.com/pub/a/onlamp/2004/11/18/extending_ruby.html">drop to C</a> even.</p>
<p>Unfortunately, none of the options above were available for certain parts of our application, so we had to resort to system calls. Sigh. What an imperfect world we live in. But let’s try to prepare lemonade from the lemons we got.</p>
<h4>Problem #1: System Calls Are Hard to Cancel on Timeout.</h4>
<p>So hard, a <a href="http://ph7spot.com/musings/system-timer">SystemTimer</a> library had to be incorporated (note – the gem is SystemTimer, not system_timer). This was the first thing we learned the hard way – don’t rely on the standard Timeout library when you do system calls.</p>
<h4>Fork? Wait? Waitpid? Exec or System? Kill?! Kill!!</h4>
<p>Executing a command that may get killed is not that simple, in fact:</p>
<pre>pid = fork do
  exec('your command here')
end

Process.wait(pid)</pre>
<p>The whole fork/wait gymnastics is not for the fainthearted.  The <a href="http://ruby-doc.org/docs/ProgrammingRuby/html/ref_m_process.html">ruby documentation</a> assumes you have solid unix background on the subject – which, unfortunately was not the case for us mere experienced-in-the-web-development guys. It took us some time to figure out how to combat the myriad of zombie processes at some point, due to the unfortunate choice of waitpid instead of wait.</p>
<h4>Piping? Should I Call Mario and Luigi? Anyone Knowing What Context Switching Means?</h4>
<p>This problem caused significant amount of hair loss for yours truly, as it was the most cryptic one. It turned out that there is a subtle difference between</p>
<p><code>exec('ruby -e "puts 1"')</code></p>
<p>and</p>
<p><code>exec('ruby -e "puts 1" &gt; file.log')</code></p>
<p>In the first case, the command is executed directly. In the second, it is wrapped in <code>sh -c "..."</code>. The exec command in turn returns the pid of the sh, and not the command (ruby). So if you try killing the process with the pid, returned sometimes the child command performs the so called <a href="http://www.linfo.org/context_switch.html">context switching</a> and continues its execution. Not what you want, usually.</p>
<p>If you need such output redirection, the solution here would be to redefine std{in,out,err} in the fork, before calling exec.</p>
<h4>Confused? Bored to Death?</h4>
<p>No worries. You don’t need to remember or understand the issues above. Just use <a href="http://rubygems.org/gems/shellshot">shellshot</a> (check <a href="http://github.com/underlog/shellshot#readme"><span class="caps">README</span></a> for documentations and samples). Under the hood it utilizes SystemTimer to keep the call under control; <code>IO.pipe</code> is used to collect stderr and report meaningful error messages to you and avoid context switching. After kill, <code>Process.wait</code> is issued to reap occasional zombie processes.</p>
<h4>Should I ditch using <kbd>exec</kbd> and <kbd>system</kbd> on my own in favor of Shellshot?</h4>
<p>Not at all! Shellshot is done for dealing with long-running processes which may get stuck, or can behave in unexpected ways. If your system calls are short and generally safe, this is is not something you should worry about.</p>
<p>Stay tuned for more code for free next Friday!</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/03/05/oss-friday-release-shellshot-gem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[OSS Friday] Upgrading to the Hoptoad v2 API</title>
		<link>http://wildbit.com/blog/2010/02/15/oss-friday-upgrading-to-the-hoptoad-v2-api/</link>
		<comments>http://wildbit.com/blog/2010/02/15/oss-friday-upgrading-to-the-hoptoad-v2-api/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 15:29:51 +0000</pubDate>
		<dc:creator>Hristo Deshev</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=1005</guid>
		<description><![CDATA[We have been using Hoptoad for our email delivery service , Postmark,  and have been extremely happy with it. We are able to get all sorts of  feedback on how our app is doing, often being able to fix an issue  before a customer actually reports it. At first glance Hoptoad looks [...]]]></description>
			<content:encoded><![CDATA[<p>We have been using Hoptoad for our email delivery service , <a href="http://postmarkapp.com/">Postmark</a>,  and have been extremely happy with it. We are able to get all sorts of  feedback on how our app is doing, often being able to fix an issue  before a customer actually reports it. At first glance Hoptoad looks just like a regular error logger attached to an SMTP endpoint, but you see the huge difference when you start using the app. Yes, you get error notifications over email, but you also get reports about the different types of errors you are getting, errors that happen only in a specific environment (dev, staging, production), and errors popping up after a specific deployment you rolled out. Cool stuff. Imagine how bad would be to work without all that data to support you.</p>
<p><a href="http://wildbit.com/blog/wp-content/uploads/2010/02/hoptoad.jpg"><img src="http://wildbit.com/blog/wp-content/uploads/2010/02/hoptoad1.jpg" alt="Hoptoad Logo" title="Hoptoad Logo" width="250" height="100" /></a></p>
<p>But this is exactly what happened when Hoptoad introduced v2 of their API and phased the current API out. The guys provided an excellent Ruby client library that just worked. Unfortunately Postmark&#8217;s delivery engine is built in C# and Microsoft.NET. <a href="http://github.com/krobertson/hopsharp">Hopsharp</a>, the .NET client library stayed at the v1 API. I guess there are not that many .NET developers using Hoptoad over there, and Ken Robertson, the Hopsharp author, must have a lot more interesting projects on his hands. So, with the code being open sourced and hosted on GitHub it was pretty simple for me to do something about that problem. At Wildbit we are trying to establish a tradition of allocating a Friday each month for open source work, and that is how Hopsharp became my first OSS Friday project.</p>
<h3>The Solution</h3>
<p>Last Friday I rolled up my sleeves, forked the project and started hacking. The Hoptoad API has changed a lot. V1 used a JSON-based protocol, while v2 uses XML. The Hoptoad guys were kind enough to provide an XSD schema, so that you could validate your data before sending it to them (and before complaining to their support folks that &#8220;It doesn&#8217;t work&#8221;). Here is what you need to provide as the bare minimum:</p>
<ul>
<li>An error notice with some basic data: API version and an API key;</li>
<li>The error (duh!) with a class, message and backtrace;</li>
<li>Notifier details: information about your library like name, project URL, version;</li>
<li>The server environment: the app project root and the environment name</li>
</ul>
<p>My XML skills with .NET were a bit rusty, but I could quickly whip up an object model that I could handle to the XML serializer and have it spew the correct XML back at me. I kept throwing that at the XML schema validator until it got accepted, and that was it. I pulled all external data like environment names, project settings and paths and Hoptoad parameters to a separate class, and set up a builder object to orchestrate all creation and object composition. Being a spoiled <a href="http://www.codeplex.com/xunit">xUnit.net</a> user, I felt some pain writing NUnit tests, but I got over that quickly. Today, finishing my work, I was able to send my first v2 error notice to Hoptoad.</p>
<h3>The End Result</h3>
<p>Overall I feel like I rewrote most of the project. Probably the only thing that is left from the original code is the part that crafts the actual HTTP request to the Hoptoad servers. My efforts are by no means over, though. Here&#8217;s what&#8217;s left:</p>
<ul>
<li>Hoptoad, being targeted at mostly web apps, allows you to submit details about the current HTTP request like URL, controller and action names, request and session parameters and CGI data (server variables?).</li>
<li>The error reporting part needs more testing and stabilization.</li>
<li>Building the error backtrace that contains the file and line number for all stack frames doesn&#8217;t always work. I guess one needs to deploy the debug symbols (PDB files) for the respective assemblies to get that working. We default to class name for file name and IL instruction offset for line number when that info is not available. Maybe we can do better here.</li>
</ul>
<p>I&#8217;ll probably keep hacking at the code when I get some more free time. After all I want to get rid of my current log4net SMTP error loggers and get back to using Hoptoad ASAP. I&#8217;ll post an update when I&#8217;m done with sending the request details and when I feel the library is stable enough for me to use in Postmark. The code is available <a href="http://github.com/hdeshev/hopsharp">here</a>. You&#8217;re welcome to play with the code, send bug reports and, of course, patches.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/02/15/oss-friday-upgrading-to-the-hoptoad-v2-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Postmark to reveal trends</title>
		<link>http://wildbit.com/blog/2010/02/03/using-postmark-to-reveal-trends/</link>
		<comments>http://wildbit.com/blog/2010/02/03/using-postmark-to-reveal-trends/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 19:35:35 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=994</guid>
		<description><![CDATA[Since we launched Postmark, we've been using it for Beanstalk to send our transactional emails. This includes welcome emails, invites, and most notably commit email notifications. I had a look at the volume for January and thought it was interesting.]]></description>
			<content:encoded><![CDATA[<p>Since we launched <a href="http://postmarkapp.com">Postmark</a>, we&#8217;ve been using it for Beanstalk to send our transactional emails. This includes welcome emails, invites, and most notably commit email notifications. I had a look at the volume for January and thought it was interesting. </p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2010/02/bs-mails-sent.png" alt="" title="Postmark Beanstalk Chart" /></p>
<p>The volume can be associated with the number of commits from our customers. It&#8217;s nice to see that people actually take off on the weekends, although there is a little bit of a rise on Sundays. Most of the work is pretty steady through the work week, with a small bump in the middle. We&#8217;ve also had some nice growth in January, which you can see by the rise of emails throughout the month.</p>
<p>It&#8217;s nice to use our own product to provide more value to our business. We have lots of plans to enhance the statistics around email delivery for Postmark. If you&#8217;re interested, go to the <a href="http://postmarkapp.com">Postmark site</a> and sign up for the beta.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/02/03/using-postmark-to-reveal-trends/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postmark Features: What to expect</title>
		<link>http://wildbit.com/blog/2010/01/22/postmark-features-what-to-expect/</link>
		<comments>http://wildbit.com/blog/2010/01/22/postmark-features-what-to-expect/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 20:43:26 +0000</pubDate>
		<dc:creator>Natalie Nagele</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=978</guid>
		<description><![CDATA[We&#8217;re really excited to have our first round of beta testers using Postmark today. We built Postmark to deliver emails for you, and that is what it will do. On top of email delivery, we are going to provide features to help web apps get the best results from their transactional mail. I wanted to [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re really excited to have our first round of beta testers using Postmark today. We built Postmark to deliver emails for you, and that is what it will do. On top of email delivery, we are going to provide features to help web apps get the best results from their transactional mail. I wanted to take a minute to outline the immediate future for Postmark features. </p>
<h3> Immediate Future </h3>
<ul>
<li>Authentication: Being able to verify that you have setup SPF and Domain Keys correctly within the application.</li>
<li>Web hooks for bounce management: Ping your application when a bounce occurs.</li>
<li>More libraries for your favorite languages and platforms.</li>
</ul>
<h3> Near Future </h3>
<ul>
<li>Opens rate and click-throughs: Stats so you can see how your emails are doing.</li>
<li>Bounce and spam handling: The ability to deactivate subscribers who have bounced or clicked spam.</li>
</ul>
<p>We&#8217;re looking to the beta testers to provide feedback and suggestions so we can continue to build a product you can&#8217;t live without. Thanks for the support. </p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/01/22/postmark-features-what-to-expect/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How we work at Wildbit</title>
		<link>http://wildbit.com/blog/2010/01/21/how-we-work-at-wildbit/</link>
		<comments>http://wildbit.com/blog/2010/01/21/how-we-work-at-wildbit/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 20:09:41 +0000</pubDate>
		<dc:creator>Igor Balos</dc:creator>
				<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Web/Tech]]></category>
		<category><![CDATA[q]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=951</guid>
		<description><![CDATA[Since we have moved from <a href="http://wildbit.com/blog/2008/11/03/basecamp-as-a-bug-feature-tracking-system/">Basecamp</a> for task tracking to <a href="http://lighthouseapp.com/">Lighthouse</a> our workflow has changed significantly. Our workflow improved not just because of using a new task tracking system, but also due to learning from mistakes and figuring out what works best for us. It's something that did not happen over night. We have made numerous small improvements over time and achieved much better productivity. This article is a small insight in the practices we use.]]></description>
			<content:encoded><![CDATA[<p>Since we have moved from <a href="http://wildbit.com/blog/2008/11/03/basecamp-as-a-bug-feature-tracking-system/">Basecamp</a> for task tracking to <a href="http://lighthouseapp.com/">Lighthouse</a> our workflow has changed significantly. Our workflow improved not just because of using a new task tracking system, but also due to learning from mistakes and figuring out what works best for us. It&#8217;s something that did not happen over night. We have made numerous small improvements over time and achieved much better productivity. This article is a small insight in the practices we use.</p>
<p><span id="more-951"></span></p>
<h3>Communication is the key</h3>
<p>In order to make products like <a href="http://beanstalkapp.com/">Beanstalk</a>, <a href="http://newsberry.com/">Newsberry</a> and <a href="http://postmarkapp.com/">Postmark</a>, you need to have great communication in the team. Without communication, projects would quickly lose their pace. We made a bunch of small improvements to keep everybody on the team happy:</p>
<h4>Quiet time</h4>
<p>When we are working, our goal is to not disturb each other,  so we don&#8217;t break the persons &#8220;mojo&#8221;. Every piece of communication that can wait is not discussed directly through IM. We use <a href="https://basecamphq.com/">Basecamp</a>, emails or tasks for this, depending on nature of the topic which needs to be discussed.</p>
<h4>IM Status</h4>
<p>IM status can be a really handy piece of information. It can help you figure out whether person is working, whether a person is super busy, when a team member will get back or whether someone is just hanging around after the work day. Although IM status-es are easy to use and pretty obvious, we started using them more intensively just recently.</p>
<h4>Discussing features</h4>
<p>When we are discussing features, we use <a href="http://wildbit.com/blog/2008/11/03/basecamp-as-a-bug-feature-tracking-system/">Basecamp</a> and include everyone in the team on topics, even if they are not assigned on the project. You never know if someone has a great idea.</p>
<h4>Release notes</h4>
<p>When we started using <a href="http://wildbit.com/blog/2008/12/04/scrum-in-virtual-teams/">scrum</a>, we started using release notes too. Release notes are quite handy. They are not just valuable for Chris (team lead), but it&#8217;s also a small retrospective of the work a team member has done over the last iteration. They give an insight for all members of the team about how the project is doing from a high level.</p>
<h4>Posting plans</h4>
<p>Another great method is posting plans for the work in previous 24 hours, progress at the moment and plans for next 24 hours. It&#8217;s one more benefit of using <a href="http://wildbit.com/blog/2008/12/04/scrum-in-virtual-teams/">scrum in our virtual team</a>. We tend to post plans in our morning meetings in <a href="http://campfirenow.com/">Campfire</a>.</p>
<h3>Managing tasks efficiently</h3>
<p>Managing tasks in a task system is never easy. After time tasks pile up and it gets harder and harder to maintain them.  We added a couple of rules to our process to avoid this.</p>
<h4>Use simple states</h4>
<p>We had a long discussion on which states we would use in the task management system. The more we talked about it, the more states we came up with. <a href="http://wildbit.com/blog/2009/07/30/learning-a-new-codebase/">Hristo</a> sugested that we use simple states, like</p>
<ul>
<li>not started &#8211; nobody is working on the task at the moment</li>
<li>in progress  - someone is currently working on the task</li>
<li>complete &#8211; task is complete and deployed to production site</li>
</ul>
<p>and it proved to be the best choice for us. By using three simple states, we could easily define the state and have a clear view on the status. We added three more states (which I will mention later), but basically these three states are the ones used most of the time.</p>
<h4>Assigning tasks and Milestones</h4>
<p>When no one is working on a task, the task is not assigned. That is usually happening in the Backlog. We assign tasks to a person in case we know that person will work on it. Assigning a case is also a way of notifying the person by email about the task. Tasks are usually assigned when we are creating new Milestones. Milestones contain all the tasks you will work on, and usually last between one and three weeks. Two weeks is kind of optimal. If milestones stretch for too long, they get harder to maintain and deploy.</p>
<p>By the end of the milestone, all tasks in the Milestone need to be finished. Now, this is not always possible. Sometimes tasks in a milestone simply get out of hand and can&#8217;t be finished in time. In this case we move them to another Milestone, estimated with other tasks in hand.</p>
<h4>Backlog and On The Radar</h4>
<p>The Backlog is where we hold all of the tasks we plan to work on in the future. When there is a huge list of tasks, the backlog tends to turn into a place where tasks will &#8220;die&#8221; after a period of time, and will never be implemented. That&#8217;s why we try to look over the backlog after some time and clear it up. In addition to the Backlog, we use a milestone called On The Radar, in which we store backlog tasks which we will work on in the near future (next month or so). On The Radar can be handy when you need to figure out the next Milestone for the project.</p>
<h3>Small things that make life easier</h3>
<p>There is a variety of very small things that can make your everyday workflow easier. Here are some that help us out:</p>
<h4>Additional Task states &#8211; approved, hold, invalid</h4>
<p>I mentioned that we are using a few additional states next to the three basic states:</p>
<ul>
<li>approved &#8211; task is finished and reviewed on staging, but not deployed yet to production</li>
<li>hold &#8211; task is on hold due to a variety of reasons</li>
<li>invalid &#8211; the task was canceled out for some reason</li>
</ul>
<p>I find the <strong>approved</strong> state above the most important. This state happens after we have completely finished the task, but did not deploy the updates to the production website. The task is marked approved and assigned to a developer. When updates are deployed to production, the task is assigned to QA, who checks the production site and marks the task complete (or not).</p>
<h4><strong>Allowing the team to be creative</strong></h4>
<p>Working on something different and new from time to time can boost your creativity. That&#8217;s why we introduced <a href="http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/">Open Source Fridays</a> and Paired Milestones:</p>
<h4>Open Source Friday</h4>
<p>Open source Fridays allow team members to work on something different every other week, and to release the product of their work to the open source community. You can read more about OS Fridays <a href="http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/">in this post</a>.</p>
<h4>Paired Milestones</h4>
<p>We&#8217;ve also started to explore less rigid work flows. An example is Paired Milestones. With this concept, we define some general high-level goals for a project and assign two people to accomplish it in two weeks. This could be a designer / developer pair, two designers, or two developers depending on the goals. Instead of having a project lead and specific tasks, the pair is completely responsible for organization, detailed ideas, and the outcome without outside influence.</p>
<h3>What&#8217;s next?</h3>
<p>We have no idea. When we take a look  back, our workflow was completely different and we just can&#8217;t image how we could live without some of the improvements we have made. We are constantly improving and would probably say the same when we take a look back one year from now.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/01/21/how-we-work-at-wildbit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open Source Fridays at Wildbit</title>
		<link>http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/</link>
		<comments>http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 15:27:35 +0000</pubDate>
		<dc:creator>Ilya Sabanin</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=927</guid>
		<description><![CDATA[Our company is all about cool practices of how to make our workflow better and our products stunning. We strive toward a rock solid development workflow, with things like continues integration and dedicated QA staff. We also post release notes weekly for every project to share the insight between team members. We do scrum meetings daily. But we always strive for more…]]></description>
			<content:encoded><![CDATA[<p>Our company is all about cool practices of how to make our workflow better and our products stunning. We strive toward a rock solid development workflow, with things like continuous integration and dedicated QA staff. We also post release notes weekly for every project to share the insight between team members. We do scrum meetings daily. But we always strive for more…</p>
<p>On our last retreat we decided to try a new habit: every other friday every team member can take a day off to work on any open source project. I was so excited about this idea that I decided to use my friday today, as soon as we finished some major Beanstalk updates.</p>
<p>Writing open source is not just fun, it’s also very important for developers. It helps us improve our communication skills, learn how to take care of projects in the long run and take responsibility. That’s why we should do it more often.</p>
<p>I spent my friday extracting and polishing a library that we use to render diffs in Beanstalk. I called it <a href="http://github.com/iSabanin/pretty_diff">PrettyDiff</a>. I made it because other tools like it were either too hard to change (html is hard coded all over the place), or didn’t have features I wanted.</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2010/01/diff.png" alt="Pretty Diff sample" width="450" height="212"/></p>
<p>Pretty Diff stands out from the crowd because it’s dead simple to customize. All HTML is concentrated in a single place, so you can quickly adjust output to your specific needs. And the code is very easy to read and covered with comments and tests. Plus it comes with built-in coloring support and copy/paste-safe line numbers. Pretty neat.</p>
<p>I enjoyed my Open Source Friday and I&#8217;m looking forward to the next one. Stay tuned for more goodies from the Wildbit team!</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/01/15/open-source-fridays-at-wildbit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A great 2009 and even better 2010</title>
		<link>http://wildbit.com/blog/2010/01/04/a-great-2009-and-even-better-2010/</link>
		<comments>http://wildbit.com/blog/2010/01/04/a-great-2009-and-even-better-2010/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 19:26:34 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=909</guid>
		<description><![CDATA[The Wildbit team recently returned from our 2009 retreat. We try to make it an annual event, as our <a href="http://wildbit.com/blog/2008/10/15/retreat-results">last retreat</a> was in October of '08 in Turkey. This year, we headed off to the mountain resort town of <a href="http://en.wikipedia.org/wiki/Bansko">Bansko, Bulgaria</a>. Every time we have a retreat it is more about hanging out than working, but we're always sure to set goals and spend some time actually working in a room together. For you, our customers, we have a lot planned for 2010, but first let's take a look back at 2009.]]></description>
			<content:encoded><![CDATA[<p>The Wildbit team recently returned from our 2009 retreat. We try to make it an annual event, as our <a href="http://wildbit.com/blog/2008/10/15/retreat-results">last retreat</a> was in October of &#8216;08 in Turkey. This year, we headed off to the mountain resort town of <a href="http://en.wikipedia.org/wiki/Bansko">Bansko, Bulgaria</a>. Every time we have a retreat it is more about hanging out than working, but we&#8217;re always sure to set goals and spend some time actually working in a room together. For you, our customers, we have a lot planned for 2010, but first let&#8217;s take a look back at 2009.</p>
<h3>Looking back at 2009</h3>
<p>2009 was really an incredible year for us. Not only did we mature our products, we also helped launch some great client sites such as <a href="http://stpcollaborative.com">STP Collaborative</a>, <a href="http://meetpips.com">MeetPips</a>, and <a href="http://loseitorloseit.com">Lose It or Lose It</a>. </p>
<p><strong><a href="http://beanstalkapp.com">Beanstalk</a></strong> has grown beyond our expectations. We&#8217;ve moved to a new host, we now<a href="http://beanstalkapp.com/partners"> integrate with over ten services</a>, and added many tools and features. Most importantly, we&#8217;ve achieved a stable and scalable environment to keep all of you confident in our uptime.</p>
<p><strong><a href="http://newsberry.com">Newsberry</a></strong> has gone through a lot of changes and witnessed growth as well. We have a completely new public site, <a href="http://newsberry.com/features/delivery-tools">shifted focus to high-volume senders</a> with delivery tools, and improved the UI and design of the entire application.</p>
<p>As you may have heard we&#8217;re also working on our third product, <a href="http://postmarkapp.com">Postmark</a>, an email delivery service for web apps. We spent the final months of 2009 building and testing Postmark to prepare for the initial beta. The feedback has been great so far and we&#8217;re really excited to get it out there.</p>
<p>Personally, I have watched our team mature and grow in 2009. It&#8217;s amazing to see them in action. As I have written in the past about <a href="http://carsonified.com/blog/business/building-and-managing-virtual-teams/">virtual teams</a>, it all comes down to people who love their work and share a vision.  Watching this thrive in our own team has been a rewarding experience.</p>
<h3>What we have planned for 2010</h3>
<p>With such a great year in 2009, we obviously have a lot planned for 2010. </p>
<p>Our most immediate goals are to get Postmark and <a href="http://blog.beanstalkapp.com/2009/08/12/git-support-is-on-the-way/">Git Support</a> out of beta and into your hands. We&#8217;ve received amazing feedback and enthusiasm on both, so we are just as eager to get them out there as you are. You can expect to see some amazing new features in Newsberry as well, including a new editor and better integration tools. We&#8217;ll be running some ad campaigns in the beginning of this year to spread the word.</p>
<p>With all the work we do, we also realized that we can improve communication. We&#8217;d like to contribute more to open source, blog more about our process, and make it more obvious when we launch new features. Overall, we want our customers to get to know each person in the team.</p>
<h3>Keep in touch</h3>
<p>We have some aggressive, but realistic goals set for ourselves, which means awesome things to come for you. To get the lastest, make sure to follow our blogs and Twitter accounts:</p>
<p><strong>Follow us on Twitter</strong> at <a href="http://twitter.com/wildbit">@wildbit</a>, <a href="http://twitter.com/postmarkapp">@postmarkapp</a>, <a href="http://twitter.com/beanstalkapp">@beanstalkapp</a>, and <a href="http://twitter.com/newsberry">@newsberry</a>.</p>
<p><strong>Subscribe to our blogs</strong> for <a href="http://wildbit.com/blog/">Wildbit</a>, <a href="http://blog.beanstalkapp.com/">Beanstalk</a>, and <a href="http://blog.newsberry.com/">Newsberry</a>. Postmark&#8217;s will be coming soon.</p>
<p>Thanks so much for making 2009 a great year. We&#8217;ll make sure 2010 is even better.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2010/01/04/a-great-2009-and-even-better-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Free Plan Experiment: 2.5%  increase in paid plans</title>
		<link>http://wildbit.com/blog/2009/12/03/free-plan-experiment-2-5-increase-in-paid-plans/</link>
		<comments>http://wildbit.com/blog/2009/12/03/free-plan-experiment-2-5-increase-in-paid-plans/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 18:45:10 +0000</pubDate>
		<dc:creator>Natalie Nagele</dc:creator>
				<category><![CDATA[Business Strategy]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=837</guid>
		<description><![CDATA[Brief Re-introduction
Some of you may have noticed that I was once running the customer side of Newsberry, our email marketing service. In the last few months, my role at Wildbit has shifted a bit to incorporate more &#8220;business development-esque&#8221; tasks such as tracking our site performance and customer interaction across all of our products. My [...]]]></description>
			<content:encoded><![CDATA[<h3>Brief Re-introduction</h3>
<p>Some of you may have noticed that I was once running the customer side of <a href="http://newsberry.com">Newsberry</a>, our email marketing service. In the last few months, my role at Wildbit has shifted a bit to incorporate more &#8220;business development-esque&#8221; tasks such as tracking our site performance and customer interaction across all of our products. My kickoff post is on an experiment we ran to see if we could increase our conversion rates. </p>
<h3>The Free Plan Experiment</h3>
<p>We&#8217;ve always really loved the fact that we can give some form of our products away for free, so people can try them and see how they work. That said, as any product company, we&#8217;re always looking to increase our conversions from free to paid plans. We recently did an experiment (on a small scale) using a few different pricing pages to see if we could convert some more people to purchase a paid plan.</p>
<p>We set out to answer two questions:</p>
<ul>
<li>Do people only sign up for free plans, and if given no free plan option, would they sign up at all?</li>
<li>Do people sign up for a free plan because it is easy and available, but are just as inclined to jump into a paying plan if given enough information and incentive? These people, would sign up for a paying plan even if no free option existed.</li>
</ul>
<h3> Setting up the Experiment </h3>
<p>Our design team came up with two pages. The first was similar to what was already in place, offering up the free plan right next to all the paying plan options.</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2009/12/pricing-b.jpg" alt="Pricing A" title="Pricing A" /></p>
<p>The second page took out the free plan from the plan options matrix, and offered it at the bottom. This way, displaying it as more of a trial option, not a full feature plan.</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2009/12/pricing-a.jpg" alt="Pricing B" title="Pricing B" /></p>
<p>For both pages we wanted to make sure that we provided enough of the relevant information that a person needs when choosing to sign up for a service. We listed the major features, making sure to highlight those that are only offered for the paid plans. We also highlight one of our biggest strengths (based on what customers have identified) which is the other services we integrate with. </p>
<p>We ran the free plan page for 8 weeks, and then the new pricing page for another 8 weeks. We tracked:</p>
<ul>
<li>Total Signups to Beanstalk</li>
<li>Total Signups to a Paid Plan (and to a free plan)</li>
<li>Upgrades from the free plan</li>
<li>Total traffic to the site (to make sure inconsistent traffic didn&#8217;t skew results)</li>
</ul>
<h3> Results </h3>
<p>Well, before we took on this little experiment, we did some reading on other apps, and it seems like most found that this type of move had positive results on revenue. So, when we set out, we assumed the same. Happily, the results were better than we could have expected. </p>
<p><strong>Most importantly, our conversion rate of Total Signups to Paid Plans went from 9.9% to 12.4%! Here are some more stats:</strong></p>
<ul>
<li>Total signups to Beanstalk decreased about 2%</li>
<li>Total signups to a paid plan increased 54%</li>
<li>Traffic remained consistent throughout the 16 weeks</li>
<li>Upgrades increased about 7%</li>
</ul>
<p>Now, there is a lot of ways to look at this data, but I think every conclusion will be the same: People will pay right at the beginning given the right incentive and enough information. The free plans, for most people, are just an easy way to sign up, maybe so they don&#8217;t have to commit and think too much about making a decision.</p>
<p>That said, the decrease in signups is not something to overlook. We have a few theories on this, one being that those 2% were probably not interested in ever using the site or paying. They may have just wanted to check us out, and when the free plan wasn&#8217;t so obvious, they left. Another is that people may have honestly not seen the free plan option, and went to a competitor where one was available.</p>
<h3> Conclusion </h3>
<p>We will be keeping our new pricing page. The short term plan is to continue to edit it, providing more helpful information on the product to help make the decision . Long term, we&#8217;ll continue to monitor the results to see if any changes occur. We&#8217;re by no means scientists, so we&#8217;ll just keep watching and adjusting as we go. We have also discussed doing more A/B testing, so we could test in the same timeframe. That could probably decrease the variance, but we&#8217;re pretty happy with the environment from these results. </p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/12/03/free-plan-experiment-2-5-increase-in-paid-plans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Postmark is almost here!</title>
		<link>http://wildbit.com/blog/2009/12/03/postmark-is-almost-here/</link>
		<comments>http://wildbit.com/blog/2009/12/03/postmark-is-almost-here/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 15:37:33 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Postmark]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=887</guid>
		<description><![CDATA[In the past few weeks we've been actively using <a href="http://postmarkapp.com">Postmark</a> with Beanstalk as well as a few other initial beta testers. The service is working extremely well and we're very close to opening it up. At the moment, Beanstalk alone is sending over 20,000 emails per day through the API. We're also happy to have libraries for Rails, Python, PHP, and Magento almost ready to go.]]></description>
			<content:encoded><![CDATA[<p>In the past few weeks we&#8217;ve been actively using <a href="http://postmarkapp.com">Postmark</a> with Beanstalk as well as a few other initial beta testers. The service is working extremely well and we&#8217;re very close to opening it up. At the moment, Beanstalk alone is sending over 20,000 emails per day through the API. We&#8217;re also happy to have libraries for Rails, Python, PHP, and Magento almost ready to go.</p>
<p>As we iron out some of the UI bugs and polish the features we&#8217;ll start inviting more people. For now, here is a quick screen shot of the server overview page.</p>
<p><img src="http://wildbit.com/blog/wp-content/uploads/2009/12/pm-bs-screenshot.jpg" alt="Postmark Server Overview" title="Postmark Server Overview" /></p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/12/03/postmark-is-almost-here/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fundamental Business Books</title>
		<link>http://wildbit.com/blog/2009/11/30/fundamental-business-books/</link>
		<comments>http://wildbit.com/blog/2009/11/30/fundamental-business-books/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 16:51:27 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=856</guid>
		<description><![CDATA[No, I am not talking about the latest book about marketing on Twitter or Facebook. I'm talking about fundamental business books. The books and authors that our dads read like Peter Drucker, Alfred Sloan, Napolean Hill and Dale Carnegie.]]></description>
			<content:encoded><![CDATA[<p>No, I am not talking about the latest book about marketing on Twitter or Facebook. I&#8217;m talking about fundamental business books. The books and authors that our dads read like Peter Drucker, Alfred Sloan, Napolean Hill and Dale Carnegie.</p>
<p>Sure, they&#8217;re old news and management styles have changed, but even now I reread them to remember their brilliance and to remind myself how much I still have to learn when it comes to managing people, leading a team, and getting yourself organized. While most of these books are focused on large companies, the concepts and principles can still be applied to even a small company like Wildbit.</p>
<p><strong>Here are some good ones I recommend:</strong></p>
<ul>
<li><a href="http://www.amazon.com/Practice-Management-Peter-F-Drucker/dp/0060878975/">The Practice of Management</a> by Peter Drucker.</li>
<li><a href="http://www.amazon.com/Think-Grow-Rich-Napoleon-Hill/dp/0449214923">Think and Grow Rich</a> by Napoleon Hill.</li>
<li><a href="http://www.amazon.com/How-Win-Friends-Influence-People/dp/0671027034/">How to Win Friends &#038; Influence People</a> by Dale Carnegie.</li>
<li><a href="http://www.amazon.com/Sharks-Without-Being-Eaten-Alive/dp/0449911489">Swim with the Sharks Without Being Eaten Alive</a> by Harvey Mackay.</li>
<li><a href="http://www.amazon.com/Innovation-Entrepreneurship-Peter-F-Drucker/dp/0887306187">Innovation and Entrepreneurship</a> by Peter Drucker.</li>
<li><a href="http://www.amazon.com/Years-General-Motors-Alfred-Sloan/dp/0385042353/">My Years with General Motors</a> by Alfred P. Sloan.</li>
</ul>
<p>What books are on your list?</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/11/30/fundamental-business-books/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Postmark: Email delivery in the cloud</title>
		<link>http://wildbit.com/blog/2009/10/21/announcing-postmark-email-delivery-in-the-cloud/</link>
		<comments>http://wildbit.com/blog/2009/10/21/announcing-postmark-email-delivery-in-the-cloud/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 17:55:47 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=821</guid>
		<description><![CDATA[We're really excited to announce <a href="http://postmarkapp.com">Postmark</a>, our next product, which has been an idea for a long time at Wildbit, but just coming to fruition now. Postmark is an email delivery service for web applications. As with Beanstalk and Newsberry, we aimed at solving our own problems first. Read on to learn more.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re really excited to announce <a href="http://postmarkapp.com">Postmark</a>, our next product, which has been an idea for a long time at Wildbit, but just coming to fruition now. Postmark is an email delivery service for web applications. As with <a href="http://beanstalkapp.com">Beanstalk</a> and <a href="http://newsberry.com">Newsberry</a>, we aimed at solving our own problems first. Read on to learn more.</p>
<h3>So, what is Postmark?</h3>
<p>Postmark helps web apps deliver email effectively, while giving you the tools to monitor and track delivery. It&#8217;s specifically focused on transactional email, so messages like welcome emails, invoices, comment notifications or any other emails that are triggered by an action from your site. Through our existing knowledge of managing large volume email in Newsberry, <a href="http://postmarkapp.com">Postmark</a> provides a more reliable solution to make sure your emails are received. If there are issues with delivery, Postmark gives you the tools to correct the problems and improve.</p>
<p><img title="Postmark Screenshot" src="http://wildbit.com/blog/wp-content/uploads/2009/10/postmark.png" alt="Postmark Screenshot" /></p>
<p>The service works entirely through a robust API (xml and json), which you can use to replace your existing SMTP code. From the start, we&#8217;ll have code samples for many languages (Rails, .NET, etc) to make integration as easy as possible. We&#8217;re also looking for help from our readers, so if you have experience with PHP, Java, ColdFusion or want to write plugins for other apps, please <a href="mailto:info@wildbit.com">email us</a>.</p>
<h3>Why is this better than a local mail server?</h3>
<p>If you&#8217;ve ever built or launched a web application, you know that setting up an SMTP server is pretty easy. The basic steps can have you up in running in minutes. What you may not know, is that doing it correctly is complex. For instance:</p>
<ul>
<li>Setting up authentication like SPF and DomainKeys</li>
<li>The importance of Reverse DNS</li>
<li>Managing connection and message rules for each ISP</li>
<li>Applying for ISP whitelisting and feedback loops</li>
<li>Accreditation with ISIPP and ReturnPath</li>
<li>Tracking bounces and spam complaints</li>
<li>Understanding volume over time</li>
</ul>
<p>The list is longer, but hopefully you get the point. With <a href="http://postmarkapp.com">Postmark</a>, we bring these benefits directly to your application so those important emails get to your customers or members. If delivery problems arise, you&#8217;ll know right away.</p>
<h3>When will it be ready?</h3>
<p>We&#8217;re in the final stages of launching our private beta. The beta will be available to a small group, then opened up more as we learn and tune the product. If you are interested, please <a href="http://postmarkapp.com">sign up for the beta</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/10/21/announcing-postmark-email-delivery-in-the-cloud/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>The value of free(mium)</title>
		<link>http://wildbit.com/blog/2009/09/21/the-value-of-freemium/</link>
		<comments>http://wildbit.com/blog/2009/09/21/the-value-of-freemium/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 15:00:52 +0000</pubDate>
		<dc:creator>Chris Nagele</dc:creator>
				<category><![CDATA[Business Strategy]]></category>

		<guid isPermaLink="false">http://wildbit.com/blog/?p=813</guid>
		<description><![CDATA[There has been a lot of talk recently regarding the freemium business model. A recent article in Entrepreneur interviewed Jason Fried and I regarding our experience. While Jason and I seemed to have different views, the value of free is basically the same. If you have something of value, people will pay for it. In this post, I'll share some interesting numbers from Beanstalk showing that free doesn't always work.]]></description>
			<content:encoded><![CDATA[<p>There has been a lot of talk recently regarding the freemium business model. A recent <a href="http://www.entrepreneur.com/technology/newsandtrends/article203264.html">article in Entrepreneur</a> interviewed Jason Fried and I regarding our experience. While Jason and I seemed to have different views, the value of free is basically the same. If you have something of value, people will pay for it. </p>
<h3>Where free succeeds</h3>
<p>Where the &#8220;free&#8221; model plays an important role is not the fact that it is free, but the ability to prove your product. The &#8220;try before you buy&#8221; concept is not new. By offering a free plan, you give your potential customers a risk-free opportunity to try your product. This can go a very long way compared to &#8220;30 day trials&#8221; or a well designed marketing site. </p>
<p>The other area where free has value is word of mouth. The majority of our accounts are free, while this puts load on our system and support, it also creates a loyal base of people who rave about our product. We&#8217;ve seen many examples of freelance developers on free plans who then convince their clients to use Beanstalk on a paid plan. </p>
<p>Finally, the last point of value is about creating movement. When we started Beanstalk, our goal was to convince more people to use source control and improve their process. It amazed us how many people still did not have proper source control for their projects. By offering free plans, each account is a small triumph for our goal. The &#8220;greater good&#8221; value eventually brings back more value to the business as more people use source control.</p>
<h3>Where free fails</h3>
<p>With all that said, there are definitely cases where free does not work. I was doing a quick review of our stats and noticed something interesting. We get a nice number of visitors from <a href="http://stackoverflow.com">stackoverflow.com</a>. One post in particular sends the most traffic, which is titled <a href="http://stackoverflow.com/questions/59791/free-online-private-svn-repositories">Free Online Private SVN repositories</a>. Here are some stats for a given period:</p>
<ul>
<li>Visitors: 2,617</li>
<li>Free sign ups: 728</li>
<li>Paid upgrades: 6</li>
</ul>
<p>By breaking these numbers down into conversion rates we see some interesting results. First, the conversion rate from visitor to sign up is huge, <strong>almost 28%</strong>. The conversion from sign up to paid on the other hand is awful, <strong>only 0.8%</strong>. </p>
<p><strong>What does this tell us?</strong> It&#8217;s pretty obvious,<em> people who are looking for free will most likely not pay in the long run anyway</em>. If we don&#8217;t offer enough resources at the free level, they will probably just go somewhere else. Knowing this, it helps focus attention on the people who are looking for value and willing to pay for it and service them as best as possible.</p>
<h3>Learning from the numbers</h3>
<p>We are just beginning to understand the details and still have a lot to learn. We&#8217;ll continue to review results and study conversions to help make our products more profitable. In the long run, this helps us grow our business and expand our offering for our customers. We&#8217;ll be sure to write the results here as well.</p>
<p>Do you run a web product? We&#8217;d love to hear your results as well. Please share in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://wildbit.com/blog/2009/09/21/the-value-of-freemium/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
 
