<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>TechBrew</title><link>http://techbrew.net</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/techbrew" /><description>Informative geekery on software and technology</description><language>en</language><lastBuildDate>Mon, 26 Apr 2010 08:30:34 PDT</lastBuildDate><generator>http://wordpress.org/?v=2.9.2</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/techbrew" /><feedburner:info uri="techbrew" /><thespringbox:skin xmlns:thespringbox="http://www.thespringbox.com/dtds/thespringbox-1.0.dtd">http://feeds.feedburner.com/techbrew?format=skin</thespringbox:skin><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>38.952366</geo:lat><geo:long>-104.767016</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><image><link>http://techbrew.net</link><url>http://techbrew.net/wp-content/themes/mag/img/techbrew_logo_250x100.gif</url><title>TechBrew</title></image><feedburner:emailServiceId>techbrew</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/techbrew" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://my.feedlounge.com/external/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://static.feedlounge.com/buttons/subscribe_0.gif">Subscribe with FeedLounge</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechbrew" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:browserFriendly>Thanks for visiting! Subscribe to this feed to get Informative geekery on software on technology. We offer news, how-to's, and free/open source software.</feedburner:browserFriendly><item><title>iSpringsCam : Colorado Springs Traffic Cams on the iPhone</title><link>http://feedproxy.google.com/~r/techbrew/~3/FcGBX5VQI4A/</link><category>News</category><category>google_maps</category><category>iphone</category><category>ispringscam</category><category>iWebKit</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Fri, 23 Apr 2010 09:53:41 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/?p=283</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p><em>(April 26, 2010: Updated with newest features)</em></p>
<p><img class="size-full wp-image-310 alignright" title="ispringscam-icon" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam-icon.jpg" alt="iSpringsCam" width="85" height="85" align="right" />A few weeks ago in Colorado Springs there was a fuel tanker crash on the I-25 Interstate, spilling thousands of gallons of fuel and closing the Interstate for over 5 hours.  Traffic patterns were a complete mess as side-roads became major thoroughfares.  As I drove home from work, I found myself wishing I had access to <a title="SpringsCam" href="http://springscam.markwoodman.com" target="_blank">springscam.markwoodman.com</a> on my iPhone.  But I built that traffic-cam site in Flex (Flash), so that wasn&#8217;t an option.</p>
<p>That led me down the path on how to build <a href="http://techbrew.net/articles/201004/iphone-faux-apps-with-iwebkit/">iPhone faux-apps with iWebKit</a>, and within a few hours I had a functioning version that worked pretty well and looked pretty good.</p>
<p>If you have an iPhone, check out <a title="iSpringsCam" href="http://iSpringsCam.markwoodman.com" target="_blank">iSpringsCam.markwoodman.com</a> .  Here&#8217;s a run-down of the features:</p>
<ul>
<li> Use iSpringsCam like an App
<ol>
<li>Open iSpringsCam Home screen</li>
<li>Press (+) button in Safari</li>
<li>Press &#8220;Add to Home Screen&#8221;</li>
<li>iSpringsCam will now run full-screen (no browser bar)</li>
</ol>
</li>
</ul>
<ul>
<li> Main Screen
<ol>
<li>Use the “All on Map” to get all camera markers on a live Google Map with I-25 traffic conditions</li>
<li>Enter part of a street name in the filter field, and the list will display only the matching camera names</li>
<li>Select one of the cameras to open up the Single Camera View</li>
</ol>
</li>
</ul>
<ul>
<li> Single Camera View
<ol>
<li>You’ll see the latest image from that camera and a static map image of the camera location</li>
<li>Rotate your iPhone to fill your screen with the camera image</li>
<li>The camera image will auto-refresh once per minute</li>
<li>To manually refresh the camera image, tap the image or the 						  refresh button</li>
<li>Touch the “Live Map” button (or the map image) to get a live Google Map with the camera’s image and traffic conditions on I-25</li>
</ol>
</li>
</ul>
<ul>
<li> Google Map View (with current traffic conditions)
<ol>
<li>Pinch and expand the map to zoom in or out</li>
<li>Touch a marker to see that camera’s image in a balloon</li>
<li>Touch the “X” on the balloon to close it</li>
<li>Touch the camera image in the balloon to open the single-camera view</li>
</ol>
</li>
</ul>
<p>If you don&#8217;t have an iPhone, here are some screenshots:</p>

<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam-icon/' title='ispringscam-icon'><img width="85" height="85" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam-icon.jpg" class="attachment-thumbnail" alt="" title="ispringscam-icon" /></a>
<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam6/' title='ispringscam(6)'><img width="150" height="150" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam6-150x150.jpg" class="attachment-thumbnail" alt="" title="ispringscam(6)" /></a>
<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam1/' title='ispringscam(1)'><img width="150" height="150" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam1-150x150.jpg" class="attachment-thumbnail" alt="" title="ispringscam(1)" /></a>
<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam2/' title='ispringscam(2)'><img width="150" height="150" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam2-150x150.jpg" class="attachment-thumbnail" alt="" title="ispringscam(2)" /></a>
<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam3/' title='ispringscam(3)'><img width="150" height="150" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam3-150x150.jpg" class="attachment-thumbnail" alt="" title="ispringscam(3)" /></a>
<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam7/' title='ispringscam(7)'><img width="150" height="150" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam7-150x150.jpg" class="attachment-thumbnail" alt="" title="ispringscam(7)" /></a>
<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam5/' title='ispringscam(5)'><img width="150" height="150" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam5-150x150.jpg" class="attachment-thumbnail" alt="" title="ispringscam(5)" /></a>
<a href='http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/ispringscam4/' title='ispringscam(4)'><img width="150" height="150" src="http://techbrew.net/wp-content/uploads/2010/04/ispringscam4-150x150.jpg" class="attachment-thumbnail" alt="" title="ispringscam(4)" /></a>

<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=FcGBX5VQI4A:2YYLC-sARz4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=FcGBX5VQI4A:2YYLC-sARz4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=FcGBX5VQI4A:2YYLC-sARz4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=FcGBX5VQI4A:2YYLC-sARz4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=FcGBX5VQI4A:2YYLC-sARz4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=FcGBX5VQI4A:2YYLC-sARz4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=FcGBX5VQI4A:2YYLC-sARz4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/FcGBX5VQI4A" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;(April 26, 2010: Updated with newest features)
A few weeks ago in Colorado Springs there was a fuel tanker crash on the I-25 Interstate, spilling thousands of gallons of fuel and closing the Interstate for over 5 hours.  Traffic patterns were a complete mess as side-roads became major thoroughfares.  As I drove home from work, I [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://techbrew.net/articles/201004/ispringscam-colorado-springs-traffic-cams-on-the-iphone/</feedburner:origLink></item><item><title>iPhone faux-apps with iWebKit</title><link>http://feedproxy.google.com/~r/techbrew/~3/zspUsjkrur4/</link><category>How-To</category><category>CSS</category><category>DHTML</category><category>iphone</category><category>iWebKit</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Fri, 23 Apr 2010 08:51:31 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/?p=281</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>Making websites that are iPhone-friendly is easy enough, but I recently wanted to make a site that felt like a real iPhone app.  I don&#8217;t own a Mac, so building a native iPhone app wasn&#8217;t an option.</p>
<p><img class="size-full wp-image-285  alignright" align="right" title="iWebkit Demo Screenshot" src="http://techbrew.net/wp-content/uploads/2010/04/iwebkit-screenshot.png" alt="" width="214" height="400" /></p>
<p>I turned to <a title="iWebKit" href="http://iwebkit.net/" target="_blank">iWebKit 5.0</a>, a lightweight DHTML toolkit for making websites that look &#8220;native&#8221; on the iPhone. It is a collection of CSS and Javascript files, a few small images, and a tutorial PDF on how to use them.  If you&#8217;re reading this on an iPhone, try out <a onclick="return popitup(this.href);" href="http://demo.iwebkit.net/" target="_blank">http://demo.iwebkit.net</a> to see how a site built with it feels.</p>
<p>The iWebKit developers had these goals for version 5.0:</p>
<ul>
<li>It needs to be very lightweight</li>
<li>Use small or no images (use css3 gradient and shadows for example)</li>
<li>Use limited amounts or no  javascript, always try to find a css3 solution first!</li>
<li>Be user friendly (the least amount of elements possible in the html code as iwebkit is structured right now)</li>
</ul>
<p>It&#8217;s dead-simple to use, and I think even people with scant web experience could put a static  site easily enough.  Safari for the iPhone has solid Javascript support, so more advanced web developers could put together some pretty decent dynamic functionality as well.</p>
<p>My favorite feature of iWebKit is when you use the &#8220;Add To Home Screen&#8221; button in Safari to put a bookmark icon on your iPhone.  A site made with iWebKit can be made to provide its own icon for your Home Screen, show a splash image while it loads, and run full-screen (no browser bar).  At that point, you can build something that most people would never suspect was a web site.</p>
<p>Other benefits from this approach:  No need to get Apple&#8217;s approval to list it in the app store and you can update it as often as you want.  You don&#8217;t get the exposure that the App Store brings, of course.   There are always trade-offs.</p>
<p>If you decide to give it a try, I recommend using Safari on your PC (or Mac) as a test browser during development, since it will render the pages fairly close to how they&#8217;ll appear on your iPhone.  You won&#8217;t get great results on IE or Firefox, but the Chrome browser works fairly well.</p>
<p>Have fun!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=zspUsjkrur4:FnR5ls4LxXo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=zspUsjkrur4:FnR5ls4LxXo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=zspUsjkrur4:FnR5ls4LxXo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=zspUsjkrur4:FnR5ls4LxXo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=zspUsjkrur4:FnR5ls4LxXo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=zspUsjkrur4:FnR5ls4LxXo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=zspUsjkrur4:FnR5ls4LxXo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/zspUsjkrur4" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;Making websites that are iPhone-friendly is easy enough, but I recently wanted to make a site that felt like a real iPhone app.  I don&amp;#8217;t own a Mac, so building a native iPhone app wasn&amp;#8217;t an option.

I turned to iWebKit 5.0, a lightweight DHTML toolkit for making websites that look &amp;#8220;native&amp;#8221; on the iPhone. It [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/201004/iphone-faux-apps-with-iwebkit/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://techbrew.net/articles/201004/iphone-faux-apps-with-iwebkit/</feedburner:origLink></item><item><title>Build a Simple Map Client with SOAP and Flex</title><link>http://feedproxy.google.com/~r/techbrew/~3/tza5mJOOrSA/</link><category>How-To</category><category>News</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Tue, 23 Mar 2010 09:13:03 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/?p=271</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>Last year I led a software project that employed a SOA architecture and a <a href="http://www.adobe.com/products/flex/">Flex</a> UI.  The features we were able to build with FlexBuilder (now FlashBuilder) were pretty sweet and remarkably easy&#8230;  I&#8217;ve become a huge fan of Flex as a result.</p>
<p>The new <a href="http://labs.adobe.com/technologies/flashbuilder4/">FlashBuilder 4</a> provides some powerful new tools for integrating with various back-end services. Connecting to SOAP services is now, frankly, dead-simple. I&#8217;ve written two articles on this topic, both of which are now live on <a title="DevX" href="http://DevX.com">DevX.com</a>:</p>
<ul>
<li><a href="http://www.devx.com/webdev/Article/44353">Build a Simple Map Client with SOAP in Flash Builder 4, Part I</a></li>
<li><a href="http://www.devx.com/webdev/Article/44360">Create a Map Client with Web Services, Part II</a></li>
</ul>
<p>The articles come with a starter project and walk you through how to connect to a SOAP service and build a functional Map client in a relatively short amount of time.  Unfortunately there&#8217;s been some sort of a mix-up on DevX and the download links for the project aren&#8217;t working yet.  In the meantime, you can download them here:</p>
<ul>
<li>Initial Project (start with this) : <a title="terraclient_initial.fxp" href="http://sites.google.com/site/techbrewfiles/terraclient_initial.fxp">terraclient_initial.fxp</a></li>
<li>Project by the end of Part 1: <a title="terraclient_part1.fxp" href="http://sites.google.com/site/techbrewfiles/terraclient_part1.fxp">terraclient_part1.fxp</a></li>
<li>Project by the end of Part 2: <a title="terraclient_part2.fxp" href="http://sites.google.com/site/techbrewfiles/terraclient_part2.fxp">terraclient_part2.fxp</a>
<p><div id="attachment_274" class="wp-caption aligncenter" style="width: 160px"><a href="http://techbrew.net/wp-content/uploads/2010/03/figure5.png"><img class="size-thumbnail wp-image-274 " title="TerraClient" src="http://techbrew.net/wp-content/uploads/2010/03/figure5-150x150.png" alt="" width="150" height="150" /></a><p class="wp-caption-text">Flex + SOAP map client</p></div></li>
</ul>
<p>I&#8217;ll keep these downloads available until DevX fixes the problem on their end.  Sorry for the inconvenience.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=tza5mJOOrSA:6d4QNBGbAIU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=tza5mJOOrSA:6d4QNBGbAIU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=tza5mJOOrSA:6d4QNBGbAIU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=tza5mJOOrSA:6d4QNBGbAIU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=tza5mJOOrSA:6d4QNBGbAIU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=tza5mJOOrSA:6d4QNBGbAIU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=tza5mJOOrSA:6d4QNBGbAIU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/tza5mJOOrSA" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;Last year I led a software project that employed a SOA architecture and a Flex UI.  The features we were able to build with FlexBuilder (now FlashBuilder) were pretty sweet and remarkably easy&amp;#8230;  I&amp;#8217;ve become a huge fan of Flex as a result.
The new FlashBuilder 4 provides some powerful new tools for integrating with various [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/201003/build-a-simple-map-client-with-soap-and-flex/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://techbrew.net/articles/201003/build-a-simple-map-client-with-soap-and-flex/</feedburner:origLink></item><item><title>Is rssCloud All Wet?</title><link>http://feedproxy.google.com/~r/techbrew/~3/LF4lyz3y96I/</link><category>Feeds</category><category>News</category><category>Opinion</category><category>ajax</category><category>iphone</category><category>rss</category><category>rssCloud</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Tue, 08 Sep 2009 16:32:35 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/?p=256</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><div>
<div>Rogers Cadenhead recently posted his thoughts on why the <a href="http://www.rsscloud.org/">rssCloud</a> concept &#8220;<a href="http://workbench.cadenhead.org/news/3555/theres-reason-rsscloud-failed-catch">failed to catch on</a>.&#8221;    This is a response to his post and an attempt to foster further discussion in the community.</div>
<h3>Blue Sky</h3>
<div>The main idea behind rssCloud is that your RSS reader can ask to be notified when a feed changes (push), rather than having to check the feed on a regular basis (pull).  This is accomplished by having your RSS reader subscribe to updates with the feed server.  When the feed is updated, the server will then notify your RSS reader accordingly.  This message pattern is known as <a href="http://en.wikipedia.org/wiki/Publish/subscribe">publish/subscribe</a> or just &#8220;pub/sub.&#8221;</p>
<p>On the face of it, it&#8217;s a great idea.   The benefits of pub/sub are well-understood.    Pub/sub (push) can be far more efficient than polling (pull) in many cases, especially when it saves the client from either having to make frequent connections to the server  and having to analyze the response looking for what has changed.</p>
<p>Unfortunately, the way rssCloud needs to be implemented has what I fear to be significant and potentially fatal flaws.   Before I dig into them,  it&#8217;s helpful to provide a little background on best practices using push or pub/sub architectures.</p></div>
<h3><strong>Best Push Practices with HTTP</strong></h3>
<div>
<div>The patterns for providing frequent updates to a client over HTTP are fairly well-known in Ajax / RIA arenas.  (See:  <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4">Comet</a> for DHTML, or <a href="http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=lcconfig_3.html">BlazeDS channels</a> for Flash/Flex)   Here are the main ones:</div>
<div>
<ol>
<li><strong>Polling</strong>:  Client connects to server and asks for an update.  The connection ends when the server has responded.   Repeat ad nauseum at the frequency needed by the client.  This is equivalent to what most RSS readers do today:  periodically check a feed for updates.</li>
<li><strong>Piggybacking</strong>:  Client connects to the server and asks for something else.  The server responds, notes the client&#8217;s subscriptions, and tacks on any pending notifications on the response to the request.  Combined with polling in an Ajax or RIA app, this can be a really efficient way to handle notifications.  (But, for RSS readers, there probably isn&#8217;t much to glean from this pattern.)</li>
<li><strong>Long-polling</strong>:  Client connects to server and asks for updates.  The connection stays open as long as the server allows, and the server will send multiple notifications while the connection is open.  In layman&#8217;s terms, this is akin to being put on hold but not hanging up the phone.  When the connection is closed or times out, the client will reconnect.   Sort of like what you do when you get disconnected from tech support.  Again.</li>
<li><strong>Streaming</strong>: Client connects to server and asks for updates.  The connection stays open ad infinitum using a dedicated socket, pretty much like you would get from a streaming media server.  Whereas you can usually implement the other approaches with a standard web server, this approach typically requires  your server and network infrastructure to be above the norm.</li>
</ol>
</div>
<div>Among these solutions, two main tenets emerge:<br />
<strong><br />
Tenet #1: </strong> <strong>It is the client&#8217;s responsibility to make the HTTP connection. </strong> We all take it for granted, but establishing a network connection involves a fair bit of work.   With all of these patterns, the burden of &#8220;connectability&#8221; is put on the client.  A server is supposed to be highly-available, but clients come and go.  If the client can&#8217;t contact the server, it is usually the client&#8217;s problem.  The work of establishing a connection and handling failed connections, retries, etc. is thus distributed to the clients.  This is an important feature as the volume of concurrent clients increases.<br />
<strong><br />
Tenet #2:  M</strong><strong>ake as few connections as possible and keep them open as long as possible.  <span style="font-weight: normal;">This is because the HTTP handshake itself &#8211; along with authentication &#8211; is the most expensive part of the networked operation.   The fewer times a client/server has to jump through the connection hoops, the better.</p>
<p>A noteworthy aside:  Apple&#8217;s <a href="http://www.networkworld.com/news/2009/082009-apple-iphone-push-notification.html">iPhone push architecture</a> uses long-lived (persistent) sockets to push App notifications to each iPhone.  This is roughly equivalent to the long-polling or streaming patterns, but uses raw binary data instead of HTML or JSON.    In any case, both of the Tenets are still employed: your iPhone connects to the APNS and keeps the connection open as long as possible.</p>
<p></span></strong>So, with these best practices in mind, lets take a look at rssCloud&#8230;</div>
<h3><strong>Clouded Flaw #1: Don&#8217;t Call Me, I&#8217;ll Call You</strong></h3>
<div>Currently, your RSS reader just uses polling to check a feed on a regular basis.  A decent RSS reader will do this using  <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4">HTTP HEAD</a> requests, which are a very efficient way to check for updates.   A HEAD request just checks the timestamp on the feed without having to get the feed contents.  This is a nice bandwidth saver.</p>
<p>But if you really want instant-message-like updates on an RSS feed, it isn&#8217;t practical to make your reader check the feed every 5 seconds.   The connection overhead of contacting the server and waiting for the reponse would be obnoxious and just shy of a <a href="http://en.wikipedia.org/wiki/Denial-of-service_attack">denial-of-service attack</a>.  Recall Tenet #2 discussed earlier: &#8220;Make as few connections as possible.&#8221;  Those connections are expensive, after all.</p>
<p>So the idea behind rssCloud is great:  The server can just tell your reader when the feed has updated.  No unnecessary connections are made, right?</p></div>
<div>Unfortunately, there&#8217;s a major problem lurking in the shadows.  Recall Tenet #1 discussed above: &#8220;It is the client&#8217;s responsibility to make (and keep open) the HTTP connection.&#8221;   The connection/retry work should be distributed to the clients.  But with rssCloud, the burden of making the connections, handling retries, etc. is now shouldered completely by the server.</p>
<p>This level of work is similar to sending a mass email via SMTP.   The handshaking / retry work from the mailing daemon to each unique SMTP relay is a well-known problem.  Unless your server has a lot of distributed processing available, the time-of-delivery between the first recipient and the last recipient will grow as the list of subscribers grows.  The delay is exacerbated with every failed connection that must time-out before the next connection is attampted.   Peformance degrades on a linear scale:  The more subscribers, the longer it takes to deliver all the messages.  These delays are common in the world of SMTP:  We&#8217;ve all gotten an email 15 minutes after a coworker got the same email.</p>
<p>With email, we&#8217;re used to this kind of delay.  But if the goal of rssCloud is to have near-realtime updates, this kind of delay is a deal-killer. Unfortunately, there&#8217;s more&#8230;.</p></div>
<h3>Clouded Flaw #2: Your Fat Reader Got Fatter, Not Smarter</h3>
<div>In order to support rssCloud server connections, your desktop RSS reader will have to run an embedded web server at all times to get notifications.  This is some significant development work for the folks who make your reader.  And for it to work correctly, you will need to have your firewall configured to allow incoming connections from the rssCloud server.   That requirement alone makes it a non-starter for many, many people in both residential and corporate environments.</p>
<p>And you had better leave your reader running at all times, even when you&#8217;re not at the computer.  Because if the server tries to send you an update, it couldn&#8217;t connect to your reader&#8230; strike 1.   Three strikes, and you&#8217;re off the subscription list for notifications.     The rssCloud server will (presumedly) try again later, but if you didn&#8217;t leave your reader running over the weekend, you might be auto-unsubscribed by Monday morning.  Which means the developers that make your reader will have to build in contingency plans for re-subscribing every time it starts up.</p>
<p>Also, lets say your reader was running, but there was some temporary network disruption right when the server was trying to connect to your reader.  You&#8217;ll have missed the notifications and never know it.  You&#8217;ll have a strike and never know it.  This is what happens when you make the server responsible for establishing the connection and break Tenet #1: your client never knows when something goes wrong.</p>
<p>If the responsibility was on your RSS reader (client) to connect to the server and ask for notifications, it could react to network disruptions and reconnect as soon as possible.  You could know how long you&#8217;ve been missing notifications.  But since rssCloud puts the connection burden on the server, the only way for your reader to know if you&#8217;re still &#8220;current&#8221; is to &#8230; do a GET or a HEAD on the RSS feed itself &#8230; Which is what RSS readers are already doing without rssCloud.</p>
<p>Back to square one.</p></div>
</div>
<h3>Is There a Silver Lining?</h3>
<div>Personally, I have grave misgivings about the current flavor of rssCloud.   It is trying to solve a hard problem, but has created some even harder problems for itself in the process.</p>
<p>On the bright side, the need is real, and lot of really sharp people are looking at the problem.</p></div>
<div>My advice is this: I believe that if rssCloud is to succeed on any significant scale, the server will need to get out of the call-the-client business.  Taking a page from <a href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a> best practices, the server API should be fleshed out to accommodate long-polling, and let RSS clients do the connection / retry / recovery work.   This course correction would have several strong advantages:</div>
<div>
<ol>
<li>No embedded server in RSS readers required</li>
<li>No firewall configuration for users</li>
<li>Reduced server requirements for rssCloud server hosts</li>
<li>Potentially reduced lag time in notifications, especially for large numbers of clients</li>
<li>Reduced long-term state on the server; there won&#8217;t need to be subscriptions, just sessions</li>
<li>Improved data integrity by making the client aware and responsible for reconnects/refreshes</li>
</ol>
</div>
<div>The RSS world needs what rssCloud is offering, so my hope is that the specs will evolve to make this all possible.</p>
<p>What do you think?</p></div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=LF4lyz3y96I:7a6mklO7grk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=LF4lyz3y96I:7a6mklO7grk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=LF4lyz3y96I:7a6mklO7grk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=LF4lyz3y96I:7a6mklO7grk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=LF4lyz3y96I:7a6mklO7grk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=LF4lyz3y96I:7a6mklO7grk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=LF4lyz3y96I:7a6mklO7grk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/LF4lyz3y96I" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;
Rogers Cadenhead recently posted his thoughts on why the rssCloud concept &amp;#8220;failed to catch on.&amp;#8221;    This is a response to his post and an attempt to foster further discussion in the community.
Blue Sky
The main idea behind rssCloud is that your RSS reader can ask to be notified when a feed changes (push), rather than [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200909/rsscloud-all-wet/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">13</slash:comments><feedburner:origLink>http://techbrew.net/articles/200909/rsscloud-all-wet/</feedburner:origLink></item><item><title>ROME 1.0 Released</title><link>http://feedproxy.google.com/~r/techbrew/~3/5bUT0OWlVV0/</link><category>News</category><category>atom</category><category>java</category><category>rome</category><category>rss</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Wed, 11 Mar 2009 19:44:33 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/?p=252</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p><img class="size-full wp-image-253 alignright" title="ROME" src="http://techbrew.net/wp-content/uploads/2009/03/30928904_95fa6174d5_o1.png" alt="ROME" width="182" height="125" /></p>
<p>It has been a long time coming, but the Java library for RSS and Atom utilities called <a title="ROME 1.0" href="http://wiki.java.net/bin/view/Javawsxml/Rome">ROME</a> has finally made it to <strong>version 1.0</strong> (<a title="ROME changelog" href="http://wiki.java.net/bin/view/Javawsxml/RomeChangesLog">changelog</a>). Thanks to all of the contributers and the hard work on the dev team for making it possible!  </p>
<p>New to ROME? For a quick tutorial on how to get started, check out my piece on XML.com : &#8220;<a href="http://www.xml.com/pub/a/2006/02/22/rome-parse-publish-rss-atom-feeds-java.html">ROME in a Day: Parse and Publish Feeds in Java</a>&#8220;.</p>
<p><span style="color: #551a8b; text-decoration: underline;"><br />
</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=5bUT0OWlVV0:34dd16D4HDw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=5bUT0OWlVV0:34dd16D4HDw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=5bUT0OWlVV0:34dd16D4HDw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=5bUT0OWlVV0:34dd16D4HDw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=5bUT0OWlVV0:34dd16D4HDw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=5bUT0OWlVV0:34dd16D4HDw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=5bUT0OWlVV0:34dd16D4HDw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/5bUT0OWlVV0" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;
It has been a long time coming, but the Java library for RSS and Atom utilities called ROME has finally made it to version 1.0 (changelog). Thanks to all of the contributers and the hard work on the dev team for making it possible!  
New to ROME? For a quick tutorial on how to get [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200903/rome-1-0-released/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://techbrew.net/articles/200903/rome-1-0-released/</feedburner:origLink></item><item><title>President Obama – Lost in Translation</title><link>http://feedproxy.google.com/~r/techbrew/~3/wliP0gERlvw/</link><category>Humor</category><category>News</category><category>obama</category><category>president</category><category>video</category><category>voice recognition</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Tue, 20 Jan 2009 16:00:19 PST</pubDate><guid isPermaLink="false">http://techbrew.net/?p=239</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>Fox News has an &#8220;Automatic Transcription&#8221; feature for its videos.  The disclaimer of &#8220;may not be 100% accurate&#8221; is understated by 95%.  Here&#8217;s the<a href="http://www.foxnews.com/video-search/m/21774201/presidential_oath.htm"> presidential oath of Barak Obama</a>, the way their transcription software heard it:</p>
<div id="ez-fullTranscript" class="ez-full">
<p>&#8220;I. &#8212; Barack Hussein Obama I solemnly swear Barack Hussein Obama do solemnly swear. That I will execute the office of president of the United States faithfully &#8212; execute &#8230; Get off faithfully the president the office of president and &#8212; I just &#8212; the United States &#8212; wheels. &#8212; the best of &#8212; ability and will miss my children. Preserve protect and defend the constitution of the United States. Preserve protect and defend the constitution of the United States so help you got so homey &#8212; congratulations mr.&#8221;</p>
<div id="attachment_248" class="wp-caption aligncenter" style="width: 263px"><a href="http://techbrew.net/wp-content/uploads/2009/01/lost-in-translation.jpg"><img class="size-medium wp-image-248" title="lost-in-translation" src="http://techbrew.net/wp-content/uploads/2009/01/lost-in-translation-253x300.jpg" alt="&quot;I will miss my children.&quot;" width="253" height="300" /></a><p class="wp-caption-text">&quot;I will miss my children.&quot;</p></div>
<p>Woops.  To be fair, there were two people talking at the same time, which is a nightmare for voice recognition software.  </p>
<p>But you&#8217;ve got to love phrases like &#8220;Get off faithfully the president&#8221;,  &#8221;will miss my children&#8221;, and &#8220;so help you got so homey.&#8221;   Maybe Fox News should hire out the transcription software as a writer for Saturday Night Live&#8230; it&#8217;s funnier than most of the people they&#8217;ve hired.</p></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=wliP0gERlvw:_CBeGPv8oks:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=wliP0gERlvw:_CBeGPv8oks:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=wliP0gERlvw:_CBeGPv8oks:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=wliP0gERlvw:_CBeGPv8oks:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=wliP0gERlvw:_CBeGPv8oks:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=wliP0gERlvw:_CBeGPv8oks:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=wliP0gERlvw:_CBeGPv8oks:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/wliP0gERlvw" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;Fox News has an &amp;#8220;Automatic Transcription&amp;#8221; feature for its videos.  The disclaimer of &amp;#8220;may not be 100% accurate&amp;#8221; is understated by 95%.  Here&amp;#8217;s the presidential oath of Barak Obama, the way their transcription software heard it:

&amp;#8220;I. &amp;#8212; Barack Hussein Obama I solemnly swear Barack Hussein Obama do solemnly swear. That I will execute the office [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200901/president-obama-lost-in-translation/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://techbrew.net/articles/200901/president-obama-lost-in-translation/</feedburner:origLink></item><item><title>Defrag a Single File or Set of Files in Windows</title><link>http://feedproxy.google.com/~r/techbrew/~3/plXtgzTN3F8/</link><category>How-To</category><category>contig</category><category>defrag</category><category>windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Wed, 20 Aug 2008 15:46:16 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/?p=227</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>Ever wanted to defragment a certain file or collection of files on your Windows PC, without defragging the entire hard drive?   Here&#8217;s why and how you can do it:</p>
<p><strong>Don&#8217;t Bring Me Down</strong></p>
<p>I recently noticed that one of my oft-used Windows applications was getting slower and slower.  After checking the usual suspects in Task Manager (Windows Search, Norton AV, you know who you are), I also checked to see if my hard drive needed to be defragmented.   At first glance, the answer was no: the <a href="http://support.microsoft.com/kb/314848">defrag tool</a> reported  &#8220;You do not need to defragment this volume&#8221;.  I looked at the volume report, however and saw that many of the worst-fragmented files were used by my oh-so-slow application.</p>
<p><a rel="attachment wp-att-229" href="http://techbrew.net/articles/200808/defrag-a-single-file-or-set-of-files-in-windows/drivefail/"><img class="size-medium wp-image-229" title="Imminent Failure" align="right" src="http://techbrew.net/wp-content/uploads/2008/08/drivefail-300x133.jpg" alt="" width="300" height="133" align="right" /></a></p>
<p>Any time an application needs to read or write to heavily-fragmented files, it has to go on a treasure hunt all over the hard drive platter.  Since disk I/O is an expensive operation, defragging those files can boost application performance considerably.  It might also save you from some nasty crashes.</p>
<p>The problem is that there is no guarantee which files the Windows Defrag Tool will touch.   You can defrag the whole disk only to find out it skipped your files anyway.       Yeah, that happened to me.  Twice more than I care to admit.  Mr Gates, I&#8217;d like my 2 hours back.</p>
<p>So I did a treasure hunt of my own, and found a fast and free tool designed to solve this very problem&#8230;</p>
<p><strong>Contig To The Rescue</strong></p>
<p><a title="Contig 1.54" href="http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx">Contig v1.54</a> is a free command-line tool that works on Windows NT, XP, 2000, and Vista.  It will analyze and defragment a file or a set of files matching a wildcard.  Contig is fast, tiny at 55KB, easy to use, and can even be killed in the middle of processing without corrupting your drive.    Here&#8217;s how to start single-file defragging in 5 minutes, or your next pizza is free:<span id="more-227"></span></p>
<ol>
<li>Download <a title="Download Contig.zip" href="http://download.sysinternals.com/Files/Contig.zip">Contig.zip</a>, and extract Contig.exe in a directory of your choice.</li>
<li>Open a command line, and type in the location of Contig.exe, followed by the <strong>-v</strong> switch, followed by the location of the file you want to defrag.  If either location has a space in the path name, be sure to enclose both locations in quotes.   Here&#8217;s how it looks in action:<br />
<code><small>C:\&gt;"C:\tools\Contig.exe" -v "C:\System Volume Information\catalog.wci\00010005.ci"<br />
...<br />
Found a free disk block at 14025352 of length 32740 for entire file.<br />
Moving 32688 clusters at file offset cluster 0 to disk cluster 14025352<br />
File size: 133890048 bytes<br />
Fragments before: 1126<br />
Fragments after : 1</small></code></li>
<li>If you want to defrag a set of files using a wildcard pattern, then just use the <strong>-s</strong> switch and a wild-carded path.  Like so:<br />
<code>"C:\tools\Contig.exe" -s "C:\music\*.mp3"</code></li>
</ol>
<p>It&#8217;s really that easy.  Contig also has a couple of other switches to either just analyze the files or run quietly.  See the <a href="http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx">home page</a> for documentation.  Happy Defragging!</p>
<p><em>Photo (CC) by <a href="http://flickr.com/photos/jmarty/1239950166/">Justin Marty</a></em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=plXtgzTN3F8:1xlpCKseEhQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=plXtgzTN3F8:1xlpCKseEhQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=plXtgzTN3F8:1xlpCKseEhQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=plXtgzTN3F8:1xlpCKseEhQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=plXtgzTN3F8:1xlpCKseEhQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=plXtgzTN3F8:1xlpCKseEhQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=plXtgzTN3F8:1xlpCKseEhQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/plXtgzTN3F8" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;Ever wanted to defragment a certain file or collection of files on your Windows PC, without defragging the entire hard drive?   Here&amp;#8217;s why and how you can do it:
Don&amp;#8217;t Bring Me Down
I recently noticed that one of my oft-used Windows applications was getting slower and slower.  After checking the usual suspects in [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200808/defrag-a-single-file-or-set-of-files-in-windows/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://techbrew.net/articles/200808/defrag-a-single-file-or-set-of-files-in-windows/</feedburner:origLink></item><item><title>Make a Word Cloud from your Feed</title><link>http://feedproxy.google.com/~r/techbrew/~3/M5D24nqyyuk/</link><category>How-To</category><category>ajax</category><category>applet</category><category>json</category><category>pipes</category><category>visualization</category><category>wordle</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Tue, 01 Jul 2008 16:04:54 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/?p=224</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p><a href="http://labs.techbrew.net/wordle/"><img style="float: left;" title="TechBrew Wordle" src="http://techbrew.net/wp-content/uploads/2008/07/tbwordle.png" alt="" width="150" height="300" /></a>I happened across Jonathan Feinberg&#8217;s <a href="http://wordle.net/">Wordle</a> (&#8220;Beautiful Word Clouds&#8221;) visualization recently.Â  Pretty fun, but I instantly wanted a way to create one from an RSS feed.   I didn&#8217;t see a way to do it, so I checked the FAQ confirmed there wasn&#8217;t one available:</p>
<blockquote><p><strong>How about a field to enter a blog/web page/wikipedia article&#8217;s URL?</strong></p>
<p>If you know of an interesting text source that exposes a JSON interface, then I&#8217;d be happy to add a field for it on the &#8220;create&#8221; page. Unfortunately, a web site that doesn&#8217;t expose its data via JSON is not useful to Wordle, because Wordle does all of its text processing on your computer, in the browser. A JSON URL can be dynamically retrieved without hitting the Wordle server.</p></blockquote>
<p><a href="http://pipes.yahoo.com">Yahoo Pipes</a> immediately came to mind.  I noodled around with the Term Extractor module in Pipes, a handy way to pull significant words from the items in an RSS feed.   Thanks to the permissive Creative Commons license used by Wordle, I copied the necessary resources to my server,  added a <a href="http://labs.techbrew.net/wordle/static/v565/wordle.js">new JavaScript function</a> to Wordle&#8217;s code to call the <a href="http://pipes.yahoo.com/techbrew/wordle">new Pipe</a>, get a JSONP callback, and push the resulting feed terms to the Wordle Applet.</p>
<p>Voila: <a href="http://labs.techbrew.net/wordle/">http://labs.techbrew.net/wordle/</a></p>
<p>The CC license on the mod stands, so if Mr. Feinberg finds the mod useful, he&#8217;s free to grab it, clone the Pipe, and put it back into Wordle proper.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=M5D24nqyyuk:nRkjZIPRew4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=M5D24nqyyuk:nRkjZIPRew4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=M5D24nqyyuk:nRkjZIPRew4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=M5D24nqyyuk:nRkjZIPRew4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=M5D24nqyyuk:nRkjZIPRew4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=M5D24nqyyuk:nRkjZIPRew4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=M5D24nqyyuk:nRkjZIPRew4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/M5D24nqyyuk" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;I happened across Jonathan Feinberg&amp;#8217;s Wordle (&amp;#8220;Beautiful Word Clouds&amp;#8221;) visualization recently.Â  Pretty fun, but I instantly wanted a way to create one from an RSS feed.   I didn&amp;#8217;t see a way to do it, so I checked the FAQ confirmed there wasn&amp;#8217;t one available:
How about a field to enter a blog/web page/wikipedia article&amp;#8217;s [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200807/make-a-wordle-from-your-feed/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://techbrew.net/articles/200807/make-a-wordle-from-your-feed/</feedburner:origLink></item><item><title>How to make easy video screencasts of software in Windows</title><link>http://feedproxy.google.com/~r/techbrew/~3/nJOUOi2_CEc/</link><category>How-To</category><category>screencast</category><category>software</category><category>video</category><category>windows media encoder</category><category>wme</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Fri, 14 Mar 2008 11:30:47 PDT</pubDate><guid isPermaLink="false">http://techbrew.net/articles/200803/how-to-make-easy-video-screencasts-of-software-in-windows/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>A video demonstration of software is often far better than static screenshots, and is often more convenient to distribute than arranging for a live demo.    This tutorial will show you how easy it is to record a video &#8220;screencast&#8221; of most applications with the free (as in lunch) <a href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx" rel="nofollow" linktype="raw" linktext="Download Windows Media Encoder|http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx">Windows Media Encoder</a> software.</p>
<p><strong>Caveats and Installation </strong></p>
<ul>
<li>WME won&#8217;t work with applications which draw directly to the screen.   If the application has to run full screen or requires a decent video card, it probably draws directly to the screen.</li>
<li>Check the <a href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/sysreq.aspx" rel="nofollow" linktype="raw" linktext="System Requirements|http://www.microsoft.com/windows/windowsmedia/forpros/encoder/sysreq.aspx">System Requirements</a>â€‰ page to understand what your computer&#8217;s hardware will be capable of doing with the software.</li>
<li>If you want to record audio (like a voice over), you&#8217;ll need a microphone.   If you&#8217;re using a laptop with a built-in microphone, it probably sucks.  Try to get something that you can get closer to your mouth and that has a windscreen.</li>
<li><a href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx" rel="nofollow" linktype="raw" linktext="Download Windows Media Encoder|http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx">Download </a><a href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx" rel="nofollow" linktype="raw" linktext="Download Windows Media Encoder|http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx">Windows Media Encoder</a>â€‰and install it.   Other than picking an directory, the installer is basically hands-free.</li>
</ul>
<p><strong>Setting Up a Screen Capture</strong></p>
<p>Getting the screen capture going is really easy once you&#8217;re familiar with the settings to use.   (You&#8217;ll find the hard part is &#8220;performing for the camera&#8221; once the capture has started.)</p>
<p>Feeling a bit recursive, I used WME to demo a copy of itself, showing a quick walkthrough of the setup.  You can <a href="http://www.youtube.com/v/on5O5djGHRc">watch it on YouTube</a> or download the original <a href="http://techbrewfiles.googlepages.com/techbrew.net_wme_walkthrough.wmv">techbrew.net_wme_walkthrough.wmv</a> generated by WME itself.   YouTube&#8217;s transcoding is unfortunately pretty fuzzy, so I recommend taking a look at the <a href="http://techbrewfiles.googlepages.com/techbrew.net_wme_walkthrough.wmv">original</a> to see what was actually captured.</p>
<p>Here are the basics of setting up a screencast, with some advice about settings along the way:</p>
<p>1. <strong>Run the software</strong> via Start-&gt;Programs-&gt;Windows Media-&gt;Windows Media Encoder.</p>
<p>2. <strong>Select the &#8220;Capture Screen&#8221; option</strong> in the New Session dialog and press the &#8220;OK&#8221; button.</p>
<p>3.  <strong>Choose your capture settings</strong>.  The new session wizard will show you options for doing a screen capture:</p>
<ul>
<li><u>Specific Window</u> &#8211; Select this if the software you want to screencast is in only one window with minimal dialogs or popups.  Dialogs and popups will only show up if they are in front of and smaller than the main window.  Anything which extends outside of the boundary of the main window will be cut off in your video.  If you choose this, you&#8217;ll need to start up your application and have it running before you go to the next step.  Also keep in mind that the size and aspect ratio (length vs. width) of the video display will be the same as your application window.  If your screencast is destined to be played in a video player like YouTube, for example, the aspect ratio can matter a great deal.  If you can&#8217;t resize the window to be what you need, you might want to pick one of the next two options.</li>
<li><u>Region of the Screen</u> &#8211; Select this if you want to section off a portion of your desktop for capture.  Any window, cursor, menu, tooltip in that region will be recorded.   This is an easy way to make sure that the aspect ration of your video is exactly right.   Getting everything you want to show to happen inside that region can take some careful planning and thought, however.</li>
<li><u>Entire Screen</u> &#8211; If you want to simply record your entire screen and everything that happens, this is the option to choose.  Keep in mind, however, that if you have a really high resolution monitor, you&#8217;re going to be capturing a ton of data.   You probably don&#8217;t want to create a video file that has to be played back at the same resolution in order to make out the fine details.   If possible, drop down to a lower resolution before you do the screencast. Something else to keep in mind:  If you only have one display, the WME window will be on your taskbar while you are recording.   If your computer is capable of using two displays, you can use your secondary display as the capture screen to avoid seeing the taskbar.</li>
</ul>
<p>4. <strong>Check (or don&#8217;t check) the Capture Audio option</strong>.  If you want to record a voice-over at the same time you&#8217;re running your application, then check it.   Be forewarned: doing a smooth voice-over while running the software can be pretty tough and takes a ton of practice runs.  If you have access to video editing software, you may want to re-do the voice-over when you don&#8217;t have to concentrate on operating the software.</p>
<p>5. <strong>Click the Next Button</strong>.</p>
<ul>
<li>If you chose &#8220;Specific Window&#8221; or &#8220;Region of the Screen&#8221;, the wizard will prompt you to choose the window or specify the region.  Do so and click the Next button again.</li>
<li>If you chose &#8220;Entire Screen&#8221;, go to Step 6.</li>
</ul>
<p>6.  <strong>Name an output file</strong> &#8211; The wizard will prompt you for an output file name and location.  The video file it creates will be a .wmv video file.</p>
<p>7.  <strong>Choose the capture quality</strong> &#8211; The wizard lets you choose a capture quality setting of Low/Medium/High.  You have to weigh the trade-off between file size and video clarity.   If you have access to video editing software or the means to convert the file format later on, choose High so that you have the best-possible source to start with.</p>
<p>8. <strong>Enter the Display Information</strong> &#8211; You can enter some video file metadata like title and author if you like.  The metadata will only show up if the video file is played in Windows Media Encoder, however.  If you&#8217;re going to edit or convert the file, you don&#8217;t need to bother with this metadata.</p>
<p>9. <strong>Press the Finish button</strong>.</p>
<p>The wizard will close.  Now you&#8217;re actually in the Windows Media Encoder proper, set up and ready to go according to the wizard settings you chose.  (The Properties button on the toolbar will show you the myriad of settings available for a whole slew of use cases.  After you&#8217;ve used WME for awhile, you&#8217;ll may want to dig in here and start experimenting.)</p>
<p>If you&#8217;re in Europe or a region that displays video in the PAL format, you can change that setting via the Tools-&gt;Options menu.  The General Options tab has a &#8220;Default Format&#8221; setting which lets you switch between PAL and NTSC.</p>
<p>10.  <strong>Press the Start Encoding button. </strong></p>
<p>WME will record your cursor movement and screen activity, whether in a window, region, or full screen.  If you chose to capture audio, it will record that as well.</p>
<p>The default behavior of WME is to minimize to the taskbar when you are recording.  Restoring the WME window will pause recording.  If you don&#8217;t want the minimizing behavior, perhaps because you aren&#8217;t doing a full-screen capture, you can turn it off via the Tools-&gt;Options menu under General Options.</p>
<p>11. <strong>Press the Stop button.</strong></p>
<p>WME will stop recording and show you a summary screen of the screencast content.   You can close the dialog or use the &#8220;Play Output File&#8221; button to view your handiwork.</p>
<p>12.  <strong>Save your session settings</strong>.   Use File -&gt; Save to save all your settings to a file that can be reused for another screen capture.  As you use WME more, you&#8217;ll probably start fine-tuning the settings for your particular needs.  Saving those settings for repeatable screencasts will become increasingly more important.</p>
<p>13.  <strong>Experiment, lather, rinse, and repeat</strong>.   There is a lot under the hood in WME, including the ability to push a live video stream to a Windows Media Server.   Play around and see what it can do, and don&#8217;t forget [F1] &#8211; the help files for WME explain the various concepts and settings in the tool.</p>
<p>Happy screencasting!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=nJOUOi2_CEc:-Ih3PYzjfyY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=nJOUOi2_CEc:-Ih3PYzjfyY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=nJOUOi2_CEc:-Ih3PYzjfyY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=nJOUOi2_CEc:-Ih3PYzjfyY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=nJOUOi2_CEc:-Ih3PYzjfyY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=nJOUOi2_CEc:-Ih3PYzjfyY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=nJOUOi2_CEc:-Ih3PYzjfyY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/nJOUOi2_CEc" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;A video demonstration of software is often far better than static screenshots, and is often more convenient to distribute than arranging for a live demo.    This tutorial will show you how easy it is to record a video &amp;#8220;screencast&amp;#8221; of most applications with the free (as in lunch) Windows Media Encoder software.
Caveats [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200803/how-to-make-easy-video-screencasts-of-software-in-windows/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">5</slash:comments><feedburner:origLink>http://techbrew.net/articles/200803/how-to-make-easy-video-screencasts-of-software-in-windows/</feedburner:origLink></item><item><title>RSS Advisory Board Validated by RSS 0.90, 0.91</title><link>http://feedproxy.google.com/~r/techbrew/~3/VXhaB2gpobc/</link><category>Feeds</category><category>News</category><category>dave winer</category><category>netscape</category><category>rss</category><category>rss advisory board</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Thu, 24 Jan 2008 16:08:25 PST</pubDate><guid isPermaLink="false">http://techbrew.net/articles/200801/rss-advisory-board-validated-by-rss-090-091/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>The RSS Advisory Board has had a checkered past and its share of <a href="http://tech.groups.yahoo.com/group/rss-public/message/304">run-ins</a> with Dave Winer over RSS 2.0.   There have been times where it was right to question how relevant it had become.</p>
<p>This <a href="http://blog.netscape.com/2008/01/22/rss-specifications-moving-to-rss-advisory-board/">announcement</a> by Netscape lends a great deal of credibility to the Board-sans-Winer, and hopefully will increase the adoption of their <a href="http://www.rssboard.org/rss-profile#introduction">RSS Profile</a> work.</p>
<blockquote><p>The RSS specification documents, DTDs, and help files for the first versions of RSS (v0.9, v0.91) are being moved to RSSBoard.org, where they will be hosted by the RSS Advisory Board in perpetuity. Netscape will continue to host these files (via redirect) on the My Netscape domain (my.netscape.com) until August 1st, 2008.</p>
<p>&#8230;</p>
<p>All websites that produce RSS 0.9 or RSS 0.91 feeds will need to either convert to using the current standard (RSS v2.0), or if desired, convert their v0.9/v0.91 feeds properly using <a href="http://www.rssboard.org/convert-rss-0-91-to-rss-2-0">this guide</a>, provided by the RSS Advisory Board, by August 1st.</p></blockquote>
<p>Syndication historians will note that although Winer&#8217;s RSS 2.0 is the undisputed winner of the Syndication format race to date, Netscape actually invented RSS by name.   (Winer&#8217;s &#8220;scriptingNews&#8221; format did precede that by 2 years, of course, but it was a home-grown spec intended solely for Scripting News itself.)</p>
<p>It is interesting that Netscape chose to hand over the keys to the RSS Advisory Board, but not to Winer or Harvard Law.</p>
<blockquote></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=VXhaB2gpobc:Vf7fe5yWR4Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=VXhaB2gpobc:Vf7fe5yWR4Y:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=VXhaB2gpobc:Vf7fe5yWR4Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=VXhaB2gpobc:Vf7fe5yWR4Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=VXhaB2gpobc:Vf7fe5yWR4Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=VXhaB2gpobc:Vf7fe5yWR4Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=VXhaB2gpobc:Vf7fe5yWR4Y:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/VXhaB2gpobc" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;The RSS Advisory Board has had a checkered past and its share of run-ins with Dave Winer over RSS 2.0.   There have been times where it was right to question how relevant it had become.
This announcement by Netscape lends a great deal of credibility to the Board-sans-Winer, and hopefully will increase the adoption [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200801/rss-advisory-board-validated-by-rss-090-091/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://techbrew.net/articles/200801/rss-advisory-board-validated-by-rss-090-091/</feedburner:origLink></item><item><title>Freed Demon!</title><link>http://feedproxy.google.com/~r/techbrew/~3/yKS8knfN64w/</link><category>Feeds</category><category>News</category><category>atom</category><category>feed demon</category><category>netnewswire</category><category>newsgator</category><category>rss</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Wed, 09 Jan 2008 11:40:50 PST</pubDate><guid isPermaLink="false">http://techbrew.net/articles/200801/freed-demon/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>Newsgator has <a href="http://www.rassoc.com/gregr/weblog/2008/01/09/newsgators-rss-clients-are-now-free/">announced</a> that a bevy of their RSS/Atom clients, including the excellent <a href="http://www.newsgator.com/Individuals/FeedDemon/Default.aspx">FeedDemon</a> is now free:</p>
<blockquote><p><img src="http://techbrew.net/wp-content/uploads/2008/01/product_feeddemon.gif" alt="FeedDemon" align="right" /><a href="http://www.newsgator.com/Individuals/FeedDemon/Default.aspx">FeedDemon 2.6</a>, <a href="http://www.newsgator.com/Individuals/NetNewsWire/Default.aspx">NetNewsWire 3.1</a>, <a href="http://www.newsgator.com/Individuals/NewsGatorInbox/Default.aspx">Inbox 3.0 (beta)</a>, and <a href="http://www.newsgator.com/Individuals/NewsGatorGo/Default.aspx">NewsGator Go! for Windows Mobile 2.0</a>.  Each of these is a pretty major release on its own &#8211; tons of new features in all of them.</p>
<p>But second, every one of those applications is now free!  Free as in beer, that is.  And add to the free list <a href="http://www.newsgator.com/Individuals/NewsGatorGo/Default.aspx">NewsGator Go! for BlackBerry</a> as well. And not only are they free, but our online services (including synchronization) are now free as well! Not to mention our <a href="http://m.newsgator.com/">iPhone reader</a>, <a href="http://m.newsgator.com/">HTML mobile reader</a>, and all of the other applications that are part of our online platform.</p></blockquote>
<p>Hat tip to <a href="http://www.cleverclogs.org/">CleverClogs</a> for spotting the news.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=yKS8knfN64w:t84te_17oQY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=yKS8knfN64w:t84te_17oQY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=yKS8knfN64w:t84te_17oQY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=yKS8knfN64w:t84te_17oQY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=yKS8knfN64w:t84te_17oQY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=yKS8knfN64w:t84te_17oQY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=yKS8knfN64w:t84te_17oQY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/yKS8knfN64w" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;Newsgator has announced that a bevy of their RSS/Atom clients, including the excellent FeedDemon is now free:
FeedDemon 2.6, NetNewsWire 3.1, Inbox 3.0 (beta), and NewsGator Go! for Windows Mobile 2.0.  Each of these is a pretty major release on its own &amp;#8211; tons of new features in all of them.
But second, every one of [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200801/freed-demon/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://techbrew.net/articles/200801/freed-demon/</feedburner:origLink></item><item><title>On Craft</title><link>http://feedproxy.google.com/~r/techbrew/~3/gDK_dOBMY3Q/</link><category>Opinion</category><category>craft</category><category>design patterns</category><category>programming</category><category>software</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Mon, 07 Jan 2008 11:05:15 PST</pubDate><guid isPermaLink="false">http://techbrew.net/articles/200801/on-craft/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>Ben Abernathy writes a <a href="http://benabernathy.wordpress.com/2008/01/06/the-truth-about-computer-science-and-programming-for-a-living">poignant observation</a> about computer science and the kinds of people that come (or don&#8217;t come) out of college programs.Â  Â  The first group ditches computer science altogether, the second delights in making things work, but the third strives for something more elusive: elegance and beauty.Â  Ben is right to note that if you&#8217;re looking for beauty in software, you can very well end up a miserable idealist.</p>
<p>Personally, I&#8217;ve had to come to a place where I resolve to plant beautiful code wherever I can, even if it is surrounded by weeds I&#8217;m not allowed to pull.Â  Even when I fail at it, I find that the effort of striving to improve, rather than just make do, makes me a better and happier software engineer.</p>
<p>Having been in software for over a decade, I have found one easy way to spot the differences between coworkers and competitors in Group 2 (&#8220;Get it done&#8221;) and Group 3 (&#8220;Make it beautiful&#8221;): <em>Regard, or disregard, for craft.</em></p>
<p><strong>Doghouse Software</strong></p>
<p>It&#8217;s pretty obvious when you look at carpentry, masonry, or cooking which people care about their craft, and which people just &#8220;got it done.&#8221;Â  Unfortunately, craft it much easier to see in the physical space than in software.Â  Even a gorgeous GUI can hide some unspeakably gnarly code.</p>
<p>I heard <a href="http://en.wikipedia.org/wiki/Grady_Booch">Grady Booch</a> speak at Java One many years ago.Â  He said that most people build applications like they build doghouses:Â  Bang together some wood, and if the dog is mostly dry, you&#8217;re done.Â  Enterprise applications, he noted, are usually skyscrapers composed of a bunch of doghouses duct-taped together.</p>
<p>Doghouse software is built with little regard for craft.Â Â  This problem may not show up right away, but as soon as the requirements or use cases expand, the shoddy craftsmanship becomes painfully clear.Â Â  Ask anybody trying to retrofit web services on a legacy architecture, and you&#8217;ll see what I mean.</p>
<p><strong>Process and Craft</strong></p>
<p>Process, I must say, should not be confused with craft.Â  Craft should involve some process , but I&#8217;ve never seen process generate craftsmanship.Â  (I have seen beautiful code in CMM-4 shops and in startups.Â  I&#8217;ve also seen hideous crap in both.)Â  The difference invariably comes down to regard for craft by the individual.</p>
<p><strong>Questions Asked and Unasked</strong></p>
<p>&#8220;Does it work?&#8221;Â  If software is just a job, this is where a programmer stops asking questions.Â  If she cares about craft, she also asks questions like:</p>
<ul>
<li>&#8220;Can I prove it will work reliably? (It it testable?)&#8221;</li>
<li>&#8220;Is it easy to use, does it eliminate excise?Â  (Is it usable, user-friendly, intuitive?)&#8221;)</li>
<li>&#8220;Can I easily swap out visualizations? (Are there clear boundaries between model, view, and controller?)&#8221;</li>
<li>&#8220;Will it work if it becomes modestly or even insanely popular? (Is it scalable?)&#8221;</li>
<li>&#8220;Will it work if I have to add new features, or change the persistence layer, or play well in <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture">SOA</a>?Â  (Is it modular, loosely-coupled, platform-agnostic, maintainable?)</li>
</ul>
<p>These questions get at the heart of true software craftsmanship: Be in the business of building products that will stand the test of time, not one-offs with zero shelf life.</p>
<p>Application-wide craftsmanship can be, as Joel Spolsky rightly <a href="http://www.joelonsoftware.com/articles/Craftsmanship.html">notes</a>, &#8220;incredibly expensive. &#8220;Â  I firmly believe, however, that individuals can improve their craft and stay on budget in most situations. I have found that improving my craft improves my productivity and the maintainability of my code.</p>
<p><strong>Go to the Source </strong></p>
<p>Source code it often a great way to tell whether a programmer cares about craft.Â Â Â  Is it clean and easy to read?Â Â  Are design patterns leveraged?Â  Was attention paid to loose coupling, encapsulation, dependency injection?Â  Are there an appropriate amount of comments?Â Â  Are complex methods broken down into simpler ones?Â  Are there unit tests?Â  Does the code, and the compiled product, look like something the programmer took pride in?Â  Or does it &#8220;just work?&#8221;</p>
<p><strong>Finding Craftsman </strong></p>
<p>My quest for interviewing new hires is not just to discern talent, but a regard for craftsmanship.Â Â  It is rare that a candidate can present source code, however.Â  I&#8217;ve found it difficult to really learn in an interview how much a person cares about the quality of his work.</p>
<p>Joel of Joel on Software uses <a href="http://www.fogcreek.com/Jobs/SummerIntern.html">summer internships</a> to find the kind of people he wants, but most companies can&#8217;t reproduce his model or, honestly, draw that level of internship talent.Â  And, lets face, it, you can&#8217;t bring in senior engineers as summer interns.</p>
<p>Can craftsmanship be discerned in an interview without having the source code? Â  If you have any suggestions, please share them in the comments below.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=gDK_dOBMY3Q:Ag0i0RXHbec:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=gDK_dOBMY3Q:Ag0i0RXHbec:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=gDK_dOBMY3Q:Ag0i0RXHbec:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=gDK_dOBMY3Q:Ag0i0RXHbec:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=gDK_dOBMY3Q:Ag0i0RXHbec:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=gDK_dOBMY3Q:Ag0i0RXHbec:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=gDK_dOBMY3Q:Ag0i0RXHbec:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/gDK_dOBMY3Q" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;Ben Abernathy writes a poignant observation about computer science and the kinds of people that come (or don&amp;#8217;t come) out of college programs.Â  Â  The first group ditches computer science altogether, the second delights in making things work, but the third strives for something more elusive: elegance and beauty.Â  Ben is right to note that [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200801/on-craft/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://techbrew.net/articles/200801/on-craft/</feedburner:origLink></item><item><title>High-Tech Helpers for New Years Resolutions</title><link>http://feedproxy.google.com/~r/techbrew/~3/CpH3FQeHDVQ/</link><category>How-To</category><category>die</category><category>exercise</category><category>high tech</category><category>new_years_resolution</category><category>resolutions</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Wed, 26 Dec 2007 20:04:19 PST</pubDate><guid isPermaLink="false">http://techbrew.net/articles/200712/high-tech-helpers-for-new-years-resolutions/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p>Wondering if your New Years&#8217; resolutions will make it past February?  While there is no substitute for personal discipline and all that stuff, it is nice to have some help along the way.  Here are some ways that technology can make that resolution just a little bit easer to keep:</p>
<p><strong>G</strong><img src="http://techbrew.net/wp-content/uploads/2007/12/tour_share.png" alt="rtm" align="right" /><strong>et Things Done<br />
</strong></p>
<p>Do you just need help remembering all the stuff you didn&#8217; get around to last year?  Go no further than <a href="http://www.rememberthemilk.com/">Remember The Milk</a>.  This free service has it all:  To-do lists with calendering, email/SMS/RSS/instant message reminders, and integration with everything from the iPhone to Google homepages.</p>
<p>If you want to embrace hard-core efficiency, read <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FGetting-Things-Done-Stress-Free-Productivity%2Fdp%2F0142000280%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1198530986%26sr%3D1-1&amp;tag=techbrew-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Getting Things Done</a><img src="http://www.assoc-amazon.com/e/ir?t=techbrew-20&amp;l=ur2&amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" /> and then check out this <a href="http://www.priacta.com/Articles/Comparison_of_GTD_Software.php">list of GTD software tools</a>.  The list has both buyware and freeware for Palm, Pocket PC, Linux, and Windows.</p>
<p><strong>Get Fit</strong></p>
<p><img src="http://techbrew.net/wp-content/uploads/2007/12/ipodnike-2-080306.jpg" alt="nike ipod" align="right" />The coolest exercise gadget this year has to be the <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FApple-MA365LL-B-Nike-Sport%2Fdp%2FB000JVFKH8%3Fie%3DUTF8%26s%3Delectronics%26qid%3D1198528812%26sr%3D8-1&amp;tag=techbrew-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Nike + iPod Sport Kit</a><img src="http://www.assoc-amazon.com/e/ir?t=techbrew-20&amp;l=ur2&amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" />. If you own a pair of Nikes that can accomodate a special sensor, this kit turns your iPod into a performance monitor and coach.  At $45, it beats buying a new treadmill.</p>
<p>Need help with a exercise program and fitness tracker?  Here is a <a href="http://www.fitwatch.com/tracker/tracker.php">Online Fiteness Tracker</a> that helps you manage both your diet and your exercise plan, monitoring nutrition, and creating weekly and monthly reports of your progress.  There is a <a href="http://www.fitwatch.com/fitnesstracker/register_free.php">free version</a> of this service as well.</p>
<p><img src="http://techbrew.net/wp-content/uploads/2007/12/polenta-beef.thumbnail.jpg" alt="polenta" align="right" /><strong>Eat Right</strong></p>
<p>Counting calories? If you have a personalized Google homepage, you can add this <a href="http://www.google.com/ig/adde?moduleurl=http://www.labpixies.com/campaigns/calories/calories.xml&amp;source=clha">Calorie Calculator widget</a>.  &#8220;Use the calorie calculator to see each meal&#8217;s calorie details and sum up your daily total. Use the settings to see your recommended average daily intake.&#8221;  If you want something more portable, try the <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FRobi-Nutrition-NA62005F-Assistant-Calorie%2Fdp%2FB000ENOZ04%3Fie%3DUTF8%26s%3Delectronics%26qid%3D1198528073%26sr%3D8-6&amp;tag=techbrew-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325">Nutrition Assistant</a><img src="http://www.assoc-amazon.com/e/ir?t=techbrew-20&amp;l=ur2&amp;o=1" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" />.  Or if you own a Windows Mobile device here is a <a href="http://www.pocketpcmag.com/_archives/feb06/weightloss.aspx">roundup of diet software for smartphones</a>.</p>
<p>Need to completely overhaul your diet?  I personally recommend <a href="http://southbeachdiet.com">The South Beach Diet</a> website.  You get lots of tools to help shed the pounds, including a diet profile to track your progress, forums and diaries to share successes and struggles with like-minded people.  Best of all, it has a meal planner that lets you pick and print recipes, including a coalated shopping  list.  (If you pick four recipes that each call for a 1/4 cup of minced onion, for example, the shopping list will combine the amounts and let you know to buy a cup of mixed onion for that set.)</p>
<p><strong>Get Going!</strong></p>
<p>Good luck in 2008!  If you use any high-tech tools not listed here, drop a comment and let us know what works for you.  Happy New Year from TechBrew!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=CpH3FQeHDVQ:Ce6MER-XD3s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=CpH3FQeHDVQ:Ce6MER-XD3s:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=CpH3FQeHDVQ:Ce6MER-XD3s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=CpH3FQeHDVQ:Ce6MER-XD3s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=CpH3FQeHDVQ:Ce6MER-XD3s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=CpH3FQeHDVQ:Ce6MER-XD3s:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=CpH3FQeHDVQ:Ce6MER-XD3s:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/CpH3FQeHDVQ" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;Wondering if your New Years&amp;#8217; resolutions will make it past February?  While there is no substitute for personal discipline and all that stuff, it is nice to have some help along the way.  Here are some ways that technology can make that resolution just a little bit easer to keep:
Get Things Done

Do you [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200712/high-tech-helpers-for-new-years-resolutions/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://techbrew.net/articles/200712/high-tech-helpers-for-new-years-resolutions/</feedburner:origLink></item><item><title>Free Ruby on Rails Book (limited time only)</title><link>http://feedproxy.google.com/~r/techbrew/~3/N1eC5RUnjsI/</link><category>News</category><category>rails</category><category>ruby</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Thu, 29 Nov 2007 10:14:51 PST</pubDate><guid isPermaLink="false">http://techbrew.net/articles/200711/free-ruby-on-rails-book-limited-time-only/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p><img src="http://techbrew.net/wp-content/uploads/2007/11/cover-popup1.png" alt="Rails Book" align="left" />If you&#8217;ve been looking for a good excuse to learn <a href="http://www.rubyonrails.org/">Ruby on Rails</a>, now is a great time.</p>
<p><a href="http://sitepoint.com">Sitepoint.com</a> is giving away the full PDF of &#8220;<a href="http://rails.sitepoint.com/">Build Your Own Ruby on Rails Web Applications</a>&#8221; through the end of the month of November.   All you need to do is provide an email address and they&#8217;ll send you a link to the PDF download.</p>
<p>I started reading it last night, and it seems to be oriented to people familiar with building web applications but aren&#8217;t webdev pros.  (If you&#8217;re the &#8220;just give me the API&#8221; kind of developer, this book is probably a little too verbose for you.)  For details of what is inside, you can take a peek at the <a href="http://www.sitepoint.com/books/rails1/toc.php">table of contents</a>.</p>
<h5>*Note: Free PDF offer expired: Saturday, December 01st, 2007 &#8211; 00:00:00 AM</h5>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=N1eC5RUnjsI:QZelG1l4xlo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=N1eC5RUnjsI:QZelG1l4xlo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=N1eC5RUnjsI:QZelG1l4xlo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=N1eC5RUnjsI:QZelG1l4xlo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=N1eC5RUnjsI:QZelG1l4xlo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=N1eC5RUnjsI:QZelG1l4xlo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=N1eC5RUnjsI:QZelG1l4xlo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/N1eC5RUnjsI" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;If you&amp;#8217;ve been looking for a good excuse to learn Ruby on Rails, now is a great time.
Sitepoint.com is giving away the full PDF of &amp;#8220;Build Your Own Ruby on Rails Web Applications&amp;#8221; through the end of the month of November.   All you need to do is provide an email address and they&amp;#8217;ll [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200711/free-ruby-on-rails-book-limited-time-only/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://techbrew.net/articles/200711/free-ruby-on-rails-book-limited-time-only/</feedburner:origLink></item><item><title>How to put IntelliJ IDEA on Ubuntu</title><link>http://feedproxy.google.com/~r/techbrew/~3/0Z1_66QGkS4/</link><category>How-To</category><category>code</category><category>ide</category><category>intellij</category><category>java</category><category>linux</category><category>ubuntu</category><category>xubuntu</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mark Woodman</dc:creator><pubDate>Wed, 28 Nov 2007 08:49:11 PST</pubDate><guid isPermaLink="false">http://techbrew.net/articles/200711/how-to-put-intellij-idea-on-ubuntu/</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<br/><p><img src="http://techbrew.net/wp-content/uploads/2007/11/idea.jpg" alt="IntelliJ IDEA" align="right" />I&#8217;ve been a user of the excellent <a href="http://www.jetbrains.com/idea/">IntelliJ Java IDE</a> for 4 years on Windows. Even though the official Linux support by JetBrains is only for RedHat, you can also install IntelliJ fairly easily on <a href="http://www.ubuntu.com/">Ubuntu</a>.   I&#8217;ve tested this with <a href="http://www.xubuntu.org/">Xubunto</a> 7.10 (Gutsy), <a href="http://java.sun.com/javase/6/">Java 6</a>, and IntelliJ 7.  Here&#8217;s how to do it in four basic steps:</p>
<p><strong>1) Get Java </strong></p>
<p>Install the Java 6 JDK, which IDEA itself needs to run. (You can have other JDKs for your projects, but you&#8217;ll need this one to run IntelliJ itself.) For example, type this in a terminal:</p>
<pre>sudo apt-get install sun-java6-jdk</pre>
<p>Follow the prompts for root password, download confirmation, and eventually the Sun EULA to install Java itself. If it installed successfully, you should be able to type this at a prompt:</p>
<pre>java -version</pre>
<p>&#8230; to get several lines telling you the version of Java you have installed. If this doesn&#8217;t work, refer to Sun&#8217;s documentation on troubleshooting installations.</p>
<p><strong>2) Get IntelliJ IDEA </strong></p>
<p>Download the latest version of IntelliJ IDEA for Linux:</p>
<p><a href="http://www.jetbrains.com/idea/download/index.html#linux">http://www.jetbrains.com/idea/download/index.html#linux</a></p>
<p>Once the download is finished, extract the archive using the correct filename according to your download. For example, to install IntelliJ in <em>/usr/lib</em>, do the following:</p>
<pre><span>tar xfz idea-7.0.1.tar.gz ./usr/lib/</span></pre>
<p>The IntelliJ installation will now be in a subdirectory indicating the build number, in the format &#8220;idea-xxxx&#8221;. In the case of IDEA 7.0.1, the app directory is &#8220;<em>idea-7364</em>&#8220;. (Once the extraction is done, you can delete the downloaded archive to conserve disk space if needed.)</p>
<p><strong>3) Get Environmental </strong></p>
<p>There are a couple of environment variables to be taken care of. First, you need to set a new environment variable that tells IntelliJ where your install of Java is. For example:</p>
<pre>export JDK_HOME="/usr/lib/jvm/java-6-sun/"</pre>
<p>Use the &#8220;<em>env</em>&#8221; command, or just &#8220;<em>echo $JDK_HOME</em>&#8220;, to verify the variable is set.</p>
<p>Next, you&#8217;ll need to edit <em>/etc/environment</em> with superuser rights in the editor of your choice, adding the <em>idea-xxxx/bin</em> directory to your <em>PATH</em> variable. For example, you can edit the environment with the GUI mousepad editor like so:</p>
<pre>sudo mousepad /etc/environment</pre>
<p>The various directories in the environment PATH variable are delineated by colons (:). Append the current value (inside the quotes) with a new colon and then add the <em>idea-xxxx/bin</em> location. It should look something like this:</p>
<pre>PATH="/usr/local/sbin:/usr/local/bin:/usr/lib/idea-7364/bin"</pre>
<p>Save and close the environment file. You&#8217;ll need to &#8220;source&#8221; it for your system to pick up the new directory in the PATH. You can verify your changes by echoing the variable as well:</p>
<pre>source /etc/environment</pre>
<pre>echo $PATH</pre>
<p>If you see the path to IntelliJ returned in the output, you&#8217;re all set.</p>
<p>Lastly, you may want to change the VM settings of IntelliJ. This depends entirely on your project size and other factors, so you&#8217;ll need to base these settings on your own need. The settings are in <em>idea-xxx/bin/idea.vmoptions</em>.</p>
<p><strong>4) Get Started!</strong></p>
<p>That&#8217;s it.  Now you can run &#8220;<em>idea.sh</em>&#8221; from a terminal in any directory, and IntelliJ should launch&#8230;</p>
<pre>idea.sh</pre>
<p>If you run into problems, be sure to double-check the readme files in the installation directory.</p>
<p><strong>Give Back</strong></p>
<p>If this article proved useful to you, please drop us a comment and let us know.  Or, if you find problems/alternate solutions along the way, please share them for the benefit of others.  Thanks and happy coding!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techbrew?a=0Z1_66QGkS4:m7Hn68FReJ0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/techbrew?i=0Z1_66QGkS4:m7Hn68FReJ0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=0Z1_66QGkS4:m7Hn68FReJ0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techbrew?i=0Z1_66QGkS4:m7Hn68FReJ0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=0Z1_66QGkS4:m7Hn68FReJ0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/techbrew?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techbrew?a=0Z1_66QGkS4:m7Hn68FReJ0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techbrew?i=0Z1_66QGkS4:m7Hn68FReJ0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techbrew/~4/0Z1_66QGkS4" height="1" width="1"/>]]></content:encoded><description>&lt;br/&gt;I&amp;#8217;ve been a user of the excellent IntelliJ Java IDE for 4 years on Windows. Even though the official Linux support by JetBrains is only for RedHat, you can also install IntelliJ fairly easily on Ubuntu.   I&amp;#8217;ve tested this with Xubunto 7.10 (Gutsy), Java 6, and IntelliJ 7.  Here&amp;#8217;s how to do [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://techbrew.net/articles/200711/how-to-put-intellij-idea-on-ubuntu/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">23</slash:comments><feedburner:origLink>http://techbrew.net/articles/200711/how-to-put-intellij-idea-on-ubuntu/</feedburner:origLink></item></channel></rss>
