<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Draconis Software Blog</title>
	
	<link>http://www.dracoware.com/blog</link>
	<description>Interesting IT-related info, tips &amp; tricks you can really use</description>
	<pubDate>Tue, 27 Jan 2009 21:50:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<geo:lat>42.484545</geo:lat><geo:long>-71.15206</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/DraconisSoftwareBlog" type="application/rss+xml" /><feedburner:emailServiceId>DraconisSoftwareBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>Thanks for choosing to subscribe to the Draconis Software Blog. You're not done yet! Choose your feed on the right to subscribe.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Twitter: Firehose will be not be made public, available only to “small group of trusted partners”</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/CYtRg6HDwuo/</link>
		<comments>http://www.dracoware.com/blog/2009/01/27/twitter-firehose-will-be-not-be-made-public-available-only-to-small-group-of-trusted-partners/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 21:39:24 +0000</pubDate>
		<dc:creator>Costa Walcott</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=149</guid>
		<description><![CDATA[Ever since Twitter disabled access to their firehose last year, many users have been waiting with baited breath for its return.  The “firehose” refers to the stream of all public Twitter posts.  Currently, it’s only possible to get a small subset of all public posts, and many types of Twitter applications aren’t possible without access [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since Twitter disabled access to their firehose last year, many users have been waiting with baited breath for its return.  The “firehose” refers to the stream of all public Twitter posts.  Currently, it’s only possible to get a small subset of all public posts, and many types of Twitter applications aren’t possible without access to the firehose, such as real-time track and trend analysis.</p>
<p>For a time, Twitter planned to allow firehose access through a service called <a href="http://gnip.com">Gnip</a>, but in October stated that they would instead work on <a href="http://dev.twitter.com/2008/10/we-got-data.html">providing access themselves</a>.  Since then, details have been sparse on the timeline or methods for which access will be given.</p>
<p>Last week however, some more information has been quietly released by means of an <a href="http://apiwiki.twitter.com/FAQ#Whenwillthefirehosebeready">FAQ on the Twitter API website</a>.  Here’s the question and answer in full (emphasis theirs):</p>
<blockquote><p>When will the firehose be ready?</p>
<p>By late January, early February 2009. For at least Q1 2009, the &#8220;firehose&#8221; (the near-realtime stream of all public status updates on Twitter) will only be available to a small group of trusted partners. The firehose is a stream HTTP solution; a client connects to it and the stream begins, ceasing only when the client disconnects. Once we&#8217;re confident in the stability of the service, we&#8217;ll add partners on a case-by-case basis. We <em>may</em> allow a wider selection of clients to consume subsets of the public stream (that is, updates from a collection of user IDs or matching specific search terms). We <strong>do not</strong> intend to allow anonymous, unregulated public access to this stream for any number of legal, financial, and technical reasons.</p></blockquote>
<p>There’s a few pieces of new information here.  First, that some kind of beta group will be given firehose access within a few weeks, using HTTP streams.  This sounds similar to the solution provided by Gnip to their users.</p>
<p>Perhaps more important though is the news that a full public stream of the type previously provided will not be returning.  While providing subsets of the public stream could be useful for things like groups, without the full firehose it’s very difficult (if not impossible) to provide a feature like real-time tracking, which has been eagerly awaited.</p>
<p>The three pieces of rationale for not making the firehose public (“legal, financial, and technical”) each bring up additional questions in turn.  Legally, is there a difference between providing public tweets in a full stream and providing tweets publicly by user (which requires knowing the username ahead of time)?  Do the financial motivations refer to saving money on servers and bandwidth, or by making money in providing access for a fee?  And technically, are the existing solutions (such as HTTP streams or XMPP) insufficient for the task, and if so, how?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=CYtRg6HDwuo:FXl-zh5D2IU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=CYtRg6HDwuo:FXl-zh5D2IU:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=CYtRg6HDwuo:FXl-zh5D2IU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=CYtRg6HDwuo:FXl-zh5D2IU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=CYtRg6HDwuo:FXl-zh5D2IU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=CYtRg6HDwuo:FXl-zh5D2IU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=CYtRg6HDwuo:FXl-zh5D2IU:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/CYtRg6HDwuo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2009/01/27/twitter-firehose-will-be-not-be-made-public-available-only-to-small-group-of-trusted-partners/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2009/01/27/twitter-firehose-will-be-not-be-made-public-available-only-to-small-group-of-trusted-partners/</feedburner:origLink></item>
		<item>
		<title>Highlights from 37signals Live</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/Ifu0Ceq7Jz0/</link>
		<comments>http://www.dracoware.com/blog/2008/12/04/highlights-from-37signals-live/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 19:20:23 +0000</pubDate>
		<dc:creator>Costa Walcott</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=143</guid>
		<description><![CDATA[
Earlier this afternoon David Heinemeier Hansson and Jason Fried from 37signals did a live webcast in which they answered questions and talked about some of their upcoming projects.  They spoke about their upcoming book, plans for integrating across all their products, and how they feel about the iPhone and Android.
Architectural Changes
37signals has been trying out Amazon&#8217;s EC2.  Rather [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-144" style="border: 0; float: right;" title="37signalslive" src="http://www.dracoware.com/blog/wp-content/uploads/2008/12/37signalslive.jpg" alt="" width="323" height="87" /></p>
<p>Earlier this afternoon David Heinemeier Hansson and Jason Fried from <a href="http://www.37signals.com/" target="_self">37signals</a> did a live webcast in which they answered questions and talked about some of their upcoming projects.  They spoke about their upcoming book, plans for integrating across all their products, and how they feel about the iPhone and Android.</p>
<p><strong>Architectural Changes</strong></p>
<p>37signals has been trying out Amazon&#8217;s EC2.  Rather than implementing it across all their products (a big decision to make, and time consuming to implement) they&#8217;ve started by trying it out on <a href="http://www.tadalist.com/" target="_self">Tadalist</a>, which is their smallest and simplest product.  This exemplifies one of the methodologies they use: avoiding huge decisions by first trying small implementations.</p>
<p>They also did this with regards to translations.  Translating all 37signals products into multiple languages is a scary idea.  So instead, DHH tried translating only Basecamp to Danish, the other language he speaks.</p>
<p><strong>New Features and Designs</strong></p>
<p>One of the larger developments 37signals has been working on is a &#8220;37 ID&#8221;.  This is a global namespace across all of their products, in which users won&#8217;t have to login multiple times as they switch products.  It also will aid in product integration, which has been a common question among users.  In the past, they didn&#8217;t have a good way to determine which users were the same person across their products.  For example, they wouldn&#8217;t know if &#8220;dhh&#8221; on Basecamp was the same as &#8220;dhh&#8221; on Campfire.  It will also allow them to start selling their products in a suite, whereby customers could sign up for some or all of the products at once, perhaps with a bulk discount.  37 ID will be rolled out in phases, starting early next year.</p>
<p>37signals has also been working on redesigning the marketing of their sites, and has hired a new designer to work on the visual look-and-feel of their sites.  They&#8217;ve started with Highrise.  Below are a few screenshots I took of some of the designs they&#8217;ve been working with:</p>
<p><a href="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot1.jpg"></a><a href="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot1.jpg"><img class="aligncenter size-full wp-image-145" style="border: 0;" title="screenshot1" src="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot1.jpg" alt="" width="488" height="370" /></a><a href="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot2.jpg"><img class="aligncenter size-full wp-image-146" style="border: 0;" title="screenshot2" src="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot2.jpg" alt="" width="487" height="373" /></a><a href="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot3.jpg"><img class="aligncenter size-full wp-image-147" style="border: 0;" title="screenshot3" src="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot3.jpg" alt="" width="487" height="373" /></a><a href="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot4.jpg"><img class="aligncenter size-full wp-image-148" style="border: 0;" title="screenshot4" src="http://www.dracoware.com/blog/wp-content/uploads/2008/12/screenshot4.jpg" alt="" width="488" height="368" /></a> </p>
<p>The last picture is what they&#8217;re currently going with, and it should come out within the next week or two.</p>
<p><strong>Upcoming Book</strong></p>
<p>A few days ago 37signals <a href="http://www.37signals.com/svn/posts/1441-announcing-our-new-book-deal" target="_self">announced an upcoming book</a>, with the working title &#8220;Unconform&#8221;.  The announcement was sparse on details, but today they gave some more information on what to expect. Whereas their first book, the popular <a href="http://gettingreal.37signals.com/" target="_self">&#8220;Getting Real&#8221;</a>, focused on software development and engineering, &#8220;Unconform&#8221; is more about business: team structure, hiring, competition, and getting the word out.</p>
<p>One of the main themes of the book will be &#8220;small isn&#8217;t a stepping stone&#8221;. Companies should consider stopping at a small size, and not all businesses need to be massive to be successful.  DHH also described the book as pushing against the &#8220;lifestyle-business&#8221; idea, that small businesses like 37signals aren&#8217;t in the &#8220;real world&#8221;, or don&#8217;t have a &#8220;real business&#8221;.</p>
<p><strong>Mobile</strong></p>
<p>Jason and David got a few questions regarding their thoughts on the mobile environment, specifically the iPhone and Google&#8217;s G1 phone.  They stated that they&#8217;ve had an internal debate on whether or not to develop &#8220;official&#8221; iPhone apps, with the consensus being that they should work on making improvements to their API, and allow third parties to develop applications. They referred to the Twitter model of providing the best API they can, and letting developers work on creating clients on various platforms.</p>
<p>When asked his opinion about the G1 phone, Jason Fried described it as more of a &#8220;me-too&#8221; device, not having many truly new features like the iPhone.</p>
<p>For those who missed 37signals Live but would like to watch it, you can watch it on <a href="http://www.justin.tv/signals37" target="_self">Justin.tv</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Ifu0Ceq7Jz0:0mBkL87iiks:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Ifu0Ceq7Jz0:0mBkL87iiks:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Ifu0Ceq7Jz0:0mBkL87iiks:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=Ifu0Ceq7Jz0:0mBkL87iiks:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Ifu0Ceq7Jz0:0mBkL87iiks:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=Ifu0Ceq7Jz0:0mBkL87iiks:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Ifu0Ceq7Jz0:0mBkL87iiks:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/Ifu0Ceq7Jz0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/12/04/highlights-from-37signals-live/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/12/04/highlights-from-37signals-live/</feedburner:origLink></item>
		<item>
		<title>What We Do Here (And, We’re Looking for Work!)</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/Bu4iqVCcW6Q/</link>
		<comments>http://www.dracoware.com/blog/2008/12/02/what-we-do-here/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 18:41:54 +0000</pubDate>
		<dc:creator>Costa Walcott</dc:creator>
		
		<category><![CDATA[Draconis News]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=142</guid>
		<description><![CDATA[I&#8217;m not sure if all of you are aware of exactly what we do here at Draconis Software.  I thought now would be a good time to let everyone know, since we&#8217;ve got some availability for new work.
Here are the three main types of work we do, and why we do them:

Web (Rails, Grails, et [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not sure if all of you are aware of exactly what we do here at Draconis Software.  I thought now would be a good time to let everyone know, since we&#8217;ve got some availability for new work.</p>
<p>Here are the three main types of work we do, and why we do them:</p>
<ol>
<li><strong>Web (Rails, Grails, et al)</strong>: Our bread-and-butter remains in doing web development.  Despite the complexity that HTTP brings you when trying to build an application, there&#8217;s still something exciting about the dichotomies that web development brings: web framework and database, server-side and client-side, function and design.  And clearly web companies aren&#8217;t going away anytime soon.  For a while now (probably over a year) most of our clients have tended towards Rails, and it&#8217;s also our defacto suggestion for new clients.  Lately though, we&#8217;ve been doing a bit more work with <a href="http://www.dracoware.com/blog/2008/05/15/a-rails-developers-thoughts-on-using-grails/" target="_self">Grails</a>, which I think is becoming an exciting framework.  We&#8217;re also open to some of the older web technologies, like Java or PHP.</li>
<li><strong>Mobile (iPhone)</strong>: Our decision to branch into mobile development was influenced by one main factor: <a href="http://www.dracoware.com/blog/2007/08/28/application-development-on-the-iphone/" target="_self">we&#8217;re in love</a> with the iPhone!  Luckily, the iPhone is also a pretty good platform in which to develop, and many of the methodologies from web development can carry over.  Our most recent iPhone project was creating an <a href="http://blog.invotrak.com/2008/11/10/invotrak-on-the-iphone/" target="_self">iPhone interface for Invotrak</a>, which shows how web and mobile development can be bridged.</li>
<li><strong>New Things!</strong>: We pride ourselves on being able to tackle new technologies (see #2 above).  For example, as much as we love Rails, we&#8217;d jump at the chance to play more with one of the other Ruby web frameworks, like <a href="http://merbivore.com/" target="_blank">Merb</a>.  I don&#8217;t know what the Next Big Thing will be in a year or two, but I hope that we&#8217;ll be playing with it when the time comes!</li>
</ol>
<p>We don&#8217;t limit ourselves to any one type of client.  We&#8217;ve worked with public companies, pre-venture startups, individuals, and everything in between.</p>
<p>For anyone interested in talking to us, there&#8217;s plenty of ways to contact us, including <a href="http://dracoware.com/contact.php" target="_self">our website</a>, <a href="mailto:info@dracoware.com">email</a>, or just leave a comment on this post.</p>
<p>Also, I&#8217;m curious if anyone reading this has consulting firms of their own (and/or does freelancing)? Let us know in the comments!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Bu4iqVCcW6Q:ATBG7fgu2Pg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Bu4iqVCcW6Q:ATBG7fgu2Pg:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Bu4iqVCcW6Q:ATBG7fgu2Pg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=Bu4iqVCcW6Q:ATBG7fgu2Pg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Bu4iqVCcW6Q:ATBG7fgu2Pg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=Bu4iqVCcW6Q:ATBG7fgu2Pg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=Bu4iqVCcW6Q:ATBG7fgu2Pg:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/Bu4iqVCcW6Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/12/02/what-we-do-here/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/12/02/what-we-do-here/</feedburner:origLink></item>
		<item>
		<title>How Apple Can Support True Background Applications on the iPhone</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/28-lI9cSdf8/</link>
		<comments>http://www.dracoware.com/blog/2008/10/24/how-apple-can-support-true-background-applications-on-the-iphone/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 18:36:50 +0000</pubDate>
		<dc:creator>Costa Walcott</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=140</guid>
		<description><![CDATA[At the WWDC in June, Apple announced their Push Notifications system, which will give iPhone applications a way to display messages to the user even when their app isn&#8217;t running.  While this will give chat, microblogging and feed reading applications some semblance of running in the &#8220;background&#8221;, many users (including myself) haven&#8217;t been thrilled [...]]]></description>
			<content:encoded><![CDATA[<p>At the WWDC in June, Apple announced their Push Notifications system, which will give iPhone applications a way to display messages to the user even when their app isn&#8217;t running.  While this will give chat, microblogging and feed reading applications some semblance of running in the &#8220;background&#8221;, many users (including myself) haven&#8217;t been thrilled with this solution (and not just because it&#8217;s still not out yet!), as it doesn&#8217;t allow for cases like music streaming, or background location polling.</p>
<p>At the SDK event, Apple gave a number of reasons why they didn&#8217;t want to support true background processes for iPhone applications:</p>
<ol>
<li>Having lots of applications running could quickly use up the limited resources and battery on the iPhone, causing performance problems.</li>
<li>They didn&#8217;t want the user to have to worry about managing active programs with some kind of complicated &#8220;Task Manager&#8221; interface.</li>
<li>If applications could continue to run in the background without any visual cues to the user, it would be that much easier for apps to perform unintended/unrequested operations.</li>
</ol>
<p>I think there&#8217;s a way for the iPhone to provide better support for background applications, without breaking the requirements listed above.  Think about what happens when you&#8217;re on a call, and you tap the Home button.  You can launch applications, and pretty much do whatever you like while still on the call.  Here&#8217;s what this looks like:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-141" title="iPhone Background App" src="http://www.dracoware.com/blog/wp-content/uploads/2008/10/photo-1.jpg" alt="" width="320" height="480" /></p>
<p>You&#8217;re aware that you&#8217;re still on a call because of the bar at the top of the display, and you can tap to return to the call if you wish.  I think background applications could work the same way, and in so doing wouldn&#8217;t break any of Apple&#8217;s requirements:</p>
<ol>
<li>Only one app could be in the background at a time, so you wouldn&#8217;t have lots of apps hogging the resources of the phone.  Yes, you&#8217;d have another process using resources in addition to the foreground application, but it wouldn&#8217;t need to use any of the graphics framework, and in my experience the iPhone would be powerful enough to handle this kind of limited processing.</li>
<li>Nothing is hidden from the user.  They know exactly what&#8217;s happening in the background because they&#8217;re being told at the top of the screen, and can tap that bar to return to the app.  Another nice benefit here is that perhaps the application could customize what gets displayed in this line, so an app like Pandora could have the row say &#8220;Now Playing: Enter Sandman by Metallica&#8221;.</li>
<li>No Task Manager is necessary.  The way users interact with the background app is intuitive because background phone calls already work the same way.</li>
</ol>
<p>Of course, this isn&#8217;t a perfect solution since only one app is running in the background at once.  If you want something to run 100% of the time, then you&#8217;d never be able to run an additional background app on top of that. However, I think a system like this in addition to the Notifications framework solves most of the desired use cases for background apps: music playing/streaming, location polling, real-time text updates, and so on.</p>
<p>What do you think?  Would this kind of system solve the problems you have with background apps on the iPhone?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=28-lI9cSdf8:PSrJBTh5uYs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=28-lI9cSdf8:PSrJBTh5uYs:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=28-lI9cSdf8:PSrJBTh5uYs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=28-lI9cSdf8:PSrJBTh5uYs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=28-lI9cSdf8:PSrJBTh5uYs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=28-lI9cSdf8:PSrJBTh5uYs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=28-lI9cSdf8:PSrJBTh5uYs:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/28-lI9cSdf8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/10/24/how-apple-can-support-true-background-applications-on-the-iphone/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/10/24/how-apple-can-support-true-background-applications-on-the-iphone/</feedburner:origLink></item>
		<item>
		<title>From Gmail to MobileMe</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/ga1gw_W8Nkk/</link>
		<comments>http://www.dracoware.com/blog/2008/09/22/from-gmail-to-mobileme/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 14:57:53 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Emerging IT]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=139</guid>
		<description><![CDATA[When I purchased an iPhone 3G (upgrading from the first gen), I also purchased the companion MobileMe service, and I’ve been giving it a test run since.  At the time, I was hoping for a replacement to Google’s Gmail, but unfortunately, it’s not quite there yet.  I thought I’d take a few minutes to offer [...]]]></description>
			<content:encoded><![CDATA[<p>When I purchased an <a href="http://www.apple.com/iphone/">iPhone 3G</a> (upgrading from the first gen), I also purchased the companion <a href="http://www.apple.com/mobileme/">MobileMe</a> service, and I’ve been giving it a test run since.  At the time, I was hoping for a replacement to Google’s <a href="http://www.gmail.com">Gmail</a>, but unfortunately, it’s not quite there yet.  I thought I’d take a few minutes to offer some tips to the MobileMe Email team, as well as start a discussion on email services in general.</p>
<p><span id="more-139"></span>First, I thought I’d outline the reasons for an alternative to Gmail.  Let me preface this by making it clear that I love Gmail - it’s a great service, but one that has some inherently odd choices that make it less than ideal for an email-heavy user.  Some of Gmail’s most irksome quirks:</p>
<ul>
<li>No such thing as folders.  Instead, everything is tagged, which doesn’t lend itself well to being used inside my mail client</li>
<li>The “All Mail” special tag appearing in my mail client via IMAP, which appears as though I receive two of every email</li>
<li>Removes duplicates of messages, which means if I send a message to myself, it will never appear in my inbox (instead, it’s always in my Sent Messages tag)</li>
<li>Not completely reliable.</li>
</ul>
<p>In terms of reliability, it’s very important to me that the service is always available, and always fast.  I want to receive messages moments after they’re sent - not hours later.  When checking for messages from my other accounts (via POP), Google uses some heuristics to determine how often it should check for new messages.  Unfortunately, this often means it won’t check for an hour or so, which can be very annoying.</p>
<p>So, I’ve been on the lookout for a Gmail replacement for some time, and thought I had found it in Apple’s revamped MobileMe service.  When it was launched, it appeared that Apple was doing email right, but as I’ve learned from using the service first-hand, I’ve merely traded improvements in some areas, for problems in others.  For instance:</p>
<ul>
<li>It can’t check foreign email accounts.  This wasn’t a complete deal-breaker, as I have some clever auto-forward email recipes setup which largely solves this problem.</li>
<li>There’s no way to send mail as a non-MobileMe email account.  You can create multiple “personalities” that give you different @me.com addresses, but there’s no way to send as a non @me.com address.  This is a huge problem, and means I can’t stop using Gmail until this is added to MobileMe.</li>
<li>It drives me crazy that the web interface often refreshes the entire page.  If I leave it open in a Safari tab for a little while, then return, it seems to refresh.  That’s annoying.</li>
<li>Another annoyance factor is that whenever I return to the email interface (or whenever the page refreshes), all of my folders are expanded.  I have a LOT of email, and I keep them fairly well organized into many different folders.  I’d like the system to remember what folders I had kept closed.</li>
</ul>
<p>I should mention that I am a big fan of the push email functionality I get with MobileMe (and is a major reason why I’m still using the service).  Also, the email web interface is clean and intuitive (and matches the Mail desktop app, which scores major points with me).  Compared to the other major email providers (Gmail, and Yahoo Mail, for instance), the MobileMe email interface wins hands-down.</p>
<p>Apple’s MobileMe is a fantastic service, but I just can’t switch yet.  So many different great features are all aligning to make for a killer email product, but the annoyances I’ve outlined are show-stoppers for me (and why I can’t dump Gmail just yet).  I’m more than happy to pay the MobileMe subscription service if Apple could just get these last few details smoothed out.</p>
<p>What’s your take?  Have you considered switching from Gmail to MobileMe?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=ga1gw_W8Nkk:fSZdQPN_Ds0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=ga1gw_W8Nkk:fSZdQPN_Ds0:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=ga1gw_W8Nkk:fSZdQPN_Ds0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=ga1gw_W8Nkk:fSZdQPN_Ds0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=ga1gw_W8Nkk:fSZdQPN_Ds0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=ga1gw_W8Nkk:fSZdQPN_Ds0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=ga1gw_W8Nkk:fSZdQPN_Ds0:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/ga1gw_W8Nkk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/09/22/from-gmail-to-mobileme/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/09/22/from-gmail-to-mobileme/</feedburner:origLink></item>
		<item>
		<title>Internet radio as the killer iPhone app</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/hr4kd6Qdyyc/</link>
		<comments>http://www.dracoware.com/blog/2008/08/06/internet-radio-as-the-killer-iphone-app/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 20:12:09 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Emerging IT]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[music]]></category>

		<category><![CDATA[pandora]]></category>

		<category><![CDATA[radio]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=138</guid>
		<description><![CDATA[Internet radio on mobile devices has the potential to become a killer app.  Coupled with the speed of 3G, the iPhone is poised to become a strong competitor to an unexpected industry: satellite radio.]]></description>
			<content:encoded><![CDATA[<p>Since Apple launched the App Store for iPhone OS 2.0, I&#8217;ve been keeping my eyes out for what might be the next killer app for the <a href="http://www.apple.com/iphone/">iPhone</a>.  I&#8217;ve often thought the iPhone would be a game-changer in the mobile environment, allowing people to think of their phones in a new way.  These mobile devices are no longer simply a phone with added-on Internet access, but a complete communications and personal computer system.  With games and other non-communication-oriented apps the iPhone has achieved much towards this end, but there&#8217;s one additional category that has the potential to be a game changer in an unexpected way: internet radio.</p>
<p>The <a href="http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStore.woa/wa/browserRedirect?url=itms%253A%252F%252Fax.phobos.apple.com.edgesuite.net%252FWebObjects%252FMZStore.woa%252Fwa%252FviewSoftware%253Fid%253D284035177%2526mt%253D8">Pandora</a> and <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=281913144&amp;mt=8">AOL Radio</a> apps are designed to allow you to stream radio to your iPhone or iPod Touch.  The introduction of fast 3G Internet access on the iPhone represents a significant threat to satellite radio and, to a lesser extent, terrestrial radio.  Consider the implications.  A user has an iPhone that&#8217;s the same size as an iPod (or a <a href="http://www.sirius.com/servlet/ContentServer?pagename=Sirius/CachedPage&amp;c=ProductAsset&amp;cid=1158082417240">Sirius Stiletto</a>) that can stream radio while in the car, walking down the street, or inside a building.  The iPhone can hop onto WiFi networks (same with the iPod Touch) or use 3G.  Even Edge connectivity allows for decent streaming.  All that adds up to great wireless access - as good as, or better than, satellite technology, since 3G and Edge connections work indoors whereas satellite doesn&#8217;t.</p>
<p>Accessibility aside, the real advantage is the phenomenal flexibility streaming radio provides.  Take Pandora for example.  It&#8217;s a streaming radio program for the iPhone that creates a customized radio station matched exactly to your tastes.  But even the simple ability to skip over songs you don&#8217;t like, a basic feature of Pandora, is inherently absent from any pre-programmed content station.  Such a simple feature goes a long way to improving your listening experience, and it&#8217;s almost embarrassing in the age of TiVo to not be able to skip over content you don&#8217;t find interesting.</p>
<p>With greater accessibility and significantly greater flexibility, streaming Internet radio will become one of the biggest threats to satellite radio over the next few years and will become a killer app for the iPhone.  Cell technology is getting better at providing high-speed Internet access, and already there are a number of very good streaming services that match listener&#8217;s tastes to music.  As the iPhone becomes increasingly popular among consumers and access speeds increase, satellite will suffer.  Satellite&#8217;s only hope to stay competitive is to offer enough exclusive content that listeners won&#8217;t be able to part ways with satellite radio without missing their favorite programs, but even that strategy is tenuous at best - it will only be so long before the content creators themselves decide to head for the greener pastures that Internet streaming radio provides.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=hr4kd6Qdyyc:oiCDHHZ-Z7E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=hr4kd6Qdyyc:oiCDHHZ-Z7E:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=hr4kd6Qdyyc:oiCDHHZ-Z7E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=hr4kd6Qdyyc:oiCDHHZ-Z7E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=hr4kd6Qdyyc:oiCDHHZ-Z7E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=hr4kd6Qdyyc:oiCDHHZ-Z7E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=hr4kd6Qdyyc:oiCDHHZ-Z7E:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/hr4kd6Qdyyc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/08/06/internet-radio-as-the-killer-iphone-app/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/08/06/internet-radio-as-the-killer-iphone-app/</feedburner:origLink></item>
		<item>
		<title>New Draconis Software Site Design</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/M7q_H2nXPwc/</link>
		<comments>http://www.dracoware.com/blog/2008/06/04/new-draconis-software-site-design/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 20:20:27 +0000</pubDate>
		<dc:creator>ryan</dc:creator>
		
		<category><![CDATA[Draconis News]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=137</guid>
		<description><![CDATA[Just a quick note about our new site design (if you haven&#8217;t noticed already).  We&#8217;ve put a lot of effort into redeveloping our site, hopefully conveying a fun, bright feel.  The main change, though, is what&#8217;s no longer visible: our network monitoring system RSP.  As a company, we&#8217;re moving in a different direction and have [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note about our new site design (if you haven&#8217;t noticed already).  We&#8217;ve put a lot of effort into redeveloping our site, hopefully conveying a fun, bright feel.  The main change, though, is what&#8217;s no longer visible: our network monitoring system RSP.  As a company, we&#8217;re moving in a different direction and have decided to make our site focus on our consulting efforts.</p>
<p>The Draconis Software website has gone through many different iterations over the years, and I&#8217;m particularly happy with the direction it&#8217;s going in.  As time goes on, we&#8217;ve worked hard to simplify our web presence, putting up only the most interesting and necessary information about our company and what we&#8217;re up to.  This has been one of the principal tenets of the web 2.0 design movement, and we&#8217;ve certainly practiced this with our clients.</p>
<p>But, enough about our thoughts on the site: we&#8217;d much rather hear what you think!  What do you like/not like about the new design?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=M7q_H2nXPwc:zg8Y2L6BZJQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=M7q_H2nXPwc:zg8Y2L6BZJQ:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=M7q_H2nXPwc:zg8Y2L6BZJQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=M7q_H2nXPwc:zg8Y2L6BZJQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=M7q_H2nXPwc:zg8Y2L6BZJQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=M7q_H2nXPwc:zg8Y2L6BZJQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=M7q_H2nXPwc:zg8Y2L6BZJQ:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/M7q_H2nXPwc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/06/04/new-draconis-software-site-design/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/06/04/new-draconis-software-site-design/</feedburner:origLink></item>
		<item>
		<title>Pulling Subversion Logs for a Single User</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/BjSD9RcIoGc/</link>
		<comments>http://www.dracoware.com/blog/2008/05/19/pulling-subversion-logs-for-a-single-user/#comments</comments>
		<pubDate>Mon, 19 May 2008 11:30:17 +0000</pubDate>
		<dc:creator>Steve Whittaker</dc:creator>
		
		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Operating Systems]]></category>

		<category><![CDATA[System Administration]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=136</guid>
		<description><![CDATA[There are many times during a project where I use the svn log command in order to see what has changed and to get a feel for the pace of development. It's also great when you're dealing with clients; you're only one command away from telling an inquisitive client exactly who did what task and [...]]]></description>
			<content:encoded><![CDATA[<p>There are many times during a project where I use the <span class="code">svn log</span> command in order to see what has changed and to get a feel for the pace of development. It's also great when you're dealing with clients; you're only one command away from telling an inquisitive client exactly who did what task and when they did them. However, <span class="code">svn log</span> is missing one important feature -- the ability to filter by a particular username. When I asked in #svn on <a href="http://freenode.net/">freenode</a>, they suggested I use the <span class="code">-<!--brk-->-xml</span> option and parse the resulting output.</p>
<p>The following is what I came up with. It's a ruby script that uses the delightful <a href="http://code.whytheluckystiff.net/hpricot">Hpricot</a> gem to parse the xml. It takes one argument, the subversion username that you wish to retrieve the logs for. I hope that it's useful for someone else! You can curl it from <a href="http://pastie.textmate.org/197763.txt">http://pastie.textmate.org/197763.txt</a> if that makes it easier, too.</p>
<div class="igBar"><span id="lruby-2"><a href="#" onclick="javascript:showPlainTxt('ruby-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">RUBY:</span>
<div id="ruby-2">
<div class="ruby">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;">#!/usr/bin/ruby</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> 'rubygems'</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> 'hpricot'</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">username = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">if</span> username.<span style="color:#0000FF; font-weight:bold;">nil</span>? || username == <span style="color:#996600;">""</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"Please specify the username to cull log entries for."</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">exit</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">end</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"Requesting SVN log, this may take a bit."</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">doc = IO.<span style="color:#9900CC;">popen</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"svn log --xml"</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |f|</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; Hpricot.<span style="color:#9900CC;">XML</span><span style="color:#006600; font-weight:bold;">&#40;</span>f<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">end</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">entries = doc.<span style="color:#9900CC;">search</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"logentry"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">find_all</span> <span style="color:#9966CC; font-weight:bold;">do</span> |entry|</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span>entry/<span style="color:#996600;">"author"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">innerHTML</span> == username</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">end</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">entries.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> |entry|</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; revision = entry.<span style="color:#9900CC;">attributes</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">"revision"</span><span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; author = <span style="color:#006600; font-weight:bold;">&#40;</span>entry/<span style="color:#996600;">"author"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">innerHTML</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; date = <span style="color:#006600; font-weight:bold;">&#40;</span>entry/<span style="color:#996600;">"date"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">innerHTML</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; msg = <span style="color:#006600; font-weight:bold;">&#40;</span>entry/<span style="color:#996600;">"msg"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">innerHTML</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"r#{revision} - #{author}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"#{date}"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"#{msg}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"-"</span>*<span style="color:#006666;color:#800000;">80</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">end</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=BjSD9RcIoGc:pxLw0rjJepQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=BjSD9RcIoGc:pxLw0rjJepQ:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=BjSD9RcIoGc:pxLw0rjJepQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=BjSD9RcIoGc:pxLw0rjJepQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=BjSD9RcIoGc:pxLw0rjJepQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=BjSD9RcIoGc:pxLw0rjJepQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=BjSD9RcIoGc:pxLw0rjJepQ:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/BjSD9RcIoGc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/05/19/pulling-subversion-logs-for-a-single-user/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/05/19/pulling-subversion-logs-for-a-single-user/</feedburner:origLink></item>
		<item>
		<title>A Rails Developer’s Thoughts On Using Grails</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/PUuzohIZtR4/</link>
		<comments>http://www.dracoware.com/blog/2008/05/15/a-rails-developers-thoughts-on-using-grails/#comments</comments>
		<pubDate>Thu, 15 May 2008 12:00:55 +0000</pubDate>
		<dc:creator>Costa Walcott</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=135</guid>
		<description><![CDATA[We strongly believe in using the right tool for the job.  While we currently think of Rails as the de facto choice when it comes to writing webapps, we'll always consider other options, such as one of the many other Ruby web frameworks, or going with another language such as Python.
Lately I've been looking for a chance [...]]]></description>
			<content:encoded><![CDATA[<p>We strongly believe in using the right tool for the job.  While we currently think of Rails as the de facto choice when it comes to writing webapps, we'll always consider other options, such as one of the many other Ruby web frameworks, or going with another language such as Python.</p>
<p>Lately I've been looking for a chance to play with <a href="http://grails.org/">Grails</a>.  Briefly, for those who aren't familiar, Grails is a web framework that uses the <a href="http://en.wikipedia.org/wiki/Groovy_%28programming_language%29">Groovy language</a> - an agile, dynamic language designed for the Java Platform.  Grails was meant to use some of the main tenets of Rails (convention over configuration, "Don't Repeat Yourself", et al) while using Java web technologies like Spring and Hibernate.</p>
<p>Fortunately, I was finally able to find a chance to play around with Grails - as a simple way of "porting" an existing Java web application to a dynamic language and framework.  <strong>My reasons were the following</strong>, which I'd imagine are true for many other Grails developers:</p>
<ol>
<li>The ability to include straight Java code in the project meant being able to re-use existing code, especially if it was not directly related to the webapp.  For example, I was able to take a terse image generation function and drop it right into the project.</li>
<li>Having the framework based on Spring, Hibernate, Acegi and Sitemesh meant there were fewer conceptual changes moving from the old code-base.  Working on the code I often felt that I was maintaining the original ideas while reducing the inherent verbosity of Java.</li>
<li>The previous point applies to the interface code as well - the views in Grails use GSP, which is very similar to JSP and made porting the views almost trivial.</li>
<li>Moving from another Java framework to Grails requires less of a "sell".  A Grails project packages as a WAR file no different from any Java project.  It will have all the positives (and negatives) of a Java app.</li>
</ol>
<p>So, having used Grails a for a while now, <strong>how does it stack up to Rails</strong>?  Here a few of the things I enjoyed about Grails:</p>
<ul>
<li>The GSP tags have the power of JSPs, along with a few features that make them simpler.  They've also added some tags that don't have equivalents in JSP, and are quite nice.  In particular, I liked using the "sortableColumn" tag, which generates columns in tables that handling sorting.  This is something I would like to use in Rails.</li>
<li>Grails does not currently use migrations (schemas are generated from field declarations in model objects), and while for some projects this could be an issue, it made development that much faster to add a few fields and have the database automatically be updated.</li>
<li>By default Grails uses a messages.properties file that contains message codes like validation errors and other generic error messages.  In some ways it's nice having all these messages in one place. Also, the validation errors use a default message per constraint type, which can then be overridden.</li>
</ul>
<p> As well as <strong>some caveats</strong> (I won't go so far as to say "problems"):</p>
<ul>
<li>Grails uses some different terminology than Rails.  Models are "domain classes", validations are "constraints", and so on.  Not much of an issue, but it may take some getting used to.</li>
<li>The form helpers in views are not as sophisticated as Rails.  Less boilerplate code is generated for you, and more thought has to be put in to maintaining states and values of form elements.</li>
</ul>
<p>Of course, there's nothing that Grails does that couldn't be done in Rails with a bit of extra code or a plugin, and I'd imagine for the most part this is true for Grails as well, so it's really more about simplicity and core conventions.  I'm still working on the port, so I'll be sure add updates as I get more experience.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=PUuzohIZtR4:8SNeRo8BAYQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=PUuzohIZtR4:8SNeRo8BAYQ:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=PUuzohIZtR4:8SNeRo8BAYQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=PUuzohIZtR4:8SNeRo8BAYQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=PUuzohIZtR4:8SNeRo8BAYQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=PUuzohIZtR4:8SNeRo8BAYQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=PUuzohIZtR4:8SNeRo8BAYQ:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/PUuzohIZtR4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/05/15/a-rails-developers-thoughts-on-using-grails/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/05/15/a-rails-developers-thoughts-on-using-grails/</feedburner:origLink></item>
		<item>
		<title>5 Simple Ways To Keep Up With The Rails Community</title>
		<link>http://feedproxy.google.com/~r/DraconisSoftwareBlog/~3/zIPPQ9_1_rc/</link>
		<comments>http://www.dracoware.com/blog/2008/04/23/5-simple-ways-to-keep-up-with-the-rails-community/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 03:58:32 +0000</pubDate>
		<dc:creator>Costa Walcott</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.dracoware.com/blog/?p=134</guid>
		<description><![CDATA[Update: There are some great suggestions in the comments as well.
There's a lot going on in the world of Rails these days.  This is great for developers, but sometimes it can be difficult to keep up with all latest happenings in the community.  In addition to changes in Ruby 1.9 and Edge Rails, there's a [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: </strong>There are some great suggestions <a href="http://www.dracoware.com/blog/2008/04/23/5-simple-ways-to-keep-up-with-the-rails-community/#disqus_thread">in the comments</a> as well.</p>
<p>There's a lot going on in the world of Rails these days.  This is great for developers, but sometimes it can be difficult to keep up with all latest happenings in the community.  In addition to changes in Ruby 1.9 and Edge Rails, there's a constant stream of news with regards to well-known Rails projects, emerging plugins and development/coding strategies.</p>
<p>Below are a few resources I use to stay up-to-date without experiencing information overload:</p>
<ol>
<li><a href="http://rubyflow.com">RubyFlow.com</a> - This relatively new site is a great way to quickly see daily Rails news.  It was built by Peter Cooper (author of <a href="http://www.amazon.com/Beginning-Ruby-Novice-Professional/dp/1590597664">Beginning Ruby</a> and the blog <a href="http://www.rubyinside.com/">Ruby Inside</a>).  Anyone from the community can post links on the site, or comment on posts.  I find myself visiting here multiple times per day to get a quick sense of what's happening and to make sure I haven't missed any important news.</li>
<li><a href="http://github.com">GitHub</a> - In addition to being a public git repository, GitHub has become a developer social network of sorts.  By following projects that interest you (including <a href="http://github.com/rails">Rails itself</a>), you end up with a single place to view all the commits that have happened on your projects.</li>
<li>Twitter - For the twitter users out there, there are a few options.  First, there's a user called <a href="http://twitter.com/rornews">rornews</a> that you can follow, which posts links to Rails blog and job postings across the web.  You can also follow a number of members of the Rails community who are on twitter, including <a href="http://twitter.com/obie">Obie Fernandez</a>, <a href="http://twitter.com/topfunky">Geoffrey Grosenbach</a>, <a href="http://twitter.com/rbates">Ryan Bates</a>, and <a href="http://twitter.com/_why">why the lucky stiff</a> (side note: anyone is welcome to follow <a href="http://twitter.com/cwalcott">me on twitter</a> as well!).  Finally, you can consider using the <a href="http://blog.twitter.com/2007/09/tracking-twitter.html">tracking feature</a> on twitter to follow "rails" or "ruby on rails".  This will give you a lot of updates, but if you're willing to sift through it you'll probably learn about news almost as soon as it happens.</li>
<li>Shared Feeds - I really like shared feeds (also called link blogs) as a way to see the best content filtered through a trusted source.  A few feeds to check out include <a href="http://del.icio.us/obie">Obie Fernandez</a>, <a href="http://del.icio.us/topfunky">Geoffrey Grosenbach</a>, and what appears to be <a href="http://del.icio.us/_matz">"Matz" himself</a>.  Or rather than following a single person, you try tracking searches for "rails" on <a href="http://friendfeed.com/search?q=rails">FriendFeed</a> or <a href="http://www.rssmeme.com/search/?q=rails">RSSmeme</a>.</li>
<li>Blog Suggestions - There are a whole bunch of great Rails blogs out there, but if I had to choose the top 3 they would be the <a href="http://weblog.rubyonrails.org/">official Ruby on Rails blog</a>, <a href="http://www.therailsway.com/">The Rails Way</a>, and <a href="http://ryandaigle.com/">Ryan's Scraps</a> (I find the "What's New in Edge Rails" posts to be invaluable).</li>
</ol>
<p>If anyone has any other suggestions, please post them in the comments!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=zIPPQ9_1_rc:MOjxSrgXmqs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=zIPPQ9_1_rc:MOjxSrgXmqs:W9dqtTZ0I2U"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W9dqtTZ0I2U" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=zIPPQ9_1_rc:MOjxSrgXmqs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=zIPPQ9_1_rc:MOjxSrgXmqs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=zIPPQ9_1_rc:MOjxSrgXmqs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?i=zIPPQ9_1_rc:MOjxSrgXmqs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?a=zIPPQ9_1_rc:MOjxSrgXmqs:W1ccf-mKbkM"><img src="http://feeds.feedburner.com/~ff/DraconisSoftwareBlog?d=W1ccf-mKbkM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DraconisSoftwareBlog/~4/zIPPQ9_1_rc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.dracoware.com/blog/2008/04/23/5-simple-ways-to-keep-up-with-the-rails-community/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.dracoware.com/blog/2008/04/23/5-simple-ways-to-keep-up-with-the-rails-community/</feedburner:origLink></item>
	</channel>
</rss>
