<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Blog Posts From Jive Talks Tagged With developers</title>
    <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog</link>
    <description>Updates and insights from Jive Software's management team</description>
    <pubDate>Tue, 07 Aug 2007 14:31:51 GMT</pubDate>
    <generator>Jive SBS 3.0.8 (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2007-08-07T14:31:51Z</dc:date>
    <item>
      <title>Feature M&amp;#38;M's</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2007/08/07/feature-m38ms</link>
      <description>&lt;!-- [DocumentBodyStart:95f4886f-b0b2-43cc-8417-e5a76b5a839e] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;&lt;div class="teaser"&gt;Once a month the entire company gets together (beer and snacks provided) for a brainstorming session that we call Blue Sky. This month we broke into several groups and brainstormed small but tasty features for Clearspace. &lt;strong&gt;Hmm... what else is small and tasty?&lt;/strong&gt; &lt;strong&gt;M&amp;amp;M's of course.&lt;/strong&gt; Hence, the idea of feature M&amp;amp;M's was born and one of them quickly made it into the product. Check it out in &lt;a class="jive-link-external-small" href="http://www.jivesoftware.com/blog/2007/08/03/clearspace-14-released/"&gt;Clearspace 1.4&lt;/a&gt; by visiting someone's profile and you'll see a list of other people who have similar profiles.

Why brainstorm this topic? It's often the little features that make a product special. On the other hand, it can be pretty difficult to get enough attention for the individual features to make it into the roadmap. Each of the ideas has been written onto a piece of paper (in the appropriate shape of course) and then put into a special bowl.&lt;/div&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.igniterealtime.org/blog/wp-content/uploads/2007/08/mm_bowl-1.jpg"&gt;&lt;img src="http://www.igniterealtime.org/blog/wp-content/uploads/2007/08/mm_bowl-1.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Whenever an engineer has a little time they can grab an M&amp;amp;M (no cherry picking), then attach it to the M&amp;amp;M board and implement it. Here is a shot of the M&amp;amp;M board just after installation:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.igniterealtime.org/blog/wp-content/uploads/2007/08/mm_board-1.jpg"&gt;&lt;img src="http://www.igniterealtime.org/blog/wp-content/uploads/2007/08/mm_board-1.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:95f4886f-b0b2-43cc-8417-e5a76b5a839e] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">clearspace</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <pubDate>Tue, 07 Aug 2007 14:32:24 GMT</pubDate>
      <author>greg@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2007/08/07/feature-m38ms</guid>
      <dc:date>2007-08-07T14:32:24Z</dc:date>
      <clearspace:dateToText>2 years, 3 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/feature-m38ms</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1190</wfw:commentRss>
    </item>
    <item>
      <title>The Release Train</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2007/08/01/the-release-train</link>
      <description>&lt;!-- [DocumentBodyStart:22272abf-750c-41d4-a63e-935294ac5f87] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;Back in April, I &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/blog/2007/04/22/on-the-release-train/"&gt;blogged&lt;/a&gt; about how we were adopting a release train model for our Open Source projects. Since then, we've rolled out the same process to our commercial products Clearspace and Jive Forums. The release train is a fairly fundamental departure from how we've done releases in the past, so we wanted to provide more details about exactly how it works.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Why did we make a switch in how we build our software? There were many motivating factors, but the general theme is "move as fast as possible with high quality". For end users of our products, the key thing to know is that there will be a &lt;strong&gt;new release every three weeks&lt;/strong&gt;. Each version contains bug fixes and new features and we're committed to maintaining high quality for every release (no more rushed bug fixes a week after a release). The graphic below illustrates how this process works:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.igniterealtime.org/blog/wp-content/uploads/2007/07/train.png"&gt;&lt;img src="http://www.igniterealtime.org/blog/wp-content/uploads/2007/07/train.png"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Each release (from top to bottom of the graphic) takes a total of nine weeks: three weeks of planning, three weeks of development, and three weeks of QA. All three processes run in parallel, which leads to the three week release cycle.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Answers to common questions:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q: Do we expect customers to upgrade every three weeks?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A: No, that's unreasonable in most environments. We've made it as easy to do upgrades as possible, and we hope you'll upgrade at least once per quarter to take advantage of all the great changes. When you do upgrade, the release train process will help ensure you're on high quality code.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q: How will version numbers work?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A: Each release will get a minor version number: 1.5, 1.6., 1.7, etc. Major version numbers will change approximately once per year.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Q: How will you develop major new features that take more than three weeks?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A: Good question. No model is perfect and we're already working on new features that will take more than one train cycle to fully finish. In those cases, we're breaking the projects into milestones and using code branches as necessary.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Other Release Train Fun&lt;/strong&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The release&amp;nbsp; train has had a deeper cultural impact than just being a way that we engineer our software. The marketing team now times a lot of their work on the train, and even our major happy hours are now on the three week cycle. Late afternoon of every third Friday, we gather the company for a demo of the new features and then adjourn for partying.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Time will tell how well this new process works, but we're excited about it and the results so far are promising.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:22272abf-750c-41d4-a63e-935294ac5f87] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">clearspace</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">planet-jabber</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <pubDate>Wed, 01 Aug 2007 21:18:48 GMT</pubDate>
      <author>matt@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2007/08/01/the-release-train</guid>
      <dc:date>2007-08-01T21:18:48Z</dc:date>
      <clearspace:dateToText>2 years, 3 months ago</clearspace:dateToText>
      <clearspace:replyCount>12</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/the-release-train</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1188</wfw:commentRss>
    </item>
    <item>
      <title>Wiki syntax challenges</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2007/01/19/wiki-syntax-challenges</link>
      <description>&lt;!-- [DocumentBodyStart:963cc363-8a9b-4a3b-aac1-ca8a527bca54] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;Out of all the things that I've had a hand working on for Clearspace (and that's a lot) the one that I've found to be the most challenging and frustrating to implement would have to be the new wiki syntax support. As many of you are aware wiki syntax is a very useful (and fast) way to markup text to create things like lists, tables, links and styles without having to type html. We looked at a variety of &lt;a class="jive-link-external-small" href="http://www.wikimatrix.org/"&gt;existing wiki markup syntaxes&lt;/a&gt; and decided on a syntax that was as common as possible. It's very fast to use once you've know the syntax - and potentially a deal breaker to new users who don't want or have the time to learn the syntax no matter how simple it may be. Thus in Clearspace we decided it would be best to allow documents to be created in one of two ways - using a graphical editor (IE or Firefox) or a plain text editor with preview functionality.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jivesoftware.com/blog/wp-content/uploads/2007/01/create.thumbnail.png"&gt;&lt;img src="http://jivesoftware.com/blog/wp-content/uploads/2007/01/create.thumbnail.png"/&gt;&lt;/a&gt;&lt;span&gt;[existing wiki markup syntaxes|&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://jivesoftware.com/blog/wp-content/uploads/2007/01/create.png" target="_blank"&gt;http://jivesoftware.com/blog/wp-content/uploads/2007/01/create.png&lt;/a&gt;&lt;span&gt;]&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Since users will have the ability to switch between the two editors we needed a way to convert the html content generated from the GUI editor into the wiki syntax supported by the plain text editor and vice versa. It was this requirement that proved to be the source of many frustrating hours stepping through code trying to isolate yet another bug.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Not surprisingly we couldn't find an open source wiki syntax implementation that met all of the requirements so we had to roll our own. Our existing rendering solution found in Jive Forums proved not to be up to the task so we had to design one from scratch to meet the new requirements. Before that though we had to evaluate and test a variety of html parsers to facilitate the conversion from the html syntax generated from the GUI editor back into the wiki syntax. We settled on a flexible and extremely fast &lt;a class="jive-link-external-small" href="http://wiki.opensymphony.com/display/SM/SiteMesh+3+Roadmap"&gt;parser&lt;/a&gt; from the open source &lt;a class="jive-link-external-small" href="http://www.opensymphony.com/sitemesh/"&gt;Sitemesh&lt;/a&gt; project which we modified slightly to suit the requirements. Spending the time to research and choose the right tools proved to be a life saver - it allowed us to handle the "wikification" of the html in a very clean manner.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Once the tools were chosen we created the API for the new render system and started writing the implementation. As you can see from the following code the general use case is fairly straightforward for generating html from the stored wikified text:&lt;/p&gt;&lt;p&gt;&lt;pre class="jive-noformat-content"&gt;RenderManager rManager = jiveContext.getRenderManager();
String htmlText = rManager.render(doc, RenderType.DOCUMENT_BODY, wikifiedText);&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;Going the other way from html to wiki text requires a bit more work but is also fairly straightforward:&lt;/p&gt;&lt;p&gt;&lt;pre class="jive-noformat-content"&gt;RenderStrategy strategy = new RenderStrategy(
RenderTarget.TARGET_PLAIN_TEXT, RenderStrategy.RENDER_ALL);
RenderManager rManager = jiveContext.getRenderManager();
String wikifiedText = rManager.render(doc,
RenderType.DOCUMENT_BODY, strategy, htmlText);&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;Getting it all right though required a lot of time and a large number of test cases to work out the bugs. Without these test cases I'm sure some of the more subtle bugs that cropped up would never have been caught. I'm very proud of the outcome of all this work - it's going to be a great feature as well as the basis of quite a bit of new functionality in future releases of Clearspace.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:963cc363-8a9b-4a3b-aac1-ca8a527bca54] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">clearspace</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">clearspace</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">communities</category>
      <pubDate>Fri, 19 Jan 2007 16:26:04 GMT</pubDate>
      <author>bruce@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2007/01/19/wiki-syntax-challenges</guid>
      <dc:date>2007-01-19T16:26:04Z</dc:date>
      <clearspace:dateToText>2 years, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>6</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/wiki-syntax-challenges</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1127</wfw:commentRss>
    </item>
    <item>
      <title>Plugin Support, Finally</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/12/19/plugin-support-finally</link>
      <description>&lt;!-- [DocumentBodyStart:02241b29-4ff9-44c2-ae72-1d3f74701a5d] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;Now that we've added support for plugins to Clearspace and the next version of Jive Forums, it's hard to believe it took us so long to add such a useful and powerful feature. The basic idea behind plugins is to dynamically extend the functionality of the application without having to modify the core source code. For example, our &lt;a class="jive-link-external-small" href="http://www.jivesoftware.com/support/services.jsp"&gt;professional services team&lt;/a&gt; will use plugins to build custom functionality for clients that is easily portable between different product releases. Plugins will also be used to deliver features that are only useful to a portion of our customers, like Salesforce integration.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Plugins have been &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/projects/wildfire/plugins.jsp"&gt;very successful&lt;/a&gt; in Wildfire and our friends from Atlassian has tons of &lt;a class="jive-link-external-small" href="http://www.atlassian.com/software/confluence/plugins.jsp"&gt;cool plugins&lt;/a&gt; in their products. We borrowed a lot of ideas from Wildfire plugins (see the &lt;a class="jive-link-external-small" href="http://www.igniterealtime.org/builds/wildfire/docs/latest/documentation/plugin-dev-guide.html"&gt;developer guide&lt;/a&gt;) in order to create the system in Clearspace and Jive Forums. Of course there are some unique twists as well. For example, if you install a plugin on one node of a Clearspace cluster, the plugin will get automatically pushed to all the other nodes. Developers will also appreciate the fact that plugins can easily override any page or action in the application, which makes some very deep customizations quite easy. Plugins are installed and managed from the admin console:&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jivesoftware.com/blog/wp-content/uploads/2006/12/pluginadmin.thumbnail.png"&gt;&lt;img src="http://jivesoftware.com/blog/wp-content/uploads/2006/12/pluginadmin.thumbnail.png"/&gt;&lt;/a&gt;&lt;span&gt;[developer guide|&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://jivesoftware.com/blog/wp-content/uploads/2006/12/pluginadmin.png" target="_blank"&gt;http://jivesoftware.com/blog/wp-content/uploads/2006/12/pluginadmin.png&lt;/a&gt;&lt;span&gt;|pluginadmin.png]&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For the launch of Clearspace, we wanted a plugin that would be a great example of what the framework allows. So, we created the WebDAV plugin. &lt;a class="jive-link-external-small" href="http://en.wikipedia.org/wiki/WebDAV"&gt;WebDAV&lt;/a&gt; is a useful protocol for publishing and accessing documents. For example, you can access content through WebDAV using Windows&amp;nbsp; Explorer or OS X (just like a shared drive):&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-web-view.thumbnail.png"&gt;&lt;img src="http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-web-view.thumbnail.png"/&gt;&lt;/a&gt;&lt;span&gt;[WebDAV|&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-web-view.png" target="_blank"&gt;http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-web-view.png&lt;/a&gt;&lt;span&gt;|clearspace-web-view.png] &lt;/span&gt;&lt;a href="http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-webdav-view.thumbnail.png"&gt;&lt;img src="http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-webdav-view.thumbnail.png"/&gt;&lt;/a&gt;&lt;span&gt;[WebDAV|&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-webdav-view.png" target="_blank"&gt;http://jivesoftware.com/blog/wp-content/uploads/2006/12/clearspace-webdav-view.png&lt;/a&gt;&lt;span&gt;|clearspace-webdav-view.png]&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For now, the WebDAVplugin provides read-only access to the latest version of documents. In a future version, we'll add write support as well. I'm really looking forward to all the interesting plugins that our engineering team and community members put together!&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:02241b29-4ff9-44c2-ae72-1d3f74701a5d] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">clearspace</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <pubDate>Tue, 19 Dec 2006 17:21:52 GMT</pubDate>
      <author>matt@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/12/19/plugin-support-finally</guid>
      <dc:date>2006-12-19T17:21:52Z</dc:date>
      <clearspace:dateToText>2 years, 11 months ago</clearspace:dateToText>
      <clearspace:replyCount>6</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/plugin-support-finally</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1117</wfw:commentRss>
    </item>
    <item>
      <title>Tips for Surviving Interruptions</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/09/20/tips-for-surviving-interruptions</link>
      <description>&lt;!-- [DocumentBodyStart:3b6f0ea2-ffb7-4b19-9afa-6e67d9c9512b] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;Sometimes it can feel tough to get any actual work done at the office in between meetings, the deluge of email, and people interrupting to ask questions. The work done by software engineers requires concentration over long periods of time. Any engineer knows what it's like to be "in the zone" -- where your surroundings melt away and you're able to crank on code highly efficiently. The bad news is that "the zone" is a delicate state of mind. A co-worker's annoying cell-phone ringtone, an Outlook email alert, or someone stopping by your desk will snap you right out of productivity. Joel (from Joel on software) estimates that it &lt;a class="jive-link-external-small" href="http://www.joelonsoftware.com/articles/fog0000000068.html"&gt;takes about 15 minutes&lt;/a&gt; to achieve full concentration after an interruption. Factor in a typical engineer's salary, and the dollars of lost productivity add up quickly. In fact, some estimates peg the cost of interruptions in the workplace at &lt;a class="jive-link-external-small" href="http://www.kmworld.com/Articles/ReadArticle.aspx?CategoryID=72&amp;amp;ArticleID=14543"&gt;588 billion dollars per year&lt;/a&gt;.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tips for Surviving Interruptions&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;&lt;strong&gt;Realize you're part of the problem&lt;/strong&gt;. Most people say "I hate being interrupted" but will turn to their co-worker anytime they have a quick question. By being respectful of others' time and minimizing the interruptions that you initiate, you'll help foster a culture in your workplace that will allow you to work more efficiently. Other ways to be a good citizen in the office include setting your cellphone to vibrate, listening to music with headphones instead of speakers (seems obvious?), and not laughing out loud at jokes only you can see.&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;&lt;strong&gt;Create an office environment that's quiet and that minimizes visual distractions&lt;/strong&gt;. At Jive, we use system furniture with tall glass partitions. This keeps the office feeling light and airy, but helps cut down on noise. If your office is noisy and you can't do anything about it, try headphones. &lt;br/&gt;&amp;nbsp; &lt;br/&gt; &lt;a href="http://static.flickr.com/90/248520050_fe6e18535c_m.jpg"&gt;&lt;img src="http://static.flickr.com/90/248520050_fe6e18535c_m.jpg"/&gt;&lt;/a&gt;&lt;span&gt;[588 billion dollars per year|&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://www.flickr.com/photos/50884898@N00/248520050/" target="_blank"&gt;http://www.flickr.com/photos/50884898@N00/248520050/&lt;/a&gt;&lt;span&gt;|Photo Sharing]&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;&lt;strong&gt;Use the best communication medium&lt;/strong&gt;. Interrupting someone in person or by phone is the most intrusive. It forces the other person to focus their full attention on you. Everybody hates email and it just doesn't work for questions that need a quick answer. So, use instant messaging (IM). It's fast but also much less intrusive compared to other options. This is non-intuitive to some, who figure that instant messaging will only increase interruptions. We've found that IM may slightly increase the raw number of interruptions, but answering an IM is much better than having to answer a question in person since you can usually do so with only partial attention and at your own speed. IM's are also typically short and to the point (unlike email). IM is especially effective when combined with good presence management (more on that below).&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;&lt;strong&gt;Optimize your time&lt;/strong&gt;. Do you really need to attend all those meetings? A good rule of thumb -- if the meeting can be held without you, you shouldn't be there. At Jive, we try to schedule all meetings that include engineers for the mornings (close to lunch time) so that afternoons are left open for focused work. We also make meetings as short as possible and have very few regularly scheduled meetings (instead only meeting when necessary). It's also helpful to block out time to get work done. For example, schedule an hour or more in your calendar to work on a tough problem, then politely communicate to your co-workers that you're heads-down.&lt;/p&gt;&lt;/li&gt;&lt;li level="1" type="ul"&gt;&lt;p&gt;&lt;strong&gt;Use on-line presence information&lt;/strong&gt;. Communicating to co-workers when it's ok and not ok to be interrupted is critical. We've integrated our IM presence with our phone system using &lt;a class="jive-link-external-small" href="http://www.jivesoftware.org/asterisk-im"&gt;Asterisk-IM&lt;/a&gt;, so that we can see whenever somebody is on the phone. We've&amp;nbsp; also built a culture where people are reluctant to interrupt when they see someone's presence set to "Do Not Disturb" (DND). Although most IM clients will automatically toggle between "available" and "away" based on activity on your computer, be diligent about setting more complete presence information such as "Running errands, back at 2:30 PM".&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The tips above include both technology and non-technology fixes to interruptions. Both are required to really mitigate the problem and there's no silver bullet. However, I'm a big believer that presence and instant messaging can make a big impact. What if your computer noticed you working in your IDE (programming environment) and automatically helped protect against interruptions by setting your presence and supressing non-urgent requests until you were finished? We're working on lots of interesting ideas like these.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;How did I manage to actually get this blog post written? Headphones and the DND presence setting in &lt;a class="jive-link-external-small" href="http://www.jivesoftware.org/spark"&gt;Spark&lt;/a&gt;, of course!&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:3b6f0ea2-ffb7-4b19-9afa-6e67d9c9512b] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">planet-jabber</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">eim</category>
      <pubDate>Wed, 20 Sep 2006 19:25:34 GMT</pubDate>
      <author>matt@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/09/20/tips-for-surviving-interruptions</guid>
      <dc:date>2006-09-20T19:25:34Z</dc:date>
      <clearspace:dateToText>3 years, 2 months ago</clearspace:dateToText>
      <clearspace:replyCount>4</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/tips-for-surviving-interruptions</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1238</wfw:commentRss>
    </item>
    <item>
      <title>The Playa Community</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/09/08/the-playa-community</link>
      <description>&lt;!-- [DocumentBodyStart:b16ec869-653f-4424-96df-35985336de51] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;This is my first week back in the &lt;a class="jive-link-external-small" href="http://maps.google.com/maps?q=317+SW+Alder+St,+Portland,+Oregon,+97204&amp;amp;iwloc=A&amp;amp;hl=en"&gt;office&lt;/a&gt; after attending my first &lt;a class="jive-link-external-small" href="http://www.burningman.com/"&gt;Burning Man Festival&lt;/a&gt;.&amp;nbsp; My wife and I found it to be a powerful and inspiring experience. It's jaw-dropping to &lt;a class="jive-link-external-small" href="http://www.flickr.com/photos/16782603@N00/tags/burningman/"&gt;witness&lt;/a&gt; the amount of boundless engineering and &lt;a class="jive-link-external-small" href="http://player.rambla.be/player.php?user=jaga&amp;amp;type=video&amp;amp;fname=media/burning_man/13-uchronia&amp;amp;qtver=7.04&amp;amp;vlc=0&amp;amp;size=720x432"&gt;creativity&lt;/a&gt; that people pour massive amounts of energy, time and money bringing to life for a week's time. The desert rockets from barren to the third most populous Nevada &lt;a class="jive-link-external-small" href="http://bmearth.burningman.com/"&gt;city&lt;/a&gt;, instantaneously. This year, 40,000 people came with no money or agenda to gather in the ancient lake bed.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;It was interesting that when stripped of routine daily responsibility, how people assumed natural roles, like leaders, followers, chefs, or handimen. Even more impactful was how perfectly everything worked with 40,000 people self-managing themselves. Sorta like a real-life tag clouds. The experience did reinforce for me that communities can work amazingly well when given an open, clear space, full authority to manage themselves and when they have a powerful way to reward each other.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;On another note, it was surprising to me to read &lt;a class="jive-link-external-small" href="http://money.cnn.com/2006/08/31/technology/BurningManTalent_futureboy.biz2/index.htm"&gt;the article that Dave sent to me&lt;/a&gt; about the Google guys using Burning Man as a recruiting event. At Burning Man everyone abandons their work ego. No one wants to talk or think about their career. Everyone is equal. For example, I learned later that one guy I drank coffee with had won three Academy Awards including work on Star Wars but when we talked he just shared which art he liked so far. I think it was the massive sculpture of the &lt;a class="jive-link-external-small" href="http://flickr.com/photos/myelectricsheep/234359997/"&gt;man on his hands and knees&lt;/a&gt; with gasoline pouring from his eyes into a pool of flame. That is, if I remember correctly.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://img322.imageshack.us/img322/2290/samnhogvr3.jpg"&gt;&lt;img src="http://img322.imageshack.us/img322/2290/samnhogvr3.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:b16ec869-653f-4424-96df-35985336de51] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">planet-jabber</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">fun</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">eim</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">communities</category>
      <pubDate>Fri, 08 Sep 2006 12:54:12 GMT</pubDate>
      <author>communities@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/09/08/the-playa-community</guid>
      <dc:date>2006-09-08T12:54:12Z</dc:date>
      <clearspace:dateToText>3 years, 2 months ago</clearspace:dateToText>
      <clearspace:replyCount>5</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/the-playa-community</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1093</wfw:commentRss>
    </item>
    <item>
      <title>Vanderzand It</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/08/06/vanderzand-it</link>
      <description>&lt;!-- [DocumentBodyStart:75195176-4d6e-42f4-a86c-de38a6d77350] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;Over the past couple months, anytime we want to make a GUI prettier and more functional, you'll hear someone say "Vanderzand it!".&amp;nbsp; The phrase was coined in honor of Jive's first dedicated web designer/developer (with the unique last name of Vanderzanden). You'll find the latest Vanderzanding below -- a "before" picture of the Wildfire 3.0 setup tool and an "after" shot of the upcoming Wildfire 3.1 setup tool.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;lt;a class="tt-flickr" href="&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://www.flickr.com/photos/50884898@N00/209075750/" target="_blank"&gt;http://www.flickr.com/photos/50884898@N00/209075750/&lt;/a&gt;&lt;span&gt;"&amp;gt;&amp;lt;img width="240" height="134" border="0" alt="before" src="&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://static.flickr.com/84/209075750_27cba50842_m.jpg" target="_blank"&gt;http://static.flickr.com/84/209075750_27cba50842_m.jpg&lt;/a&gt;&lt;span&gt;" /&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;lt;a class="tt-flickr" href="&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://www.flickr.com/photos/50884898@N00/209075751/" target="_blank"&gt;http://www.flickr.com/photos/50884898@N00/209075751/&lt;/a&gt;&lt;span&gt;"&amp;gt;&amp;lt;img width="240" height="139" border="0" alt="after" src="&lt;/span&gt;&lt;a class="jive-link-external-small" href="http://static.flickr.com/87/209075751_c770910dbc_m.jpg" target="_blank"&gt;http://static.flickr.com/87/209075751_c770910dbc_m.jpg&lt;/a&gt;&lt;span&gt;" /&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;A good-looking user interface has intrinsic value. It forms the first impression of an application -- before they determine the depth of features or stability, users form an opinion based on looks. The UI also plays a long-term role since users want to keep coming back to apps that are both beautiful and functional.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Look out for a lot more Vanderzanding in Wildfire in the near future.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:75195176-4d6e-42f4-a86c-de38a6d77350] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">eim</category>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">general</category>
      <pubDate>Sun, 06 Aug 2006 22:27:00 GMT</pubDate>
      <author>matt@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/08/06/vanderzand-it</guid>
      <dc:date>2006-08-06T22:27:00Z</dc:date>
      <clearspace:dateToText>3 years, 3 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/vanderzand-it</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1199</wfw:commentRss>
    </item>
    <item>
      <title>How We Manage Our Website</title>
      <link>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/03/17/how-we-manage-our-website</link>
      <description>&lt;!-- [DocumentBodyStart:354adca4-9231-4a3b-a7f0-f027afc11700] --&gt;&lt;div class='jive-rendered-content'&gt;&lt;p&gt;We recently relaunched &lt;a class="jive-link-external-small" href="http://www.jivesoftware.com/"&gt;our website&lt;/a&gt; and with that we changed how we manage content on the site. Before, the website code (Java classes, JSP pages, HTML, images, CSS, etc) was checked in to source control and usually one developer (sadly, me) would have to make all kinds of changes. It was a really inefficient process and not sustainable the bigger we grew. We needed a system where non-engineers could edit the pages, see their changes easily and deploy the changes to the site without my help.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;First, we use an open source template framework called &lt;a class="jive-link-external-small" href="http://www.opensymphony.com/sitemesh/"&gt;Sitemesh&lt;/a&gt;. This allows our guys to write very basic HTML and not worry about things like the header, footer, sidebar, etc. Sitemesh takes the output of a JSP page (or anything that serves up HTML), parses it then merges it with a template.&amp;nbsp; You can have any number of templates in the system, all mapped to patterns or various other things. This is a pretty simplified description of Sitemesh -- overall, it's a very powerful and extremely simple framework. As I mentioned, it'll handle anything that produces HTML so it's compatible with PHP, Perl, ASP, etc. We use it in &lt;a class="jive-link-external-small" href="http://www.jivesoftware.com/products/"&gt;our products&lt;/a&gt; to make templating easy and to keep the JSP pages clean.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Next, I created a &lt;a class="jive-link-external-small" href="http://svnbook.red-bean.com/en/1.0/svn-book.html#svn-ch-5-sect-2.1"&gt;Subversion hook&lt;/a&gt; to do automatic deployments of our content when a check-in is received. (I got the idea for this from an &lt;a class="jive-link-external-small" href="http://arstechnica.com/articles/columns/linux/linux-20050406.ars"&gt;Ars Technica article&lt;/a&gt;.) &lt;a class="jive-link-external-small" href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; is our source control and a hook is a way to execute a script based on an event like a check-in, update, etc. Local to the jivesoftware.com machine is a checkout of our site code. From there, the hook script calls an Ant target to deploy the latest JSP/HTML code. I only deploy JSP or HTML in this step and not Java classes or config files. Doing updates to the core source is less frequent and ususally requires a server restart.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Finally, we have a checkout of the site project on our internal file server (Linux + Samba). I also use that checkout as the web root for an internal staging site. Since changes are picked up automatically, our guys can edit the files on the file server then reload the page immediately in their browser. After they make their changes, code is checked in and automatically deployed.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:354adca4-9231-4a3b-a7f0-f027afc11700] --&gt;</description>
      <category domain="http://www.jivesoftware.com/jivespace/community/jivetalks/blog/tags">developers</category>
      <pubDate>Fri, 17 Mar 2006 13:57:50 GMT</pubDate>
      <author>communities@jivesoftware.com</author>
      <guid>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/2006/03/17/how-we-manage-our-website</guid>
      <dc:date>2006-03-17T13:57:50Z</dc:date>
      <clearspace:dateToText>3 years, 8 months ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
      <wfw:comment>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/comment/how-we-manage-our-website</wfw:comment>
      <wfw:commentRss>http://www.jivesoftware.com/jivespace/community/jivetalks/blog/feeds/comments?blogPost=1046</wfw:commentRss>
    </item>
  </channel>
</rss>

