<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Eric Blue's Blog &#187; Software Development</title>
	<atom:link href="http://eric-blue.com/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://eric-blue.com</link>
	<description>Technology, Philosophy, and Personal Development</description>
	<lastBuildDate>Mon, 06 Feb 2012 02:30:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Fitness Tracking Platform: Update on Progress</title>
		<link>http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/</link>
		<comments>http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 23:58:19 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[InfoViz]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Personal Development]]></category>
		<category><![CDATA[Personal Informatics]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1407</guid>
		<description><![CDATA[Last August, I enthusiastically blogged about an idea I had for creating a Fitness Tracking Platform; personal informatics for fitness.  Since that time I&#8217;ve been gradually making progress and am getting closer to fulfilling that ...]]></description>
			<content:encoded><![CDATA[<p>Last August, I enthusiastically blogged about an idea I had for creating a <a href="http://eric-blue.com/2010/08/14/fitness-tracking-platform-personal-informatics-for-fitness/">Fitness Tracking Platform</a>; personal informatics for fitness.  Since that time I&#8217;ve been gradually making progress and am getting closer to fulfilling that original vision.  I figured I would do a quick writeup and share some of the progress I&#8217;ve made, and layout a simple roadmap for taking it to the next level.  For right now I have some screenshots I can share.  In the coming weeks I plan on putting up an actual demo application, and may release a large portion of the code as open source.  Ultimately, I still need to figure out what I plan to do with it, but my immediate goal is to build something that is practical and useful for myself.  The original idea started out to mainly track fitness related data (and that&#8217;s primarily what I&#8217;ve been doing), but the application for this could apply generically to any form of self tracking.  It&#8217;s possible this could be one of the earliest efforts to create an open source application for personal tracking (see the <a href="http://quantifiedself.com/self-tracking-links-to-get-you-started/">Quantified Self list of software</a>).</p>
<p><strong>What&#8217;s Been Done So Far?</strong></p>
<p>If you look at the <a href="http://eric-blue.com/wp-content/uploads/2010/08/Fitness_Tracking_Platform.jpg">original diagram I created</a>, there where a few different components to this tracking platform (local storage, data collection scripts/api integration, and the presentation layer).</p>
<ul>
<li><strong>Local Storage &#8211; Personal copy of data stored in MySQL</strong>.  I created the local storage piece almost immediately after writing the article in Aug.  I chose to use MySQL as a database, and created a schema that was suited towards collecting my initial data set of interest: data from my FitBit and WiThings scale.  The schema accounts for storing both daily and intraday activity for calories burned/consumed, activity score (+very active, moderately active, and lightly active), total distance, steps taken, sleep, and weight.  I&#8217;ve now created about a dozen or so SQL queries that will generate useful reports on this historical data.</li>
</ul>
<ul>
<li><strong>Data collection scripts/API Integration. </strong>I immediately leveraged the<a href="http://eric-blue.com/projects/fitbit/"> Perl FitBit API </a>I originally wrote last April to sync data from the FitBit site to my local database.  I created a nightly cron job that will request the daily + intraday stats and save to the db using Perl::DBI.  I also took a similar approach with the WiThings scale.  Although I haven&#8217;t created a Perl wrapper yet for Withings, they do publish and easy to use <a href="http://www.withings.com/en/api/bodyscale">REST API</a> for getting access to your weight.  This script also runs on a nighly basis and saves weight information to the local database.</li>
</ul>
<ul>
<li><strong>Presentation Layer</strong>.  This has been the most complicated piece so far.  I&#8217;ve created a Java-based webapp using Spring 3.0/Jetty to build the analytics UI.  For now the UI is built with 2 major views: a dashboard, and reporting interface.  The dashboard displays both historical and daily information in a visually-pleasing format using Google Charts.  You can see a daily snapshot (+ weekly, quarterly, and yearly views) and see stats on your activity, distance, steps taken, weight, sleep and intraday stats (activity and sleep level on an hourly basis).  I&#8217;ve also built a light home-grown reporting interface that integrates with the Google Visualization API and easily builds dynamic tables and charts based on the provided SQL queries.</li>
</ul>
<p><strong>Screenshots</strong></p>
<ul>
<li>Dashboard View</li>
</ul>
<p style="text-align: center;"><a title="dashboard by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5523777619/"><img class="aligncenter" src="http://farm6.static.flickr.com/5253/5523777619_2aebd6852b.jpg" alt="dashboard" width="499" height="500" /></a></p>
<ul>
<li>Historical Stats &#8211; Multiple Activity Logs</li>
</ul>
<p style="text-align: center;"><a title="historical by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524370032/"><img class="aligncenter" src="http://farm6.static.flickr.com/5100/5524370032_f9cb7461c8.jpg" alt="historical" width="500" height="212" /></a></p>
<ul>
<li>Historical Stats &#8211; Distance Bar Chart</li>
</ul>
<p style="text-align: center;"><a title="historical2 by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524935054/"><img class="aligncenter" src="http://farm6.static.flickr.com/5015/5524935054_5a6257c9cd.jpg" alt="historical2" width="500" height="212" /></a></p>
<ul>
<li>Daily Stats</li>
</ul>
<p style="text-align: center;"><a title="daily by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524369764/"><img class="aligncenter" src="http://farm6.static.flickr.com/5174/5524369764_7523be1e36.jpg" alt="daily" width="500" height="213" /></a></p>
<ul>
<li>Intraday Stats</li>
</ul>
<p style="text-align: center;"><a title="intraday by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524370070/"><img class="aligncenter" src="http://farm6.static.flickr.com/5171/5524370070_29ac8c1a96.jpg" alt="intraday" width="500" height="212" /></a></p>
<ul>
<li>Reporting</li>
</ul>
<p style="text-align: center;"><a title="report_closeup by ericblue76, on Flickr" href="http://www.flickr.com/photos/56683314@N00/5524524164/"><img class="aligncenter" src="http://farm6.static.flickr.com/5059/5524524164_17005eabdc.jpg" alt="report_closeup" width="500" height="233" /></a></p>
<p><strong>Immediate Next Steps?</strong></p>
<p>The current code is fairly stable and mostly ready for a demo.  Before I make it live I&#8217;m planning on adding a few major features:</p>
<ol>
<li>Geo-Location support &#8211; I&#8217;ve been <a href="http://eric-blue.com/2010/08/28/geolocation-gps-and-self-tracking/">tracking GPS coordinates</a> since I purchased my QStarz device in September.  I&#8217;m thinking of adding a couple Map and GPS tracklog views to the Dashboard.  And, this could lead to some interesting location-based reporting as well.  I have a ton of saved .gpx files, so it&#8217;s a matter of writing an integration script to parse and store in the db.  And, some lightweight presentation layer to dynamically generate .KML and overlay on top of Google Maps.</li>
<li>Simple mobile interface.  I&#8217;d like to be able to access the interface using my iPhone and having some light interface to get quick stats and graphs would be nice.</li>
<li>Come up with a catchy project name.  As I stated earlier, although the original scope of this was for fitness tracking, this type of platform can be used for tracking any type of personal statistics.</li>
</ol>
<p><strong>Future Roadmap</strong></p>
<ol>
<li>Tracking detailed sleep info from <a href="http://www.myzeo.com/">MyZeo</a>.  Since I wrote the original vision I had the chance to do a review for the <a href="http://eric-blue.com/2011/01/02/zeo-personal-sleep-coach-hacking-your-way-to-a-better-nights-sleep/">MyZeo sleep device</a>.  I&#8217;ve also <a href="https://github.com/ericblue/Perl-Zeo-API">created a Perl API</a> so it&#8217;s simply a matter of writing the integration script to start recording in the MySQL DB.</li>
<li>Tracking workout info from my iPhone app &#8211; iFitness.  I also have about 10 years worth of workout information either stored from previous products (like CrossTrainer) or written down.</li>
<li>Tracking heartrate info from my Garmin heartrate monitor watch.</li>
<li>Integrate with the new official <a href="http://fitbit.com">Fitbit</a> API.  Since I wrote my initial (unofficial) Perl API, fitbit has embraced the developer community and <a href="http://dev.fitbit.com/">released a support API </a>(yes!)</li>
</ol>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Fitness+Tracking+Platform%3A+Update+on+Progress+http://eric-blue.com/?p=1407+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/&amp;title=Fitness+Tracking+Platform%3A+Update+on+Progress" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2011/03/13/fitness-tracking-platform-update-on-progress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fitbit &#8211; Unofficial Perl API and CSV Download</title>
		<link>http://eric-blue.com/2010/05/11/fitbit-unofficial-perl-api-and-csv-download/</link>
		<comments>http://eric-blue.com/2010/05/11/fitbit-unofficial-perl-api-and-csv-download/#comments</comments>
		<pubDate>Wed, 12 May 2010 06:03:57 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Fitness]]></category>
		<category><![CDATA[Headline]]></category>
		<category><![CDATA[Health]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Quantified Self]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1206</guid>
		<description><![CDATA[The other week I received my Fitbit and have been in geek heaven ever since.  Fitbit is a tiny magical device($99 USD) that automatically tracks your fitness and sleep statistics. Throughout the day it ...]]></description>
			<content:encoded><![CDATA[<p>The other week I received my <a href="http://www.fitbit.com">Fitbit</a> and have been in geek heaven ever since.  Fitbit is a tiny magical device($99 USD) that automatically tracks your fitness and sleep statistics. Throughout the day it will track your calories burned, steps taken, distance traveled, your activity level, and even track your sleep patterns. All of this data is synced wirelessly through your base station to Fitbit&#8217;s website where you can get very detailed daily and historical graphs. The main benefit is that you can be conscious of and keep track of your fitness level, food your eating, and how well you&#8217;re sleeping so you can make better choices throughout the day.</p>
<p>The Fitbit team is working hard on manufacturing and distribution and have future plans for releasing an official API.  Although the website does offer most of the features you&#8217;ll need, you can not download your data.  The goals is to have an API that will allow you to do this and also integrate some other applications.  I spent some time coding last weekend and have create an OO Perl API to access all Fitbit information and even download historical data in CSV format.  I&#8217;ve setup a &#8216;Fitbit Hack&#8217; project.  Check out:<br />
<a href="http://eric-blue.com/projects/fitbit/"><img class="aligncenter size-medium wp-image-1211" title="fitbit_portal" src="http://eric-blue.com/wp-content/uploads/2010/05/fitbit_portal-300x247.gif" alt="" width="300" height="247" /></a><br />
<a href="http://eric-blue.com/projects/fitbit/">http://eric-blue.com/projects/fitbit/</a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Fitbit+%E2%80%93+Unofficial+Perl+API+and+CSV+Download+http://eric-blue.com/?p=1206+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2010/05/11/fitbit-unofficial-perl-api-and-csv-download/&amp;title=Fitbit+%E2%80%93+Unofficial+Perl+API+and+CSV+Download" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2010/05/11/fitbit-unofficial-perl-api-and-csv-download/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Example Document Browser Code</title>
		<link>http://eric-blue.com/2010/02/12/example-document-browser-code/</link>
		<comments>http://eric-blue.com/2010/02/12/example-document-browser-code/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 18:51:56 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Knowledge Management]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=1039</guid>
		<description><![CDATA[Since I posted my article last month on How To Create Your Own Personal Document Viewer, I&#8217;ve had a few inquiries on how people could have a similar setup themselves.  I thought it might be ...]]></description>
			<content:encoded><![CDATA[<p>Since I posted my article last month on <a href="http://eric-blue.com/2010/01/03/how-to-create-your-own-personal-document-viewer-like-scribd-or-google-books/">How To Create Your Own Personal Document Viewer</a>, I&#8217;ve had a few inquiries on how people could have a similar setup themselves.  I thought it might be helpful to .zip up the docbrowser project and show some of the code that does the conversions using the utilities I illustrated in the article.  Disclaimer: This code is by <span style="text-decoration: underline;">no means</span> my finest work (it was hacked together on a Sat. afternoon), but it gets the job done.  At a high-level the code is very simple:</p>
<ul>
<li>Determine the doc extension and perform the appropriate conversion (.doc.pdf.xls) or redirect using an external app (mindmapviewer or Google books)</li>
<li>Assign conversion commands to be executed for each doc type</li>
<li>Before doc display, lookup converted doc in cache to speed up render time (use MD5 hash on the title)</li>
</ul>
<p>I&#8217;ve created a .zip file(4.1MB) of the entire <a href="http://eric-blue.com/projects/docbrowser/doc_browser_1_0.zip">Doc Browser sample code</a>.  It contains the simple .CGI Conversion script, along with jQueryFileTree for rendering the doc tree, FlexPaper, and some sample documents.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Example+Document+Browser+Code+http://eric-blue.com/?p=1039+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2010/02/12/example-document-browser-code/&amp;title=Example+Document+Browser+Code" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2010/02/12/example-document-browser-code/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>How To Create Your Own Personal Document Viewer (Like Scribd or Google Books)</title>
		<link>http://eric-blue.com/2010/01/03/how-to-create-your-own-personal-document-viewer-like-scribd-or-google-books/</link>
		<comments>http://eric-blue.com/2010/01/03/how-to-create-your-own-personal-document-viewer-like-scribd-or-google-books/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 07:35:21 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Knowledge Management]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=977</guid>
		<description><![CDATA[Like most people, I have a large number of personal documents in a variety of formats (PDF, Excel, Word, RTF, PowerPoint, etc.).  For the typical user, organizing these documents in a  'My Documents' folder and having MS Office/Open Office/Adobe Acrobat installed simply gets the job done.  However, I've been looking for some sort of "Web 2.0" solution to view my documents while I'm on the go. And, since my <a href="http://eric-blue.com/my-projects/personal-memex/">knowledge manager is web-based</a>, I'd like a way to browse and embed personal documents directly in my wiki without needing any special software.]]></description>
			<content:encoded><![CDATA[<p><strong>Overview</strong></p>
<p>Like most people, I have a large number of personal documents in a variety of formats (PDF, Excel, Word, RTF, PowerPoint, etc.).  For the typical user, organizing these documents in a  &#8216;My Documents&#8217; folder and having MS Office/Open Office/Adobe Acrobat installed simply gets the job done.  However, I&#8217;ve been looking for some sort of &#8220;Web 2.0&#8243; solution to view my documents while I&#8217;m on the go. And, since my <a href="http://eric-blue.com/my-projects/personal-memex/">knowledge manager is web-based</a>, I&#8217;d like a way to browse and embed personal documents directly in my wiki without needing any special software.</p>
<p>I&#8217;ve been impressed with services like <a href="http://www.scribd.com">Scribd</a> (think YouTube for Documents).  Most people have probably already used Scribd, but in case you haven&#8217;t, this service allows you to upload your documents (variety of formats supported) and view them online in Flash format.  The beauty of this service is that you can also share documents and embed directly inside you website/blog/wiki.   While this works great for sharing certain types of documents, it&#8217;s not really appropriate for uploading my entire collection of documents (especially since many contain personal information).  So, I decided to figure out how to create my own hosted document/book viewer like <a href="http://www.scribd.com">Scribd</a> or <a href="http://books.google.com">Google Books</a>.</p>
<p><strong>Example</strong></p>
<p>The following embedded document browser was actually fairly straight forward to make.  In a nutshell, the viewer takes a PDF file that is converted to Flash (using <a href="http://swftools.org/">SWFTools</a> &#8211; pdf2swf), and then uses an open source flash viewer called <a href="http://www.devaldi.com/?page_id=260">FlexPaper</a> to help with navigation.</p>
<p><center> <iframe id="docviewer" name="docviewer" height="500" width="500" src="http://eric-blue.com/projects/docbrowser/example.html"></iframe> </center> </p>
<p>The navigation bar is fairly straight forward.  You can page up/down, go directly to a given page, zoom, print, and even select a thumbnail mode.  It does currently lack the ability to view full screen, <del datetime="2010-01-03T08:40:01+00:00">search</del> (Search was JUST added to <a href="http://code.google.com/p/flexpaper/">version 1.1</a>) or select text, so I create additional option to view in HTML (using wvHtml) and view the frame full screen.</p>
<p><strong>Open Source To The Rescue</strong></p>
<p>When I first start exploring ways to view all my docs in a web interface, I didn&#8217;t initially focus on flash.  I figured it would be too difficult to have the end product look like Scribd (I was way wrong).  So, I evaluated a number of Linux command-line utilities to convert documents on the fly.  The following is a decent list of applications that can help with any of your conversion needs:</p>
<ul>
<li><a href="http://wvware.sourceforge.net/">wvWare</a> &#8211; A library for converting Word docs.  The utility I used most was wvHtml to convert from .doc directly to .html.</li>
<li><a href="http://freshmeat.net/projects/xlhtml/">xlHtml</a> &#8211; Converts Excel spreadsheets to HTML.</li>
<li><a href="http://pdftohtml.sourceforge.net/">PDFtoHtml</a> &#8211; Converts PDF documents to HTML</li>
<li><a href="http://www.gnu.org/software/unrtf/unrtf.html">UnRTF</a> &#8211; Converts RTF to text or HTML</li>
<li><a href="http://swftools.org/">SWFTools</a> &#8211; A collection of utilities to generate and work with SWF (Flash) files</li>
</ul>
<p>There are apparently some ways to convert between various formats using <a href="http://delicious.com/ericblue76/openoffice+converter">Open Office on the command-line</a> (e.g. JODConvert, PyODConverter, Unoconv, etc.). However, I haven&#8217;t yet spent time evaluating these approaches since my current setup seems to be working pretty well.</p>
<p><strong>DocBrowser Project</strong><br />
<a href="http://eric-blue.com/projects/docbrowser/"><img class="aligncenter size-full wp-image-1003" title="doc_browser_scaled" src="http://eric-blue.com/wp-content/uploads/2010/01/doc_browser_scaled.jpg" alt="" width="500" height="348" /></a><br />
I put up a very preliminary Document Browser prototype at <a href="http://eric-blue.com/projects/docbrowser/">http://eric-blue.com/projects/docbrowser/</a>.  The interface uses <a href="http://jquery.com/">JQuery</a> and <a href="http://abeautifulsite.net/2008/03/jquery-file-tree/">JQueryFileTree</a> to make entire document folder available for browsing just like Windows Explorer.</p>
<p>The doc viewer pane uses the Flash-based interface like the iFrame above for all .PDF docs.  And, the conversion script will render the output in HTML according to the doc type (.doc, .xls, .rtf) using the tools listed above.  I&#8217;ve even added support for <a href="http://mindjet.com/">Mind Manager mindmaps</a> using my web-based <a href="http://eric-blue.com/projects/mindmapviewer/">mindmap viewer</a> to do conversions into Freemind flash on the fly.</p>
<p>Overall, I&#8217;m happy with the end result.  I&#8217;ve setup a customized version of the document browser to run on my personal web server at home.  I can now successfully view my documents from my Laptop while I&#8217;m on the road, and I&#8217;ve been able to embed documents directly in my wiki so I don&#8217;t have to spend time hunting for the right doc.</p>
<p><strong>Other Interesting Links</strong></p>
<ul>
<li>Open source flash viewers -</li>
<p><a href="http://www.devaldi.com/?page_id=260">FlexPaper</a> and <a href="http://swfviewer.blogspot.com/">SWF Viewer/zViewer</a></p>
<li>PSView (Online viewer for PDF, Postscript, Word) &#8211; <a href="http://view.samurajdata.se/">http://view.samurajdata.se/</a></li>
<li>Vuzit (Online document viewer) and API &#8211; <a href="http://vuzit.com/">http://vuzit.com/</a></li>
</ul>
<p><b>Update</b>: Sample code has been posted here <a href="http://eric-blue.com/2010/02/12/example-document-browser-code/">http://eric-blue.com/2010/02/12/example-document-browser-code/</a></p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=How+To+Create+Your+Own+Personal+Document+Viewer+%28Like+Scribd+or+Google+Books%29+http://eric-blue.com/?p=977+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2010/01/03/how-to-create-your-own-personal-document-viewer-like-scribd-or-google-books/&amp;title=How+To+Create+Your+Own+Personal+Document+Viewer+%28Like+Scribd+or+Google+Books%29" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2010/01/03/how-to-create-your-own-personal-document-viewer-like-scribd-or-google-books/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>FreeMind Flash Viewer Broken With Flash 10?</title>
		<link>http://eric-blue.com/2008/12/21/freemind-flash-viewer-broken-with-flash-10/</link>
		<comments>http://eric-blue.com/2008/12/21/freemind-flash-viewer-broken-with-flash-10/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 22:28:18 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://eric-blue.com/?p=645</guid>
		<description><![CDATA[After some mildly confusing debugging, I finally discovered why my MindMap Viewer was not working with some configurations of Firefox 3, Flash, and Linux or Mac.  I first noticed this myself on Linux a couple ...]]></description>
			<content:encoded><![CDATA[<p>After some mildly confusing debugging, I finally discovered why my <a href="http://eric-blue.com/2007/11/25/mindmap-viewer-share-and-embed-mind-manager-maps-today/">MindMap Viewer</a> was not working with some configurations of Firefox 3, Flash, and Linux or Mac.  I first noticed this myself on Linux a couple weeks ago (Ubuntu / FF3 / Flash 10), and assumed this had something to do with my recent upgrade to Firefox version 3.   Then today, a viewer commented on a <a href="http://eric-blue.com/2008/12/18/integral-vision-mind-maps/">recent post</a> that they were seeing the following error on a Mac:</p>
<p style="padding-left: 30px;">&#8220;Flash plugin or Javascript are turned off. Activate both and reload to view the mindmap&#8221;</p>
<p>Since it was working on my Mac (in hindsight running Flash 9), I decided to investigate further.</p>
<p>The viewer fundamentally relies on FreeMind to render the mind maps, and supports the <a href="http://freemind.sourceforge.net/wiki/index.php/Flash_browser">Flash</a> and Java plugins.  It turns out that the original version of the <a href="http://www.efectokiwano.net/mm/">FreeMind Flash viewer</a> I downloaded back on Oct. 2007 had issues correctly detecting the version of Flash if version 10 was installed.</p>
<p>Although this wasn&#8217;t a direct problem with the flash viewer itself, there was an issue with the copy of flashobject.js.  <a href="http://blog.deconcept.com/2006/04/21/flashobject-to-become-swfobject/">FlashObject</a>, which was the precursor to the new <a href="http://code.google.com/p/swfobject/">SWFObject</a>, helps abstract some of the difficulty of embedding flash content, and messaging the user to download the current flash version if it&#8217;s not currently enabled in their browser.  Unfortunately, the version of FlashObject that the FreeMind viewer used was 1.1.1 from 5/17/2005.  After careful inspection of the current FreeMind wiki viewed source of a map that was working and noticed that their version of flashobject.js (although listed as 1.1.1) had 2 additional lines added to the getFlashVersion() function:</p>
<blockquote><p>var aux= y.charAt(y.indexOf(&#8216;.&#8217;)-2);<br />
if(&#8220;0123456789&#8243;.indexOf(aux)!=-1) flashversion=aux+flashversion;</p></blockquote>
<p>Unfortunately, the method that flashobject used to determine that version had incorrectly parsed the version string (e.g. &#8220;Shockwave Flash 10.0 r12) using this logic:  flashversion = y.charAt(y.indexOf(&#8216;.&#8217;)-1) and misidentifed the version as 0!  The 2 additional lines above correct the problem above.</p>
<p>I revisited the Freemind Flash viewer website, and download the latest version to see if this new code was there as well.  Although the version was still listed as 1.0b, it appears that the flash version &#8220;hack/fix&#8221; was put in place on 10/17/08.  I&#8217;m glad the problem was fixed, and mystery solved, but there a couple developer lessons to be learned here:</p>
<p>1) Document Document Document.  Although flashobject.js is now deprecated, the fixed version should have been put in <a href="http://freemind.cvs.sourceforge.net/viewvc/freemind/flash/source/">version control</a>.  And, the README and version number of <a href="http://www.efectokiwano.net/mm/freeMindFlashBrowser.zip">freeMindFlashBrowser.zip</a> should have been updated to reflect the change and correct support for Flash 10.  Oddly enough, I could find no mention of these changes on the <a href="http://freemind.sourceforge.net/wiki/index.php/Flash_browser">FreeMind wiki</a> or the discussion forum on <a href="http://sourceforge.net/forum/forum.php?thread_id=1423817&amp;forum_id=22101">Sourceforge</a>.</p>
<p>2) Upgrade 3rd party libraries.  I&#8217;m sure FlashObject was getting the job done, but unforuntately broke when Flash 10 was released.  Since it&#8217;s an unsupported/deprecated project it required some developer to hack in those 2 lines of code.  It&#8217;s unclear if it was the original Flash viewer developer, or somebody from FreeMind.  It would probably be worthwhile to replace FlashObject with the newer (and supported) version of SWFObject 2.  After doing some Googling, it seems developers on other project have e<a href="http://code.google.com/p/swfobject/issues/detail?id=198#c2">xperienced a similar problem</a> with FlashObject and are opting to upgrade.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=FreeMind+Flash+Viewer+Broken+With+Flash+10%3F+http://eric-blue.com/?p=645+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2008/12/21/freemind-flash-viewer-broken-with-flash-10/&amp;title=FreeMind+Flash+Viewer+Broken+With+Flash+10%3F" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2008/12/21/freemind-flash-viewer-broken-with-flash-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting Real?  Why is Spec a Dirty Word?</title>
		<link>http://eric-blue.com/2007/04/23/getting-real-why-is-spec-a-dirty-word/</link>
		<comments>http://eric-blue.com/2007/04/23/getting-real-why-is-spec-a-dirty-word/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 01:57:22 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://eric-blue.com/blog2/2007/04/23/getting-real-why-is-spec-a-dirty-word/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>Over the last few months, I&#8217;ve spent a bit of time researching various development methodologies and have seen a lot of different approaches when it comes to the <a target="newin" href="http://eric-blue.com/blog/2006/12/mindmapping_and_the_software_d.html">software development life cycle</a>.  After <a target="newwin" href="http://eric-blue.com/blog/2007/03/touch_down_in_santa_clara.html">attending this year&#8217;s SDExpo</a>, I can say that I had a lot of exposure to some agile approaches and am eager to start incorporating some of these lightweight methodologies.  I  also happened to pickup (download) the book &#8220;<a target="newwin" href="http://gettingreal.37signals.com/">Getting Real</a>&#8221; from 37 Signals, and have to say it&#8217;s a great book and offers some great advice.</p>
<p>One thing I don&#8217;t quite get is the idea that you should <a target="newwin" href="http://www.37signals.com/svn/archives/001050.php">*never* write a functional spec</a>.<br />
From the 37 Signals blog post (Feb 2005):</p>
<blockquote>
<p>Step 1: Don’t write a functional specifications document<br />
Don’t write a functional specifications document. Why? Well, there’s nothing functional about a functional specifications document.</p>
<p>Functional specifications documents lead to an illusion of agreement. A bunch of people agreeing on paragraphs of text is not real agreement. Everyone is reading the same thing, but they’re often thinking something different. This inevitably comes out in the future when it’s too late. “Wait, that’s not what I had in mind…” “Huh? That’s not how we described it.” “Yes it was and we all agreed on it — you even signed off on it.” You know the drill.</p>
<p>Functional specifications document are “yes documents.” They’re political. They’re all about getting to “yes” and we think the goal up front should be getting to “no.” Functional specs lead to scope creep from the very start. There’s very little cost in saying “yeah, ok, let’s add that” to a Word document.</p>
</blockquote>
<p>While I do agree that the point is to build functional software, not perfect specs.  There are a great number of situations where the type of product you are building, the size of the team, or the type of organization demands a more structured (and documented) approach to building software.  One particular comment on this post caught my eye, and I have to say it summarizes my feeling on this whole debate&#8230; to spec, or not to spec?  That is the question.</p>
<p><a target="newwin"  href="http://www.37signals.com/svn/archives/001050.php#one_of_several_steves_041570">Comment from One of several steves</a>:</p>
<blockquote>
<p>I&#8217;m highly suspicious of absolutist statements when it comes to software design and development. Always write a functional spec. Never write a functional spec. Both are equally dogmatic and equally full of pitfalls.</p>
<p>A &#8220;story&#8221; is never going to give developers enough to go on if you&#8217;re building a web-based app that has to interface with a multitude of exterior systems, legacy databases, etc. Interface design isn&#8217;t going to help them much, either. Good database diagrams would. Good technical requirements document would. But the &#8220;story&#8221; and the wireframes and comps aren&#8217;t going to help them much. And, like it or not, sometimes we do have to make the interface accomodate what&#8217;s going on in the backend, or else spend a ridiculous amount of money to get legacy technology to behave the ideal way, instead of a reasonable amount of money to get it behave in an acceptable way.</p>
<p>The key takeway is to have the right criteria drive the design and development, and use whatever tools needed to best communicate that. Call them whatever works (as Geoff correctly points out, a BRD by any other name still smells as sweet).</p>
<p>Flexibility and using the available tools to get the job done effectively is paramount. Dogmatic approaches get in the way. &#8220;Don&#8217;t write a functional specifications document&#8221; is frankly just as stupid as &#8220;Always write a functional spec.&#8221; Sometimes it makes sense not to; sometimes it doesn&#8217;t. Dogmatic rules don&#8217;t encourage that kind of flexibility.</p>
</blockquote>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Getting+Real%3F++Why+is+Spec+a+Dirty+Word%3F+http://eric-blue.com/?p=341+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2007/04/23/getting-real-why-is-spec-a-dirty-word/&amp;title=Getting+Real%3F++Why+is+Spec+a+Dirty+Word%3F" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2007/04/23/getting-real-why-is-spec-a-dirty-word/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SDExpo 2007: Day in Review (3/23/07)</title>
		<link>http://eric-blue.com/2007/03/23/sdexpo-2007-day-in-review-32307/</link>
		<comments>http://eric-blue.com/2007/03/23/sdexpo-2007-day-in-review-32307/#comments</comments>
		<pubDate>Sat, 24 Mar 2007 03:22:34 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://eric-blue.com/blog2/2007/03/23/sdexpo-2007-day-in-review-32307/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>My SDExpo adventure came to a close today.  Overall, this year&#8217;s sessions were really great and I thoroughly enjoyed the conference.   I picked up a lot of great information related to Agile methodologies  (Scrum, Crystal Clear, Lean) and plan on incorporating them into my studies (and eventually my practice).</p>
<p>Here&#8217;s a summary of the last few sessions I attended:</p>
<p><b>Developing Rich Domain Models</b></p>
<p><a href="http://www.chrisrichardson.net/">Chris Richardson</a>, consultant and author of the book Pojos in Action, discussed how to implement a domain model using POJOs (Plain Old Java Objects).  I read Chris&#8217; book late last year and overall was very satisified with it.  In fact, I would highly recommend this book to anybody who wants to get an intro to peristence (Hibernate, JDO, Ibatis), Spring, and find out how to model their presentation and business tiers.  Definitely fantastic!  The session today covered many of the topcs from the book, and it was good to have this knowledge reinforced.</p>
<p><b>Benefits of the Build: A Case Study in Continuous Integration</b></p>
<p>Kirk Knoernschild, gave a great intro talk on the benefits of implementing continous integration.  Here&#8217;s some more info:</p>
<blockquote>
<p>Agile processes such as XP and RUP advocate continuous integration, where shorter iterations produce an incremental and functional growth of the system. The fundamental component of any continuous integration (CI) strategy is an automated and repeatable build. In addition to ensuring your application is always in a functional state, a robust build strategy enables a number of other important lifecycle activities.</p>
</blockquote>
<p><b>War Stories: Fighter Jets and Agile Development at Lockheed Martin</b></p>
<p>Michael Zwicker, an Agile architect at Lockhead Martin gave a fantastic talk on how Agile methodologies were implemented at his company.  This gives a shot in the arm to anybody who is hesistant about trying to go Agile.  If it can work at Lockhead, a traditionally waterfall-heavy company, it can work in yours to.  Other topics included key value expected and realized, barriers to initially implementing agile and how they were overcome, barriers to further agile adoption, and the value of training and agile tooling.</p>
<p>Michael also recommend an Agile tool that managed the project backlog: <a target="newwin" href="http://www.versionone.net/">VersionOne</a</p>
<p><b>Highlights of the day</b></p>
<p>* After lunch I decided to walk outside for a little bit.  I discovered a trail right beside the conference center called the <a href="http://www.svbcbikes.org/crank/oct-nov-05/index.php">San Tomas Aquino Creek Trail</a>, and had a relaxing 45 minute walk.</p>
<p>* I discovered that the Hyatt right beside the convention center has a &#8220;<a href="http://www.socialcustomer.com/2006/02/the_virtual_con.html">Virtual Concierge</a>&#8221; (I&#8217;m not kidding).  Check out the link.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=SDExpo+2007%3A+Day+in+Review+%283%2F23%2F07%29+http://eric-blue.com/?p=325+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2007/03/23/sdexpo-2007-day-in-review-32307/&amp;title=SDExpo+2007%3A+Day+in+Review+%283%2F23%2F07%29" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2007/03/23/sdexpo-2007-day-in-review-32307/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SDExpo 2007: Day in Review (3/22/07)</title>
		<link>http://eric-blue.com/2007/03/22/sdexpo-2007-day-in-review-32207/</link>
		<comments>http://eric-blue.com/2007/03/22/sdexpo-2007-day-in-review-32207/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 03:07:24 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://eric-blue.com/blog2/2007/03/22/sdexpo-2007-day-in-review-32207/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>Today was another information-packed day!  I have to say that the sessions on agile methodologies turned out to be really great.  Here are some of the highlights of the more interesting sessions I attended:</p>
<p><b>Transitioning to Agile: A Guide to Good Practices in Context</b></p>
<p>Michael Cohn, from <a target="newwin" href="http://www.mountaingoatsoftware.com/">Mountain Goat Software</a>, gave an excellent presentation on how to introduce an agile process into a company.  Michael dispensed some great tips on building teams, picking the right project for making the transition, and dealing with resistance.  You can download the presentation and a related PDF on his website:</p>
<p><a target="newwin" href="http://www.mountaingoatsoftware.com/presentation/access/54">Transitioning to Agile: A Guide to Good Practices in Context</a></p>
<p><a target="newwin" href="http://www.mountaingoatsoftware.com/article/access/10">Introducing An Agile Process to an Organization</a></p>
<p>One particualr topic that Michael discussed really got my attention.  While dealing with resistance and change, there is a popular model that can be used: CDE (Container, Differences, Transforming Exchanges).  From the seminar</p>
<blockquote>
<p>Self organization (CDE Model)<br />
Container<br />
A boundary within which self-organization occurs (company, project, team, city)<br />
Differences<br />
There must be differences among the &#8220;agent&#8221; acting in our system<br />
Technical knowledge, domain knowledge, education, experience, power, gender<br />
Transforming Exchanges<br />
Agents in the system interact and exchange resources<br />
Information, money, energy (vision)
</p></blockquote>
<p>I&#8217;m fascinated with the topic of change and system models, so I dug a little deeper and found some references to a new field called HSD (Human System Dynamics).  The Human System Dynamics FAQ says:</p>
<blockquote>
<p>Human systems dynamics (HSD) is an emerging field of research and practice that applies principles of complexity, nonlinear dynamics, and chaos theory to the study of groups of humans as they live and work responsibly in teams, organizations, and communities.</p>
</blockquote>
<p>Google turned up a related paper on HSD and CDE titled: <a href="http://www.hsdinstitute.org/e-Clarity/asp_freeform_0001/user_documents//WholeScaleChange%20Final.pdf">After the Dance with Whole-Scale Change(WSC) PDF</a>.  I plan on researching this further.</p>
<p><b>Scrum: A Five Letter Word Geeks to Need Learn</b></p>
<p><a target="newwin" href="http://www.michaelvizdos.com/">Michael Vizdos</a>, a certified Scum trainer, gave an informative overview of <a target="newwin" href="http://en.wikipedia.org/wiki/Scrum_%28management%29">Scrum</a>.  Prior to the session I had only briefly heard about Scrum, and by the end of the talk I felt that I had taken away quite a bit to think about.  According to Wikipedia, Scrum is:</p>
<blockquote>
<p>&#8220;&#8230; intended (for) use is for management of software development projects, and it has been successfully used to &#8220;wrap&#8221; Extreme Programming and other development methodologies. However, it can theoretically be applied to any context where a group of people need to work together to achieve a common goal – such as setting up a small school, scientific research projects or planning a wedding.&#8221;</p>
</blockquote>
<p>When asked how Scrum differs from other Agile methodologies like XP, Lean, Crystal and others, here was the explanation:</p>
<p>- Scrum is more of a project management methodology, not software development.  Scrum does not dictate how software is constructed.</p>
<p>- Scrum is a great into methodology.  Once roles are defined and teams are built, many companies pickup some other methodologies (like Crystal Clear)</p>
<p>- Scrum is also used in other domains (sales, marketing, and program management)</p>
<p>There is also a more detailed process flow for Scrum in the <a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum (development) article</a> on Wikipedia.  Here are the highlights from that article:</p>
<blockquote>
<p>&#8220;Scrum assumes that the software development process is complicated and unpredictable and treats it as a controlled black box instead of a theoretical, fully defined process. This is one of the biggest differences between Scrum and the Waterfall and Spiral methodologies, which view the software development process as a fully defined process. Most problems encountered when using these older, formal types of methodologies are :</p>
<p>* Requirements are not fully understood at the beginning of the process.<br />
* Requirements change during the process.<br />
* The process becomes unpredictable when new tools and technologies are used.</p>
<p>Another characteristic of Scrum is that the software development process isn’t treated as a linear process, unlike the Waterfall, Spiral and Iterative methodologies. In a lot of cases this linear process consists of the following four activities: Analysis, Design, Implementation and Testing. Scrum, however, doesn&#8217;t prescribe a sequence in which the activities must be implemented. A project can start with any activity, and can change between activities at any time. &#8221;</p>
</blockquote>
<p><b>Core Models and Patterns of Web 2.0 &#8211; What They Mean to Architects</b></p>
<p>The final highlight of the day was the informal &#8220;Birds of a Feather&#8221; gathering at the end of the day by the poolside at the Hyatt. <a target="newwin" href="http://www.jamesward.org/wordpress/"> James Ward</a>, Flex evangelist for Adobe, lead a discussion with a group of about 15 people focusing on patterns and trends of the Web 2.0 phenonemon.  Discussions focused on security, identity, trust, multi-platform architectures (ESB, MVC, RIA).  Overall, it was a great chit-chat and lots of fun.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=SDExpo+2007%3A+Day+in+Review+%283%2F22%2F07%29+http://eric-blue.com/?p=323+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2007/03/22/sdexpo-2007-day-in-review-32207/&amp;title=SDExpo+2007%3A+Day+in+Review+%283%2F22%2F07%29" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2007/03/22/sdexpo-2007-day-in-review-32207/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SDExpo 2007: Day in Review (3/21/07)</title>
		<link>http://eric-blue.com/2007/03/21/sdexpo-2007-day-in-review-32107/</link>
		<comments>http://eric-blue.com/2007/03/21/sdexpo-2007-day-in-review-32107/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 03:16:17 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://eric-blue.com/blog2/2007/03/21/sdexpo-2007-day-in-review-32107/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>This year&#8217;s <a target="newwin"  href="http://www.sdexpo.com/2007/west/overview.htm">SDExpo West</a> (Software Development Expo) conference was hosted at the <a target="newwin" href="http://www.santaclara.org/conventioncenter/">Santa Clara Convention center</a> in Santa Clara, California.  The convention center is not far from San Fransisco and is located near the heart of &#8220;Silicon Valley&#8221;.</p>
<p><center><br />
<img src="http://eric-blue.com/blog/images/conventioncenter_lg.jpg"><br />
</center></p>
<p>Overall, the day turned out to be fun and very informative!   The SDExpo conference focuses on many  areas of the software development sector: Java/C++/.Net, Web 2.0, process and people management,  the business of software, testing, development methodologies, architecture and everything in between.</p>
<p>My main focus for this conference is on People, Process &#038; Methods.  But, I did attend some more techy presentation and picked up some great information.  Here are some of the more interesting things I learned:</p>
<p><b>Combining Flex and Ajax to Overcome Browser Limitations</b></p>
<p><a target="newwin" href="http://www.jamesward.org/wordpress/">James Ward</a>, a technical evangelist from <a target="newwin" href="http://www.adobe.com/">Adobe Systems</a>, gave an informative and compelling talk on the benefits of mixing Flex (Flash) and Ajax.  I haven&#8217;t dug into Flex as of yet, but did learn a bit about it from this article a couple months ago:</p>
<p>How and Why AJAX, Not Java, Became the Favored Technology for RIAs<br />
<a target="newwin" href="http://ajaxworldmagazine.com/read/333329.htm">http://ajaxworldmagazine.com/read/333329.htm</a></p>
<p>Here is a description of Flex from this article:</p>
<blockquote>
<p>&#8220;Flex is a way to develop Flash applications by programming. It includes a declarative XML language called MXML for laying out user interfaces, and a programming language called ActionScript, which is a superset of ECMAScript (that is, standardized JavaScript), with extra features like optional static type checking&#8230;&#8230;. Flex applications compile directly into SWFs (Flash binaries), which are then Just-In-Time (JIT) compiled by the Flash runtime, for extra speed.&#8221;</p>
</blockquote>
<p>James demonstrated quite a few visually impressive &#8220;Web 2.0&#8243;/RIA (Rich Internet Applications) that showcase what the next generation of web applications are starting to look like.  Gone are the days of boring static HTML pages, tons of page reloading, and user boredom.  Technologies like Flash, Flex, and Ajax are beginning to make web applications like like traditional desktop programs (and better in many cases).</p>
<p>Two particular things that interested me where the announcement of <a href="http://arstechnica.com/news.ars/post/20070319-apollo-takes-flight-as-adobe-lures-web-devs-to-the-desktop.html">Adobe&#8217;s Apollo desktop engine</a>, which allows web developers to create rich web applications and run them on the desktop (Windows and Mac, and Linux is forthcoming).  And, an interesting benchmark application, that illustrates the different technologies that are used to transmit information between client and server.  XML, SOAP, JSON, and a new binary protocol from Flash that appears to be significantly faster than the rest.</p>
<p><b>Crystal Clear: A Human Powered Methodology for Small Teams</b></p>
<p><a target="newwin" href="http://alistair.cockburn.us/index.php/Main_Page">Alistair Cockburn</a> (Pronounced Co-Burn, the Scottish way) gave a great lecture on the Crystal family of development methodologies.  I&#8217;ve just started my journey looking into Agile development (XP, Agile, Lean, Scrum, Crystal) and I have to say that the Crystal approach looks very promising.  Per Wikipedia:</p>
<blockquote>
<p>Crystal Clear is a member of the Crystal family of methodologies as described by Alistair Cockburn and is considered an example of an agile or lightweight methodology.</p>
<p>Crystal Clear can be applied to teams of up to 6 or 8 colocated developers working on systems that are not life-critical. The Crystal family of methodologies focus on efficiency and habitablity as components of project safety.</p>
<p>Crystal Clear focuses on people, not processes or artifacts.</p>
<p>Crystal Clear contains the following properties (the first three are required):</p>
<p>* Frequent Delivery of Usable Code to Users (required)<br />
* Reflective Improvement (required)<br />
* Osmotic Communication Preferably by Being Co-Located (required)<br />
* Personal Safety<br />
* Focus<br />
* Easy Access to Expert Users<br />
* Automated Tests, Configuration Management, and Frequent Integration
</p></blockquote>
<p><b>Key Note: Why Software Sucks</b></p>
<p>David Platt gave an enjoyable, comedic, and sobering lecture on the topic of his book of the same name:</p>
<p><a target="newwin" href="http://www.whysoftwaresucks.com/">Why Software Sucks&#8230;. and what you can do about it</a></p>
<p><center><br />
<img src="http://eric-blue.com/blog/images/wss_book.jpg"><br />
</center></p>
<p>From David&#8217;s website, here is an overview:</p>
<blockquote>
<p>A Book for Anyone Who Uses a Computer Today … and Just Wants to Scream!</p>
<p>Today’s software sucks. There’s no other good way to say it. It’s unsafe, allowing criminal programs to creep through the Internet wires into our very bedrooms. It’s unreliable, crashing when we need it most, wiping out hours or days of work with no way to get it back. And it’s hard to use, requiring large amounts of head-banging to figure out the simplest operations.</p>
<p>It’s no secret that software sucks. You know that from personal experience, whether you use computers for work or for personal tasks. In this book, programming insider David Platt explains why that’s the case and, more importantly, why it doesn’t have to be that way. And he explains it  in plain, jargon-free English that&#8217;s a joy to read, using real-world examples with which you&#8217;re already familiar. In the end, he suggests what you, as a typical user, without a technical background, can do about this sad state of our software—how you, as an informed consumer, don’t have to take the abuse that bad software  dishes out.</p>
</blockquote>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=SDExpo+2007%3A+Day+in+Review+%283%2F21%2F07%29+http://eric-blue.com/?p=321+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2007/03/21/sdexpo-2007-day-in-review-32107/&amp;title=SDExpo+2007%3A+Day+in+Review+%283%2F21%2F07%29" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2007/03/21/sdexpo-2007-day-in-review-32107/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mind Mapping and the Software Development Life Cycle</title>
		<link>http://eric-blue.com/2006/12/16/mind-mapping-and-the-software-development-life-cycle/</link>
		<comments>http://eric-blue.com/2006/12/16/mind-mapping-and-the-software-development-life-cycle/#comments</comments>
		<pubDate>Sat, 16 Dec 2006 17:09:26 +0000</pubDate>
		<dc:creator>ericblue76</dc:creator>
				<category><![CDATA[Mind Mapping]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://eric-blue.com/blog2/2006/12/16/mind-mapping-and-the-software-development-life-cycle/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<table>
<tr>
<td valign="top">
<img src="http://eric-blue.com/blog/images/250_software_lifecycle.jpg"><br />
<!--<br />
Image courtesy of http://www.notetech.com/images/software_lifecycle.jpg<br />
-->
</td>
<td width="10">&nbsp;</td>
<td>
I&#8217;ve recently started looking into how mind mapping is used in the <a target="newwin" href="http://en.wikipedia.org/wiki/System_Development_Life_Cycle">software/system development life cycle</a>.  One of my passions (and profession) is software design and development.  Since I started mind mapping a few years ago, I&#8217;ve been slowly introducing mind maps at my current job.</p>
<p>I began using mind maps (courtesy of <a target="newwin" href="http://www.mindjet.com/us/">Mindjet&#8217;s MindManager Pro</a>) to help streamline the process of researching new technologies and products.  I discovered that this technique was much more efficient than trying to use traditional bookmarks (or del.icio.us for that matter), or knowledge managers (like <a target="newwin" href="http://www.baltsoft.com/product_gkb.htm">General Knowledge Base</a> or <a target="newwin" href="http://www.devon-technologies.com/products/devonthink/">DevonThink</a>).  And, I could quickly share with others, without needing to create a separate document to summarize my findings.
</td>
</tr>
</table>
<p>Over time I increased my usage of mind maps to encompass capturing meeting notes, product requirements, and technical design discussions.  Although I wouldn&#8217;t typically use mind mapping techniques during any whiteboard sessions, I would capture meeting notes afterwards and convert to a mind map.   When sharing maps with others, I would upload to our intranet in both MindManager format and export as HTML for people who hadn&#8217;t yet downloaded the mind map viewer.</p>
<p>As a whole, I would say the feedback and general acceptance of using mind maps for our projects has been very positive.  On numerous occasions, team members would still be consulting the maps even months after a meeting had taken place.  And, I personally think that reviewing the mind maps after a tradional meeting/whiteboard session can really improve communication and recall of the information later on.</p>
<p>I became curious as to how other individuals and organizations are using mind maps in their development process.  After reading Chuck Frey&#8217;s excellent <a target="newwin" href="http://mindmapping.typepad.com/the_mind_mapping_software/2006/09/mind_mapping_su.html">Mind Mapping Survey</a>, I discovered that a large percentage of the survey respondents (500 people in total) are using mind mapping for project planning (52%) and business process mapping (30%).  And, of the people that listed their mind map use as &#8220;other&#8221; (9%), there was mention of documenting software requirements, and software development and modeling.</p>
<p>I decided to start Googling on this topic and came up with some interesting results.  The following are some links and resources related to the use of mind maps in various phases of the SDLC (Software Development Life Cycle).</p>
<blockquote>
<p><b>Investigation/Feasibility/Planning</b></p>
<p>Mind-mapping tools are finding a home in corporate IT<br />
<a target="newwin" href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&#038;articleId=112247">http://www.computerworld.com/action/article.do?command=viewArticleBasic&#038;articleId=112247</a></p>
<p>Using mind mapping software for web research<br />
<a target="newwin" href="http://mindmapping.typepad.com/the_mind_mapping_software/2006/10/using_mind_mapp.html">http://mindmapping.typepad.com/the_mind_mapping_software/2006/10/using_mind_mapp.html</a></p>
<p>Turning systems models into projects<br />
(Related to ORM &#8211; Outcome Relationship Model)<br />
<a target="newwin" href="http://duffill.blogs.com/beyond_crayons/2006/07/turning_systems.html">http://duffill.blogs.com/beyond_crayons/2006/07/turning_systems.html</a></p>
<p>Funnel timeline: A visual approach to project planning<br />
<a target="newwin" href="http://mindmapping.typepad.com/the_mind_mapping_software/2006/12/funnel_timeline.html">http://mindmapping.typepad.com/the_mind_mapping_software/2006/12/funnel_timeline.html</a></p>
<p>Project estimating &#8211; Mindmaps are a tool in the armory<br />
<a target="newwin" href="http://www.mind-mapping.org/mindmapping-for-project-management/project-estimating-with-mindmaps.html">http://www.mind-mapping.org/mindmapping-for-project-management/project-estimating-with-mindmaps.html</a></p>
<p>How to use mind mapping software for project management<br />
<a target="newwin" href="http://www.innovationtools.com/Articles/ArticleDetails.asp?a=148">http://www.innovationtools.com/Articles/ArticleDetails.asp?a=148</a></p>
<p>Mind Mapping and Project Management<br />
<a target="newwin" href="http://www.mindmappingstrategies.com/project-management.aspx">http://www.mindmappingstrategies.com/project-management.aspx</a></p>
<p>Mind maps provide a view for collaboration<br />
<a target="newwin" href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&#038;articleId=112247">http://www.computerworld.com/action/article.do?command=viewArticleBasic&#038;articleId=112247</a></p>
<p><b>Analysis</b></p>
<p>Agile Modeling with Mind Map and UML (StickyMinds Article)<br />
<a target="newwin" href="http://www.stickyminds.com/testandevaluation.asp?Function=edetail&#038;ObjectId=11861&#038;ObjectType=ART">http://www.stickyminds.com/testandevaluation.asp?Function=edetail&#038;ObjectId=11861&#038;ObjectType=ART</a></p>
<p>Utilizing Mind Maps for Essential Use Case Specification<br />
<a target="newwin" href="http://roots.dnd.no/modules.php?op=modload&#038;name=Downloads&#038;file=index&#038;req=getit&#038;lid=164">PPT (PowerPoint)</a><br />
<a target="newwin" href="http://72.14.253.104/search?q=cache:AOjfs9aHu2wJ:roots.dnd.no/modules.php%3Fop%3Dmodload%26name%3DDownloads%26file%3Dindex%26req%3Dgetit%26lid%3D164+use+case+mind+map&#038;hl=en&#038;gl=us&#038;ct=clnk&#038;cd=2">HTML</a></p>
<p>MindManager for Software Development: Part 2 &#8211; Requirements Gathering<br />
<a target="newwin" href="http://mindjetlabs.com/cs/blogs/synergist/archive/2006/11/07/MindManager-for-Software-Development_3A00_-Part-2-_2D00_-Requirements-Gathering.aspx">http://mindjetlabs.com/cs/blogs/synergist/archive/2006/11/07/MindManager-for-Software-Development_3A00_-Part-2-_2D00_-Requirements-Gathering.aspx</a></p>
<p><b>Design</b></p>
<p>Sharp Development &#8211; Mind Mapping for OOAD (Object-Oriented Analysis and Design)<br />
<a href="http://www.sharpdevelopment.com/MindMapping/MindMappingForOOAD/MindMappingForOOAD.htm">http://www.sharpdevelopment.com/MindMapping/MindMappingForOOAD/MindMappingForOOAD.htm</a></p>
<p>Agile Modeling with Mind Map and UML<br />
<a target="newwin" href="http://www.change-vision.com/en/UMLandMindMap.pdf">PDF</a><br />
<a href="http://72.14.253.104/search?q=cache:SfFAK-XI2KUJ:www.change-vision.com/en/UMLandMindMap.pdf+use+case+mind+map&#038;hl=en&#038;gl=us&#038;ct=clnk&#038;cd=4">HTML</a></p>
<p>UML Modeling Tool &#8211; JUDE<br />
(Convert Mind Maps to UML)<br />
<a target="newwin" href="http://jude.change-vision.com/jude-web/product/professional.html#mindmap_convert">http://jude.change-vision.com/jude-web/product/professional.html#mindmap_convert</a></p>
<p><b>Coding</b></p>
<p>Generative Programming with MindManager and XSLT<br />
<a target="newwin" href="http://blog.mindjet.com/2005/12/generative-programming-with-mindmanager-and-xslt">http://blog.mindjet.com/2005/12/generative-programming-with-mindmanager-and-xslt</a></p>
<p><b>Testing</b></p>
<p>Mind Maps Foster Thorough Test Design<br />
<a target="newwin" href="http://www.infoq.com/news/2006/11/test-design-mind-map">http://www.infoq.com/news/2006/11/test-design-mind-map</a><br />
<a target="newwin" href="http://www.stickyminds.com/BetterSoftware/magazine.asp?fn=cifea&#038;id=90">Original Article</a></p>
<p>Mind Mapping for Test Planning<br />
<a target="newwin" href="http://www.sharpdevelopment.com/MindMapping/MindMappingForTestPlanning/MindMappingForTestPlanning.htm">http://www.sharpdevelopment.com/MindMapping/MindMappingForTestPlanning/MindMappingForTestPlanning.htm</a></p>
<p><b>Implementation/Integration</b></p>
<p>MindManager for Software Development: Part 1 &#8211; Help Authoring<br />
<a target="newwin" href="http://mindjetlabs.com/cs/blogs/synergist/archive/2006/10/07/MindManager-for-Software-Development_3A00_-Part-1-_2D00_-Help-Authoring.aspx">http://mindjetlabs.com/cs/blogs/synergist/archive/2006/10/07/MindManager-for-Software-Development_3A00_-Part-1-_2D00_-Help-Authoring.aspx</a></p>
</blockquote>
<p>In the near future, as mind mapping becomes more mainstream, I can imagine that various mind mapping techniques and products will be used to streamline the software development process.  Personally, I think it would be a great use of time to come up with a set of common mind map templates for use in software development projects.  Something along the lines of <a target="newwin" href="http://readyset.tigris.org/">ReadySet</a>, or Steve McConnell&#8217;s <a target="newwin" href="http://www.construx.com/survivalguide/">Software Project Survival Guide templates</a>.  This sounds like a great pet project for 2007.</p>
<p>In the meantime, I&#8217;d be interested in hearing any feedback on how individuals or organizations are currently using mind maps in their development process.</p>
<p align="left"><a class="tt" href="http://twitter.com/home/?status=Mind+Mapping+and+the+Software+Development+Life+Cycle+http://eric-blue.com/?p=268+via+@ericblue" title="Post to Twitter"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-twitter-big3.png" alt="Post to Twitter" /></a> <a class="tt" href="http://delicious.com/post?url=http://eric-blue.com/2006/12/16/mind-mapping-and-the-software-development-life-cycle/&amp;title=Mind+Mapping+and+the+Software+Development+Life+Cycle" title="Post to Delicious"><img class="nothumb" src="http://eric-blue.com/wp-content/plugins/tweet-this/icons/tt-delicious-big3.png" alt="Post to Delicious" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://eric-blue.com/2006/12/16/mind-mapping-and-the-software-development-life-cycle/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

