<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Flowdock</title>
	
	<link>http://blog.flowdock.com</link>
	<description />
	<lastBuildDate>Fri, 04 May 2012 16:37:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Nodeta" /><feedburner:info uri="nodeta" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How To Make A Scrum/Kanban/Whatever Magnet Out Of A Champagne Bottle</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/_q-bogAJAoY/</link>
		<comments>http://blog.flowdock.com/2012/05/04/how-to-make-a-scrumkanbanwhatever-magnet-out-of-a-champagne-bottle/#comments</comments>
		<pubDate>Fri, 04 May 2012 16:37:38 +0000</pubDate>
		<dc:creator>Mikael Roos</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[magnet]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2503</guid>
		<description><![CDATA[These days at Flowdock we&#8217;re using a light, modified Kanban process to handle our everyday work. Previously, we&#8217;ve also had a lot of experience with Scrum. There are also some other strange words that try to guarantee the excellence of your software team. What all of them have in common is whiteboards and magnets. Usually [...]]]></description>
			<content:encoded><![CDATA[<p>These days at Flowdock we&#8217;re using a light, modified Kanban process to handle our everyday work. Previously, we&#8217;ve also had a lot of experience with Scrum. There are also some other strange words that try to guarantee the excellence of your software team. What all of them have in common is <strong>whiteboards</strong> and <strong>magnets</strong>. Usually you need about four identical magnets for yourself to signify which tasks you are undertaking on that particular day. </p>

<p>We like champagne. It&#8217;s really a no-brainer.</p>

<h2>Here&#8217;s How You Do It!</h2>

<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/05/how_to_make_a_scrum_magnet.gif" alt="" title="How To Make A Scrum Magnet" width="500" height="500" class="alignnone size-full wp-image-2514" /></p>

<p>It also goes great on a fridge! Everyone wants an agile fridge!</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/_q-bogAJAoY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/05/04/how-to-make-a-scrumkanbanwhatever-magnet-out-of-a-champagne-bottle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/05/04/how-to-make-a-scrumkanbanwhatever-magnet-out-of-a-champagne-bottle/</feedburner:origLink></item>
		<item>
		<title>Get To Know A Cool Flowdock Customer – Grand Cru Games</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/1KuBLb5CJKU/</link>
		<comments>http://blog.flowdock.com/2012/04/24/get-to-know-a-cool-flowdock-customer-grand-cru-games/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 14:32:24 +0000</pubDate>
		<dc:creator>Mikael Roos</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[customer]]></category>
		<category><![CDATA[grandcru]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2486</guid>
		<description><![CDATA[Meet Grand Cru, founded in 2011 by six Finnish game industry veterans, they are a Helsinki based team of game creators. They say they have one direction: to revolutionize mobile and social gaming. In their quest they have found Flowdock to be an essential tool. Creative director Harri Granholm says that with Flowdock, &#8220;we can [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/04/thecru.jpg" alt="" title="The Grand Cru" width="500" height="316" class="alignnone size-full" /></p>

<p>Meet <a href="http://www.grandcrugames.com/">Grand Cru</a>, founded in 2011 by six Finnish game industry veterans, they are a Helsinki based team of game creators. They say they have one direction: to revolutionize mobile and social gaming. </p>

<p>In their quest they have found Flowdock to be an essential tool. Creative director Harri Granholm says that with Flowdock, &#8220;we can work tightly together, but at the same time everyone can concentrate on their tasks without any unnecessary interruptions&#8221;.</p>

<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/04/supernauts.jpg" alt="" title="The Grand Cru" width="500" height="316" class="alignnone size-full" /></p>

<p>The Cru&#8217;s new upcoming game, the <a href="https://www.supernauts.com/">Supernauts</a> lets you create your superhero alter ego online. As a social game, the game is naturally best when played together, so it supports real-time multiplayer on a massive scale. </p>

<p>The Cru team is made up of mobile gaming and virtual world veterans combined with fresh design and other talent. That makes Flowdock a great fit:</p>

<blockquote>
  <p>We have noticed that Flowdock works well for the Cru as it has similarities with IRC which is a familiar tool for many of us. Many features, such as embedding images in a conversation and the integration with Pivotal Tracker, are essential to our work. In addition, our graphic designers are constantly sharing the material they are working on through Flowdock.</p>
</blockquote>

<p>The Cru is also <a href="http://www.smartrecruiters.com/GrandCruOy/">hiring</a>.</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/1KuBLb5CJKU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/04/24/get-to-know-a-cool-flowdock-customer-grand-cru-games/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/04/24/get-to-know-a-cool-flowdock-customer-grand-cru-games/</feedburner:origLink></item>
		<item>
		<title>Cap Deploy Multiple Node Versions</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/1vaR3UYWjRI/</link>
		<comments>http://blog.flowdock.com/2012/04/11/how-to-use-chef-and-capistrano-to-deploy-multiple-node-versions/#comments</comments>
		<pubDate>Wed, 11 Apr 2012 14:23:29 +0000</pubDate>
		<dc:creator>Ville Lautanala</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[chef]]></category>
		<category><![CDATA[nodejs]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2432</guid>
		<description><![CDATA[At Flowdock, we have currently four different Node.js apps. Worst case scenario: they all could require a different Node version. This blog post explains how to use chef and capistrano to deploy multiple Node.js versions. TL;DR: Check out our deployment resources and enjoy multiple Node.js version bliss. Chef Recipe for Node Chef is used at [...]]]></description>
			<content:encoded><![CDATA[<p>At Flowdock, we have currently four different Node.js apps. Worst case scenario: they all could require a different Node version. This blog post explains how to use <a href="http://opscode.com/chef">chef</a> and <a href="https://github.com/capistrano/capistrano">capistrano</a> to deploy multiple <a href="http://nodejs.org/">Node.js</a> versions.</p>

<p><strong>TL;DR</strong>: Check out our <a href="https://github.com/flowdock/capistrano-node">deployment</a> <a href="https://github.com/flowdock/nodejs-cookbook">resources</a> and enjoy multiple Node.js version bliss.</p>

<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/04/how-to-use-chef-and-capistrano-to-deploy-multiple-Node-js-versions.png" alt="" title="How to se chef and capistrano to deploy multiple Node.js versions" width="539" height="450" class="alignnone size-full wp-image-2468" /></p>

<h2>Chef Recipe for Node</h2>

<p>Chef is used at Flowdock to configure servers. Naturally we wanted to use it also for managing our Node versions.</p>

<p>We ended up with having a recipe for compiling Node packages and uploading them to Amazon S3 and another recipe to download the correct binaries. If you want to see all the gory details, we&#8217;ve published our <a href="https://github.com/flowdock/nodejs-cookbook">Node.js recipes</a>.</p>

<p>As an end result, we can have a machine with all necessary Node versions set up in practically no time and applications can choose Node versions with little $PATH mangling.</p>

<h2>Capistrano scripts for Node</h2>

<p>Capistrano has proven itself and, above all, there&#8217;s an awesome <a href="https://www.flowdock.com/help/capistrano">Flowdock integration</a> for it. There probably are Node-based alternatives, but we didn&#8217;t feel bold enough to try them out.</p>

<p>To avoid any hubbub during deploy, each deploy should use the Node version defined in <code>package.json</code>. This allows us to try out new version of Node without any changes in system configuration. Also, if the deployment is bad, we can always roll back to a working version.</p>

<p>To achieve this, <a href="https://github.com/flowdock/capistrano-node">our Capistrano script</a> reads the package.json definition, extracts Node version constraints and uses Gem::Requirement from rubygems to choose satisfying version candidate. During deployment node and npm binaries are symlinked to <code>$PROJECT/bin</code>.</p>

<h2>Keeping Node up and running</h2>

<p>Now that the basic environment is set up, we just need something to manage our Node services. Our boxes already have <a href="http://smarden.org/runit/">runit</a> for this task, so why not use it for our Node apps, too? You can even use <a href="http://ddollar.github.com/foreman/">foreman</a> to export the service definitions for you.</p>

<p>Here&#8217;s how a <code>runit</code> definition looks like for our Streaming API.</p>

<pre><code>#!/bin/sh
cd /home/florence/florence/current
exec chpst -u florence -e /home/florence/env sh script/run
</code></pre>

<p>This uses <a href="http://thedjbway.b0llix.net/daemontools/envdir.html">envdir</a> to configure environment variables. <code>script/run</code> is responsible for mangling the <code>$PATH</code> and other fine-tuning.</p>

<pre><code>#!/bin/sh
exec &amp;2&gt;1
export PATH=`pwd`/bin:$PATH
./node_modules/.bin/coffee app.coffee
</code></pre>

<p>Capistrano tasks are almost trivial.</p>

<pre><code>task :start, :roles =&gt; :app, :except =&gt; { :no_release =&gt; true } do
  run "sudo sv up florence"
end

task :stop, :roles =&gt; :app, :except =&gt; { :no_release =&gt; true } do
run "sudo sv down florence"
end

task :restart, :roles =&gt; :app, :except =&gt; { :no_release =&gt; true } do
  run "sudo sv term florence"
end
</code></pre>

<p>Of course, you can also use <a href="http://upstart.ubuntu.com/">upstart</a> or <a href="http://supervisord.org/">supervisord</a> if that suits you better.</p>

<h2>Added bonus – Continous Integration</h2>

<p>I&#8217;m lazy and haven&#8217;t managed to set up a setup for multiple Node versions on my personal development machine. To ensure that my changes will work when deployed, CI needs to use the same version of Node as in deployment.</p>

<p>To solve this, our Capistrano script has a local mode, which does the same symlinking stuff, but to a local directory. The CI script adds <code>./bin</code> to <code>$PATH</code> before starting the test suite.</p>

<h3>Conclusion</h3>

<p>Having flexible Node version management on deployment and CI has been a blast. We can even try out unstable versions without extra ops work.</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/1vaR3UYWjRI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/04/11/how-to-use-chef-and-capistrano-to-deploy-multiple-node-versions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/04/11/how-to-use-chef-and-capistrano-to-deploy-multiple-node-versions/</feedburner:origLink></item>
		<item>
		<title>Integrating Jenkins to Flowdock</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/ZIXH7apLIPk/</link>
		<comments>http://blog.flowdock.com/2012/04/03/integrating-jenkins-to-flowdock/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 12:33:56 +0000</pubDate>
		<dc:creator>Antti Pitkänen</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2389</guid>
		<description><![CDATA[Jenkins is a popular continuous integration system that runs on the Java platform. Up until now, you could only integrate Jenkins to your flow by setting up email notifications for builds. Thanks to the recently published Flowdock Push API, there&#8217;s no longer need to resort to just plain email notifications. We have embraced the world [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/03/jenkins.png" alt="Jenkins CI" title="Jenkins CI" class="alignnone size-full wp-image-2168" style="float: right; margin: 0 1em 1em 1.5em;" /></p>

<p><a href="http://jenkins-ci.org/">Jenkins</a> is a popular continuous integration system that runs on the Java platform. Up until now, you could only integrate Jenkins to your flow by setting up email notifications for builds. Thanks to the recently published <a href="https://www.flowdock.com/api/push">Flowdock Push API</a>, there&#8217;s no longer need to resort to just plain email notifications. We have embraced the world of Java and developed <a href="https://github.com/flowdock/jenkins-flowdock-plugin">jenkins-flowdock-plugin</a> to make integrating Jenkins to Flowdock easier and a more pleasant experience.</p>

<h2>Installing the plugin</h2>

<ul>
<li>Go to Manage Jenkins -> Manage Plugins -> Available</li>
<li>Find &#8220;Flowdock plugin&#8221; and install it</li>
<li>Restart Jenkins</li>
</ul>

<p>Now you can configure Flowdock notifications for any build by setting Post-build Actions:</p>

<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/04/jenkins_config.png" alt="Jenkins configuration for Flowdock" title="Jenkins configuration for Flowdock" class="alignnone size-full wp-image-2168" style="clear:both; display: block; margin: 0 1em 1em 1.5em;" /></p>

<p>And here&#8217;s a happy notification in your flow:</p>

<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/03/jenkins_notification.png" alt="Jenkins notification in Flowdock" title="Jenkins notification in Flowdock" class="alignnone size-full wp-image-2168" style="clear:both; display: block; margin: 0 1em 1em 1.5em;" /></p>

<h2>Fork your own notifier!</h2>

<p>We had some arguments about the notification message configuration and how to implement customizable notifications. Soon we figured out that there&#8217;s just no point in trying to do that. Why not publish <a href="https://github.com/flowdock/jenkins-flowdock-plugin">the plugin sources</a> and let the developers hack it? </p>

<p><a href="https://github.com/flowdock/jenkins-flowdock-plugin/fork_select">Forking the plugin</a> and implementing your own awesome notifications takes just a few minutes and is well worth the effort. The plugin classes already provide all the Push API features, so you can start customizing the notifications to your liking straight away.</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/ZIXH7apLIPk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/04/03/integrating-jenkins-to-flowdock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/04/03/integrating-jenkins-to-flowdock/</feedburner:origLink></item>
		<item>
		<title>Lean Startup: Flowdock’s Journey to Product/Market Fit</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/KjIen06adCo/</link>
		<comments>http://blog.flowdock.com/2012/03/30/lean-startup-flowdock-product-market-fit/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 00:34:12 +0000</pubDate>
		<dc:creator>Otto Hilska</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[lean startup]]></category>
		<category><![CDATA[product market fit]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2398</guid>
		<description><![CDATA[This year the Scan-Agile conference introduced a Lean Startup track with excellent talks by Brant Cooper, Stuart Eccles, Tuomas Rinta and Marc McNeill. I also got a chance to share some of my own experiences regarding Flowdock&#8217;s search for the mystical product/market fit, and we had an awesome discussion afterwards. Here are my slides with [...]]]></description>
			<content:encoded><![CDATA[<p>This year the <a href="http://scan-agile.org/">Scan-Agile</a> conference introduced a Lean Startup track with excellent talks by Brant Cooper, Stuart Eccles, Tuomas Rinta and Marc McNeill. I also got a chance to share some of my own experiences regarding Flowdock&#8217;s search for the mystical <strong>product/market fit</strong>, and we had an awesome discussion afterwards.</p>

<p>Here are my slides with some presenter notes included:</p>

<div style="width:425px" id="__ss_12181983"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/flowdock/lean-startup-flowdocks-journey-to-productmarket-fit" title="Lean Startup: Flowdock&#39;s Journey to Product-Market Fit" target="_blank">Lean Startup: Flowdock&#39;s Journey to Product-Market Fit</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/12181983" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> <div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/flowdock" target="_blank">Flowdock</a> </div> </div>

<p>Again, thank you Katja Zorina, Heimo Laukkanen &amp; others for organizing the event!</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/KjIen06adCo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/03/30/lean-startup-flowdock-product-market-fit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/03/30/lean-startup-flowdock-product-market-fit/</feedburner:origLink></item>
		<item>
		<title>The Advanced Guide To Automated E-Mail</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/hCxwWcs2uZ0/</link>
		<comments>http://blog.flowdock.com/2012/03/21/the-advanced-guide-to-automated-e-mail/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 16:18:27 +0000</pubDate>
		<dc:creator>Mikael Roos</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2347</guid>
		<description><![CDATA[Predictions have been told over the years about the downfall of e-mail, all of them nonsense. E-mail is a great messaging technology. Most importantly, SMTP is a push protocol making e-mail relatively real-time. That&#8217;s also why it&#8217;s been used for automated notifications since its birth. Automated e-mails can easily clutter your mailbox to the point [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/03/automated-email.png" alt="Automated Email" title="Automated Email" width="600" height="449" class="alignnone size-full wp-image-2363" /></p>

<p>Predictions have been told over the years about the downfall of e-mail, all of them nonsense. E-mail is a great messaging technology. Most importantly, SMTP is a push protocol making e-mail relatively real-time. That&#8217;s also why it&#8217;s been used for automated notifications since its birth. </p>

<p>Automated e-mails can easily clutter your mailbox to the point where you filter them out and start ignoring them. Flowdock is a great solution for this as it frees your own mailbox. Automated mails are much easier to process if the work is shared by a <strong>team</strong>. A shared pain is a lesser pain.</p>

<p>Another great side of e-mail is its ubiquity. Any old tinderbox of a web application has the ability to send notifications via e-mail. That means <strong>Flowdock can be integrated to almost any service</strong>.</p>

<h2>Get The Most Out Of Your E-Mail Integration</h2>

<p>Using e-mail with Flowdock gives you full control over what notifications should contain and when they should be sent and who should be addressed in particular. Here&#8217;s how.</p>

<h3>Create Logs With Tags</h3>

<p>It&#8217;s a great idea to pre-tag automated e-mails to create sensible logs. For example, our deployment notifications come tagged both with #deploy and the name of the deployed project (frontend, backend) and the environment (qa, staging, production).</p>

<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/03/capistrano-deploy-log.png" alt="Capistrano deploy log as automated e-mail notifications" title="Capistrano deploy log as automated e-mail notifications" width="521" height="220" class="alignnone size-full wp-image-2383" /></p>

<p>There are two ways to make this happen, you can either use a #hashtag in the subject, eg. &#8220;Deployed #frontend on #qa&#8221;, or you can add the tags prefixed with plus (+) signs into the e-mail address used for sending like this:</p>

<p><code>flowname+deploy+frontend+qa@organization.flowdock.com</code></p>

<h3>Log By User And Get Attention</h3>

<p>You can also tag by users. Lets say I wanted to easily see all deploys deployed by a certain someone, I could either use @username in the subject &#8220;Deployed #frontend on #qa by @mikael&#8221; or add the tag to the email address prefixed with a dot (.) like so</p>

<p><code>flowname+deploy+frontend+qa.mikael@organization.flowdock.com</code></p>

<p>So all strings prefixed with a plus sign after the flow name are stored as tags, and all prefixed with a dot are stored as user tags. You can also use the user tags to get someone&#8217;s attention. The @everyone tag can also be used and is also handy for important notifications that require everyone&#8217;s immediate attention.</p>

<h2>Real-World E-Mail Workflows</h2>

<p>Tags are a great way to filter important content that streams to your Flowdock flow. We recently showed <a href="http://blog.flowdock.com/2012/01/11/track-your-brand-with-flowdock/#feedback-lightweight">how we handle feedback using a lightweight process</a>.</p>

<p>In fact, we use e-mail integration with a bunch of services ourselves:</p>

<ul>
<li>Uservoice (feedback / feature requests)</li>
<li><a href="http://blog.flowdock.com/2012/01/11/track-your-brand-with-flowdock/#feedback-lightweight">Feedback (simple form in the app)</a></li>
<li><a href="https://www.flowdock.com/help/google_calendar">Google Calendar</a></li>
<li><a href="https://www.flowdock.com/help/nagios">Nagios (monitoring)</a></li>
<li><a href="https://www.flowdock.com/help/bamboo">Bamboo (continuous integration)</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/hCxwWcs2uZ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/03/21/the-advanced-guide-to-automated-e-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/03/21/the-advanced-guide-to-automated-e-mail/</feedburner:origLink></item>
		<item>
		<title>Flowdock API And Files</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/y8jV56hOeGY/</link>
		<comments>http://blog.flowdock.com/2012/03/19/flowdock-api-and-files/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 15:17:01 +0000</pubDate>
		<dc:creator>Antti Pitkänen</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2320</guid>
		<description><![CDATA[We are excited to present you yet another extension to our Flowdock APIs: uploading, listing and downloading files through the Flowdock REST API. Uploading a file The REST API supports two ways of attaching files: encoding them with Base64 in a JSON request or sending them as form data. The details of both approaches are [...]]]></description>
			<content:encoded><![CDATA[<p>We are excited to present you yet another extension to our Flowdock APIs: uploading, listing and downloading files through the <a href="https://www.flowdock.com/api/rest">Flowdock REST API</a>.</p>

<h2>Uploading a file</h2>

<p>The REST API supports two ways of attaching files: encoding them with Base64 in a JSON request or sending them as form data. The details of both approaches are described in the new <a href="https://www.flowdock.com/api/files">Files</a> page of the API documentation.</p>

<p>Here&#8217;s a quick <code>curl</code> example of using <code>multipart/form-data</code> to upload a file:</p>

<pre><code>curl -v -X POST -F "event=file" -F "content=@path/to/file.png" https://BASIC-AUTH@api.flowdock.com/flows/ORG/FLOW/messages
</code></pre>

<h2>Finding files</h2>

<p><a href="https://www.flowdock.com/api/messages">Messages</a> containing files can be fetched by filtering messages by the <code>file</code> event or the <code>:file</code> tag. The difference is that filtering by the <code>:file</code> tag will match any type of message that contains files, eg. team inbox messages with attachments. </p>

<p>For example, here&#8217;s how you would fetch the 10 latest files uploaded to your flow:</p>

<pre><code>GET https://BASIC-AUTH@api.flowdock.com/flows/ORG/FLOW/messages?event=file&amp;limit=10
</code></pre>

<h2>Downloading a file</h2>

<p>Once you&#8217;ve got some messages with files attached to them, you will probably want to download them for viewing as well. The REST API path of a file is stored in the <code>path</code> field of each attachment. For reference, see the file message section of <a href="https://www.flowdock.com/api/message-types#/file">Message Types</a> documentation.</p>

<p>The path can be used to download the file by appending it to the API URL <code>https://api.flowdock.com/</code>:</p>

<pre><code>GET https://BASIC-AUTH@api.flowdock.com/flows/ORG/FLOW/files/deadbeefdeadbeef/screenshot.png
</code></pre>

<p>That&#8217;s all for now, stay tuned for more API updates!</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/y8jV56hOeGY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/03/19/flowdock-api-and-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/03/19/flowdock-api-and-files/</feedburner:origLink></item>
		<item>
		<title>Songs Of Our Sprints Or How To Stop Coding For A Moment And Get Up</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/oprFVGvYXxY/</link>
		<comments>http://blog.flowdock.com/2012/03/02/songs-of-our-sprints-or-how-stop-coding-for-a-moment-and-get-up/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 16:07:22 +0000</pubDate>
		<dc:creator>Mikael Roos</dc:creator>
				<category><![CDATA[Flowdock]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2293</guid>
		<description><![CDATA[Each day, at 11:15 AM, we have a stand-up meeting lasting 5-10 minutes where we quickly go over our achievements or obstacles for the past day and explain our goals for the following day. To cue everyone to get ready, stand up and gather around for the meeting, a song is played from our office [...]]]></description>
			<content:encoded><![CDATA[<p>Each day, at 11:15 AM, we have a stand-up meeting lasting 5-10 minutes where we quickly go over our achievements or obstacles for the past day and explain our goals for the following day. To cue everyone to get ready, stand up and gather around for the meeting, <strong>a song is played</strong> from our office speakers.</p>

<p>A new song is picked every about two weeks (depending on the annoyance factor) by each team member on his turn. The requirements for a song:</p>

<ul>
<li>2-4 minutes long</li>
<li>must be found on Youtube</li>
</ul>

<p>We started the practice this fall and now we want to share them with you, so here is <a href="http://www.youtube.com/playlist?list=PL04B0441E0C37E6C5">a Youtube playlist</a>. Enjoy. :)</p>

<iframe width="560" height="315" src="http://www.youtube.com/embed/videoseries?list=PL04B0441E0C37E6C5&amp;hl=en_US" frameborder="0" allowfullscreen></iframe>

<h3>Booker T &amp; The M.G.&#8217;s &#8211; Green Onions</h3>

<p>Currently playing, is the smooth tunes of Booker T and his M.G.&#8217;s. It&#8217;s an uncommonly pleasant song, perhaps spurred by the incredible unpleasantness of the previous, short lived, song of the sprint: <a href="http://www.youtube.com/watch?v=yyMD92tsTLM">Witch Doctor by Cartoons</a>.</p>

<h3>Bob Marley &#8211; Get Up, Stand Up</h3>

<p>This oh-so-aptly titled Bob Marley song has lyrics that were just made for a sprint song!</p>

<h3>Dizzy Gillespie &#8211; Salt Peanuts</h3>

<p>A brilliant 1945 bebop tune with lyrics consisting entirely of the phrase &#8220;Salt Peanuts&#8221;. Dizzy played this particular version with Charlie Parker.</p>

<h3>M.A. Numminen &#8211; Yes Sir, Ich Kann Boogie</h3>

<p>A Finnish, German-language absurdist cover of the 1977 smash hit single by Baccara.</p>

<h3>Kari Tapio &#8211; Aaveratsastajat</h3>

<p>A Finnish cover of the legendary cowboy song: Riders In the Sky.</p>

<h3>Kojo &#8211; Nuku Pommiin</h3>

<p>The Finnish entry to the 1982 Eurovision Contest.</p>

<h3>Eero Raittinen &#8211; Rakkaudelta Näyttää Hitto Vie</h3>

<p>An ultra-naivist love ballad and Finnish cover of the Swedish entry to the 1968 Eurovision Contest</p>

<h3>Kikka &#8211; Apinamies</h3>

<p>No Comments.</p>

<h3>Hikawa Kiyoshi &#8211; Kiyoshi No Soran Bushi</h3>

<p>A charming Japanese fishing song by the prince of enka singing.</p>

<h3>Andy Suonsilmä – Karrelle Palanut Enkeli</h3>

<p>Oh dear.</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/oprFVGvYXxY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/03/02/songs-of-our-sprints-or-how-stop-coding-for-a-moment-and-get-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/03/02/songs-of-our-sprints-or-how-stop-coding-for-a-moment-and-get-up/</feedburner:origLink></item>
		<item>
		<title>GET The Message! (via API)</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/bBcknTjtTzQ/</link>
		<comments>http://blog.flowdock.com/2012/02/29/get-the-message-via-api/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 16:21:08 +0000</pubDate>
		<dc:creator>Mikael Roos</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[messages]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2261</guid>
		<description><![CDATA[That&#8217;s right, you can now GET messages. It is an obvious extension to the Flowdock API, the ability to fetch messages of a flow given certain filters. You can fetch up to or starting from a specific ID, filter by event or tags and so on. Read the docs ➝ A basic example of filter [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.flowdock.com/wp-content/uploads/2012/02/flowdock-messages-api.png" alt="" title="Flowdock messages API" width="200" height="181" class="alignnone size-full wp-image-2273" style="float: right; margin: 0 0 0 1em;" /></p>

<p>That&#8217;s right, you can now GET messages. It is an obvious extension to the <a href="https://www.flowdock.com/api">Flowdock API</a>, the ability to fetch messages of a flow given certain filters. You can fetch up to or starting from a specific ID, filter by event or tags and so on.</p>

<p><strong><a href="https://www.flowdock.com/api/messages#/list">Read the docs ➝</a></strong></p>

<p>A basic example of filter use:</p>

<pre><code>GET /messages?until_id=3456&amp;limit=20&amp;event=message
</code></pre>

<p>This request will get you 20 plain chat messages leading up to the message with ID 3456 (which will not be included).</p>

<h2>Searching With Tags</h2>

<p>The new API lets you also search messages by tags. Getting all the messages tagged with the tags #feedback and #todo is as simple as</p>

<pre><code>GET /messages?&amp;limit=20&amp;tags=feedback,todo
</code></pre>

<p>Tags are used to a lot of things internally in Flowdock. Filtering by tags gives you access to several features, such as fetching all the comments of a team inbox item with ID 12345</p>

<pre><code>GET /messages?&amp;limit=20&amp;tags=:influx:12345
</code></pre>

<p>or listing messages that contain links or files:</p>

<pre><code>GET /messages?&amp;limit=20&amp;tags=:url
GET /messages?&amp;limit=20&amp;tags=:file
</code></pre>

<p>Check out the <a href="https://www.flowdock.com/api/tags">tags documentation</a> for specifics.</p>

<h2>Message Types</h2>

<p>We started documenting the different <a href="https://www.flowdock.com/api/message-types">Message Types</a>. There&#8217;s still a lot to be done on that front. We haven&#8217;t covered much of the team inbox events in the docs and we are going to be changing some of the events&#8217; structure. </p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/bBcknTjtTzQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/02/29/get-the-message-via-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/02/29/get-the-message-via-api/</feedburner:origLink></item>
		<item>
		<title>Parse Tags And Links The Flowdock Way with Flowdock-Text</title>
		<link>http://feedproxy.google.com/~r/Nodeta/~3/NFMZNlP2s3U/</link>
		<comments>http://blog.flowdock.com/2012/02/23/parse-tags-and-links-the-flowdock-way-with-flowdock-text/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 16:02:52 +0000</pubDate>
		<dc:creator>Ville Ikonen</dc:creator>
				<category><![CDATA[Flowdock]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.flowdock.com/?p=2189</guid>
		<description><![CDATA[Along with the release of our brand new API, we also released the source of Flowdock-text, a JavaScript library for linkifying URLs and hashtags. Flowdock-text is built upon Twitter&#8217;s awesome twitter-text-js. In this post I&#8217;ll explain the rationale behind Flowdock-text, what changes we made to twitter-text-js and present some usage examples. Parsing URLs from text [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.flowdock.com/wp-content/uploads/2012/02/tags-and-links.jpg"><img src="http://blog.flowdock.com/wp-content/uploads/2012/02/tags-and-links.jpg" alt="" title="tags-and-links" width="283" height="263" class="alignnone size-full wp-image-2235" style="float: right; margin: 0 1em 1em 1.5em;"/></a>Along with the release of our <a href="https://www.flowdock.com/api">brand new API</a>, we also released the source of <a href="https://github.com/flowdock/flowdock-text">Flowdock-text</a>, a JavaScript library for linkifying URLs and hashtags. Flowdock-text is built upon Twitter&#8217;s awesome <a href="https://github.com/twitter/twitter-text-js">twitter-text-js</a>. In this post I&#8217;ll explain the rationale behind Flowdock-text, what changes we made to twitter-text-js and present some usage examples.</p>

<p>Parsing URLs from text is certainly no trivial task. We&#8217;ve had our problems in that front before. If it wasn&#8217;t unmatched parentheses being captured (like this <a href="http://www.example.com)">https://www.example.com)</a>, it might just have been a case of <a href="http://www.regular-expressions.info/catastrophic.html">catastrophic backtracking</a> on certain browsers. In any case, failing to properly turn URLs to links is something that is immediately obvious to the end user, and we wanted to get rid of that once and for all.</p>

<h2>Enter twitter-text</h2>

<p>Twitter-text knows how to turn URLs, hashtags, mentions and lists into HTML links from any string you give it. Also provided are methods to simply extract them into an array like so:</p>

<pre><code>&gt; twttr.txt.extractUrls("(like in this http://www.example.com)");
[ 'http://www.example.com' ]
&gt; Wow it works great!
SyntaxError: Unexpected identifier
</code></pre>

<p>The functionality was exactly what we needed. After all, we sort of do the same thing as Twitter in that regard: users enter plain text, we have to present it in a nice way.</p>

<p>Obviously the twitter-text library is built for the needs of Twitter, and some of its functionality wasn&#8217;t a very good fit for Flowdock. Some parts we didn&#8217;t need at all (for example list parsing) and some of it just didn&#8217;t quite work the way we wanted (parsing usernames), so we made some changes to meet our needs.</p>

<p>Unlike twitter-text-js, Flowdock-text allows dashes as a part of a hashtag. Also due to the use case with <a href="https://www.flowdock.com/help/github">Github issues</a> and <a href="https://www.flowdock.com/help/bamboo">Bamboo builds</a> Flowdock-text allows all-numeric hashtags.</p>

<p>Flowdock needs to match usernames from messages as well. Twitter-text-js provides methods for extracting and linkifying @-prefixed usernames, but due to the nature of Twitter usernames (which can include only alphanumeric characters and underscores) are inadequate for our needs. This lead to us using the same regexp in both hashtag extraction and username extraction.</p>

<p>We also added an option to extract usernames based on an optional whitelist. This is used internally in Flowdock to exclude non-existent @users from turning in to links. On top of that Flowdock-text provides a few new methods to help message processing. </p>

<h2>Usage examples</h2>

<p>Using Flowdock-text in your own client is very straightforward. The <a href="https://www.flowdock.com/api/flows">Flows resource</a> returns a list of users belonging to each flow, which can be passed as-is to Flowdock-text methods. In this simplified example, we&#8217;ll extract all tags from a new chat message before it is <a href="https://www.flowdock.com/api/messages">sent to Flowdock</a>. Provided is also a reference to <em>me-user</em>, to make sure that a special <code>:unread:</code> tag is not applied to that user.</p>

<pre><code>&gt; var users = [
  {nick: "Marty", id: 1, disabled: false},
  {nick: "Emmett", id: 2, disabled: false}
];
&gt; var me = users[0];
&gt; FlowdockText.parseTags("@anyone seen this: http://www.bigwaste.com/bttf/twin_pines_mall.shtml #cool", users, me);
[ 'cool', ':url', ':user:everyone', ':unread:2' ]
</code></pre>

<p>Some special tags get returned from <code>parseTags()</code>. Since the provided message contains a URL, the method returns a special <code>:url</code> tag. This allows more fine-grained message filtering in Flowdock <a href="https://flowdock.com/help/search">search</a>. Also since the message contained one of our special @everyone tags (which are @everyone, @everybody, @all, @anyone and @anybody), <code>:user:everyone</code> is also returned. Appropriate <code>:unread:</code> tags with user ids get returned too.</p>

<p>We also provide some helper methods:</p>

<pre><code>&gt; FlowdockText.mentionsUser("hey @Marty, when this baby reaches 88mph yada yada yada", me);
true
&gt; FlowdockText.mentionsAll("can @anyone help me?");
true
</code></pre>

<p>More examples can be found in the Flowdock-text <a href="https://github.com/flowdock/flowdock-text/blob/master/README.md">README</a>.</p>

<p>So there&#8217;s your short introduction to Flowdock-text. The source resides in <a href="https://github.com/flowdock/flowdock-text">Github</a>, feel free to poke around!</p>
<img src="http://feeds.feedburner.com/~r/Nodeta/~4/NFMZNlP2s3U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.flowdock.com/2012/02/23/parse-tags-and-links-the-flowdock-way-with-flowdock-text/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.flowdock.com/2012/02/23/parse-tags-and-links-the-flowdock-way-with-flowdock-text/</feedburner:origLink></item>
	</channel>
</rss>

