<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>cmiles - blog</title>
	<atom:link href="http://cmiles.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://cmiles.info</link>
	<description>Charles Miles - Tucson Hiking, Outside and Adventures, Excel, .net, Life</description>
	<lastBuildDate>Sun, 08 Jan 2012 19:07:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='cmiles.info' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/cc481128f2d984c4a795b563bcae7ec9?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>cmiles - blog</title>
		<link>http://cmiles.info</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cmiles.info/osd.xml" title="cmiles - blog" />
	<atom:link rel='hub' href='http://cmiles.info/?pushpress=hub'/>
		<item>
		<title>The End of 2011 &#8211; Notes</title>
		<link>http://cmiles.info/2012/01/08/the-end-of-2011-notes/</link>
		<comments>http://cmiles.info/2012/01/08/the-end-of-2011-notes/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 18:33:03 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://cmiles.wordpress.com/?p=177</guid>
		<description><![CDATA[Happy New Year! I thought it might be fun to write a few notes about 2011&#8230; New Blog &#8211; consuming &#8211; I have been using this blog to post and record info about media that I have been watching/reading/listening to (and I like it!). New Blogging &#8211; In the second half of 2011 I started [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=177&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Happy New Year! I thought it might be fun to write a few notes about 2011&#8230;</p>
<p>New Blog &#8211; <a href="http://cmiles-consuming.info/" title="consuming">consuming</a> &#8211; I have been using this blog to post and record info about media that I have been watching/reading/listening to (and I like it!).</p>
<p>New Blogging &#8211; In the second half of 2011 I started contributing to <a href="http://blog.summithut.com/" title="Trail Talk">Trail Talk</a> &#8211; the <a href="http://www.summithut.com/" title="Summit Hut">Summit Hut</a> blog, writing posts on both hikes (<a href="http://blog.summithut.com/post/2011/12/02/Airmen-Peak.aspx" title="Trail Talk - Airmen Peak">Airmen Peak</a>, <a href="http://blog.summithut.com/post/2011/12/09/Rosewood-Point-and-North-Rosewood-Point.aspx" title="Trail Talk - Rosewood Point and North Rosewood Point">Rosewood Point and North Rosewood Point</a>, <a href="http://blog.summithut.com/post/2011/11/15/Palisade-Trailhead-to-the-Sabino-Canyon-Tram.aspx" title="Trail Talk - Palisade Trailhead to the Sabino Canyon Tram">Palisade Trailhead to the Sabino Canyon Tram</a> and <a href="http://blog.summithut.com/post/2011/11/28/Buster-Mountain-Buster-Spring-Montrose-Canyon-Loop-Hike.aspx" title="Trail Talk - Buster Mountain, Buster Spring, Montrose Canyon">Buster Mountain, Buster Spring, Montrose Canyon</a>) and about gear (<a href="http://blog.summithut.com/post/2011/10/19/Review-F-Lite-195-F-Lite-230.aspx" title="Trail Talk - Review: F-Lite 195 &amp; F-Lite 230">Review: F-Lite 195 &amp; F-Lite 230</a>, <a href="http://blog.summithut.com/post/2011/10/06/First-Impressions-Inov-8-Mens-Evoskin%E2%84%A2.aspx" title="Trail Talk - First Impressions - Inov-8 Men's Evoskin™">First Impressions &#8211; Inov-8 Men&#8217;s Evoskin™</a> and <a href="http://blog.summithut.com/post/2011/11/18/Fall-2011-Jackets-with-Synthetic-Insulation!.aspx" title="Trail Talk - Fall 2011 - Jackets with Synthetic Insulation!">Fall 2011 &#8211; Jackets with Synthetic Insulation!</a>). Writing these posts has been a fun way to share some of the hikes, destinations and gear that I love.</p>
<p>Hiking/Outdoors &#8211; While my <a href="http://www.flickr.com/photos/cmiles/" title="My Flickr">Flickr pictures</a> are about any number of things I have more pictures of hikes/outdoor adventures than anything else &#8211; and my <a href="http://www.flickr.com/photos/cmiles/collections/72157626163625750/" title="2011 Collection">2011 Collection</a> has 30 sets of pictures &#8211; more than any other year I have on Flickr! I made more time for hiking than any previous year and am excited about getting outside in 2012!</p>
<p>School &#8211; I have been taking a variety of classes at Pima Community College for years as a way to keep learning new skills. But this Fall, with the combination of subject matter (diagrams, system planning, &#8230;), being busy at work and wanting to get outside I failed to finish my class for the first time in years&#8230; I am going to take a (brief?) break from classes at this point and focus on some programming projects at work that I am excited about as a way to keep learning, but classes are such a great way to learn/expand that I am sure I will be back for more at some point&#8230;</p>
<p>Rides/Runs &#8211; In the past I never felt all that excited about organized races &#8211; but I got the bug in 2011 (likely from ADT!) and did The <a href="http://connect.garmin.com/activity/79600145" title="Garmin Connect - Tour of the Tucson Mountains">Tour of the Tucson Mountains</a>, <a href="http://connect.garmin.com/activity/129708813" title="Garmin Connect - El Tour de Tucson">El Tour de Tucson</a> (60 miles), <a href="http://connect.garmin.com/activity/78190273" title="Garmin Connect - Catalina State Park Trail Run">Catalina State Park Trail Run</a> (5.1), <a href="http://connect.garmin.com/activity/74224884" title="Urban Assualt Ride">Urban Assualt Ride</a> and <a href="http://connect.garmin.com/activity/75358335" title="Garmin Connect - Arizona Distance Classic">Arizona Distance Classic</a> (1/4). I did not have specific goals (other than finish) for any of these events &#8211; and I like it that way &#8211; but the experience of seeing and being with so many other cyclists and runners is really inspiring!</p>
<p>2012?</p>
<p>In the first part of 2012, if I can stay healthy, I plan on doing <a href="http://www.fleetfeettucson.com/racing/az-trail-race" title="Fleet Feet Arizona Trail Race">Fleet Feet Arizona Trail Race</a>, <a href="http://www.aravaiparunning.com/avr/mesquite-canyon/" title="Mesquite Canyon Run">Mesquite Canyon</a> (1/2 Marathon), <a href="http://www.pbaa.com/!TTM/TTMhome.html" title="Tour of the Tucson Mountains">Tour of the Tucson Mountains</a> and the <a href="http://everyoneruns.net/default.asp" title="Everyone Runs - Catalina State Park Trail Run">Catalina State Park Trail Run</a> (10.2).</p>
<p>These events are a fun way to get outside &#8211; and I think my only goal in 2012 is to get outside more!</p>
<p>Hope everyone has a great year!<br />
CM</p>
<br />Filed under: <a href='http://cmiles.info/category/life/'>Life</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/177/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=177&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2012/01/08/the-end-of-2011-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Reader Shared Items -&gt; Pinboard, FeedDemon, Send to Pinboard&#8230;</title>
		<link>http://cmiles.info/2011/11/05/google-reader-shared-items-pinboard-feeddemon-send-to-pinboard/</link>
		<comments>http://cmiles.info/2011/11/05/google-reader-shared-items-pinboard-feeddemon-send-to-pinboard/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 20:06:58 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Software and Services]]></category>

		<guid isPermaLink="false">http://cmiles.info/?p=170</guid>
		<description><![CDATA[I have enjoyed and used Google Reader&#8217;s Shared items for years and I was sad to see that feature removed in recent updates&#8230; There were very few people that followed my feed, but I enjoy sharing and it was an easy way to record interesting links for reference. Thankfully a few quick adjustments and my [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=170&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have enjoyed and used Google Reader&#8217;s Shared items for years and I was sad to see that feature removed in recent updates&#8230; There were very few  people that followed my feed, but I enjoy sharing and it was an easy way to record interesting links for reference.</p>
<p>Thankfully a few quick adjustments and my &#8216;sharing&#8217; workflow was restored! Some notes&#8230;</p>
<p>Google Reader Shared Item Feed discovery features: not important to me so I don&#8217;t care about &#8216;replacing&#8217; these features.</p>
<p>Storing Links: <a href="http://www.pinboard.in/" title="Pinboard">Pinboard</a>! I have been using Pinboard (moved from Delicious a few months ago) to save links and I love it &#8211; so I signed up for another account to keep shared links (I could have used my current account but wanted to keep these separately).</p>
<p>Old Shared Items: Google offers your Shared/Starred items as JSON exports &#8211; Pinboard can import this format so moving your items items over is just a matter of exporting/saving from Google (under settings) and importing in Pinboard (settings, import). Pinboard added a number of &#8216;stray&#8217; tags during the import, a little messy &#8211; but it really didn&#8217;t bother me (although maybe I will do some clean up in the future).</p>
<p>Sharing/RSS Feed: Pinboard offers an RSS feed of your links. You can filter your feed by tags, so I decided on two tags (&#8216;general&#8217; and &#8216;retail&#8217;) to mark articles with. My two RSS feeds &#8211; http://feeds.pinboard.in/rss/u:cmiles-reading/t:retail/ and http://feeds.pinboard.in/rss/u:cmiles-reading/t:general/ &#8211; nice!</p>
<p>Saving Links &#8211; Desktop: <a href="http://www.feeddemon.com/" title="FeedDemon">FeedDemon</a> is a great Windows desktop RSS reader. It offers a customizable &#8216;Sharing&#8217; feature that you can take advantage of to easily save links to Pinboard. To add Pinboard to the Sharing menu you need to add a new XML file to the FeedDemon\Data\SendTo\ folder (found in Program Files or Program Files (x86) &#8211; under C:\ on my setup). There are already a number of files (for delicious, Digg, Facebook&#8230;) in the SentTo folder that you can use as a template &#8211; and after a quick look at the <a href="http://www.pinboard.in/api/" title="Pinboard API Documentation">Pinboard API Documentation</a> this is what I am using for the links that I want tagged &#8216;general&#8217;:</p>
<p><pre class="brush: xml; auto-links: false;">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; 
 &lt;fdsendto service=&quot;Pinboard - General&quot; useInternalHttp=&quot;false&quot; template=&quot;https://api.pinboard.in/v1/posts/add?url={url} 
 &amp;amp;description={title}&amp;amp;tags=general&quot;/&gt;

</pre></p>
<p>This is not quite as smooth in FeedDemon as it was in Google Reader &#8211; but close enough for me! Note &#8211; this <a href="http://thomaspark.me/2011/11/share-in-google-reader-again/" title="Thomas Park - Share in Google Reader Again">nice post</a> (including Pinboard Information) on using the Google Reader Send To settings to add Pinboard support to the web interface.</p>
<p>Saving Links &#8211; Mobile: I was concerned that I would have trouble finding an easy way to save links on my Android phone &#8211; but <a href="https://market.android.com/details?id=me.mitnworb.save.to.pinboard&amp;hl=en" title="Save to Pinboard">Save to Pinboard</a> adds an option to the &#8216;Send To&#8217; menu making Pinboard is available from both of the RSS Readers that I have used &#8211; <a href="https://market.android.com/details?id=com.newsrob" title="NewsRob">NewsRob</a> and <a href="https://market.android.com/details?id=com.noinnion.android.greader.readerpro" title="gReader Pro">gReader Pro</a>. Again, not quite as smooth as sharing in Google Reader, but pretty close.</p>
<p>The extra software, configuration and extra clicks are clearly not as easy/clean/elegant as the Google Reader sharing &#8211; the +1/Google Plus options in Google Reader might be the better way to go?!? But lately I have been willing to do a little more work if my best guess is that it will allow me to easily save my data, the way I want it, in a way I believe may be accessible for many years &#8211; with links from 2006 saved in Pinboard the method above seems like it has a chance to meet that goal! (<a href="http://cmiles-consuming.info/2011/06/24/another-blog-readernaut-goodreads-preserving-and-sharing/" title="Another blog – Readernaut, goodreads… preserving and sharing…">A post about saving personal data on my other blog.</a>)</p>
<p>Enjoy!<br />
CM</p>
<br />Filed under: <a href='http://cmiles.info/category/life/'>Life</a>, <a href='http://cmiles.info/category/software-and-services/'>Software and Services</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=170&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2011/11/05/google-reader-shared-items-pinboard-feeddemon-send-to-pinboard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>
	</item>
		<item>
		<title>End of Project Notes</title>
		<link>http://cmiles.info/2011/07/16/end-of-project-notes/</link>
		<comments>http://cmiles.info/2011/07/16/end-of-project-notes/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 22:58:12 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://cmiles.info/?p=162</guid>
		<description><![CDATA[In October of 2007 I started work on a project to convert and extend an older True BASIC data processing program. Early this year, after releasing several versions, work on this project ended and I thought it would be interesting to share some thoughts and experiences. I do not consider myself a &#8216;master programmer&#8217; and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=162&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In October of 2007 I started work on a project to convert and extend an older <a href="http://www.truebasic.com/" title="True BASIC Homepage">True BASIC</a> data processing program. Early this year, after releasing several versions, work on this project ended and I thought it would be interesting to share some thoughts and experiences. I do not consider myself a &#8216;master programmer&#8217; and these notes are not intended as &#8216;expert guidance&#8217; &#8211; so why post them? Because I have enjoyed similar posts from other programmers!</p>
<p>Overview:</p>
<p>Platform: The requested target for the project was a Windows desktop application. Windows desktop applications do not get much love/hype these days and at various times during the project we talked about doing a web version. But with no existing server/host to use and without manpower/budget to acquire and maintain a server/host a desktop application was a good choice. Application installation and updates can be a challenging part of a desktop application &#8211; but in this case we only ran into a few support issues and it was really not a problem.</p>
<p>Programming Language/Platform: C#/.NET (eventually 3.5)/Visual Studio (eventually 2010). Since Windows desktop was the target and we had existing experience with this stack we did not seriously consider other choices&#8230;</p>
<p>Gui: We started the project in WinForms and later moved to WPF. The WinForms version worked fine, but I find WinForms hard to love &#8211; in particular I dislike the GUI designer and generated code. It was refreshing to move to WPF, working with XAML for the UI is quite nice and I have found WPF to be a quicker, easier and more maintainable way to create UI (I have used WPF for several other projects as well). I would hesitate to start a new project in WinForms &#8211; but I have started to strongly suspect that UI technology/framework matters less than I would have guessed several years ago. My personal experience has been that many technologies have reasonable basic functionality &#8211; you are going to be able to get a decent/basic UI built without too much time/pain. But it seems like that in every technology it is going to cost quite a bit of time to tweak/create/craft all of the details needed to make the UI something you would actually want to use (UI hints to help users solve their problems, help for beginners, understandable error messages, good editing, great validation, smart interaction with the database, attractive visuals, great layout, etc&#8230;). WPF seems like a step forward compared to WinForms &#8211; but not a big enough step forward to make creating good UI easy or to make achieving your vision uncomplicated&#8230; I would pick WPF over WinForms for a new project &#8211; but certainly not with the illusion that a great UI can be created quickly in any technology.</p>
<p>Data: We used Microsoft <a href="http://www.microsoft.com/sqlserver/en/us/editions/express.aspx" title="Microsoft SQL Server Express">SQL Server Express</a> for this project (2005 and 2008 versions). For this project a carefully constructed schema helped us to enforce rules about the data, catch errors and query the data much more easily than a non-relational store would have. We did 95% of our data processing with SQL queries &#8211; for this project that turned out to be a very pleasant way to work.</p>
<p>Version Control System: We started this project in 2007 and used <a href="http://subversion.apache.org/" title="Apache - Subversion">Subversion</a> and <a href="http://trac.edgewall.org/" title="Trac">Trac</a> at <a href="http://hosted-projects.com/" title="hosted-projects.com">hosted-projects.com</a>. While I currently do not have much love for Subversion I did realize after switching to <a href="http://mercurial.selenic.com/" title="Mercurial">Mercurial</a> that it is easier to explain, understand and use for simple scenarios &#8211; a great benefit in some situations. About two years into the project we moved to Mercurial and <a href="http://www.assembla.com/" title="Assembla">Assembla</a>. Mercurial is fantastic &#8211; my experience has been that Mercurial has quite a few benefits (easier check-ins, faster access to history, nicer branch/merge, quick cloning of the entire repository for experiments) without any additional hassles once you get over the initial learning curve. We stayed with Mercurial for the rest of the project but did move from Assembla to <a href="http://www.fogcreek.com/fogbugz/" title="FogBugz">Fogbugz</a> and <a href="http://www.fogcreek.com/kiln/" title="Kiln">Kiln</a>. Moving to FogBugz was nice &#8211; we found that the default FogBugz setup worked better for us than a default Trac setup (we were not interested in spending time customizing Trac). Moving to Kiln was FANTASTIC &#8211; I love the features that Kiln provides for working with Mercurial repositories. The ability to maintain and organize multiple repositories made it much easier to work simultaneously on different releases and features. We took advantage of the 2-person Student/Start-up (free) plan. I really like FogBugz and Kiln, but I do wish they had some additional pricing options &#8211; while these services are certainly &#8216;worth&#8217; $30 per person per month that could be tough to justify for smaller/experimental/less profitable endeavors with more than two developers.</p>
<p>Details:</p>
<p><a href="http://msdn.microsoft.com/en-us/library/bb386976.aspx" title="LINQ to SQL">LINQ to SQL</a> &#8211; For a simple strongly typed data access this was great! Creating the data layer via <a href="http://msdn.microsoft.com/en-us/library/bb386987.aspx" title="SqlMetal">SqlMetal</a> on the command line was a nice part of our workflow. But I am very glad that we did not try to do all of our data processing via LINQ &#8211; when we experimented with trying to do everything in LINQ we quickly found that complex queries were more readable, easier to create and faster to change done directly in SQL. While LINQ to SQL is still supported by Microsoft I think it is fair to say all their energy is going into the <a href="http://msdn.microsoft.com/en-us/data/aa937723" title="ADO.NET Entity Framework">ADO.NET Entity Framework</a> and I don&#8217;t think I would choose LINQ to SQL for a new project.</p>
<p><a href="http://msdn.microsoft.com/en-us/data/ff687142" title="Sql Server Compact">SQL Server Compact</a> &#8211; As noted above we ended up going with SQL Server Express &#8211; but our original intention was to use SQL Server Compact edition as the primary database and include an option for advanced users to use an existing SQL Server instance. Unfortunately my ignorance killed the SQL Server Compact part of our plans &#8211; I was developed for months via Sql Server and had written hundreds of lines of SQL before I realized that some of the syntax that I had used was not available in SQL Server Compact edition. At that point we felt it would have taken too much time to rewrite the SQL and we went forward with just SQL Server Express. This was a learning experience for me about the differences in SQL databases&#8230;</p>
<p>Importing Data &#8211; We, of course, ran into problems with users supplying invalid data &#8211; but I think that is always true of user input. The more interesting problem we ran into was that we underestimated the user&#8217;s ability to understand and fix the problems in their data. For the second version we added a validation layer that gave us a chance to both catch errors in the data AND give the user detailed/helpful error messages &#8211; it was certainly not perfect but it helped quite a bit to have detailed user targeted error messages.</p>
<p>Conclusion:</p>
<p>Like any project if I was going to do this again I could do a better job &#8211; but we managed to produce a working application that we were able to maintain and constantly improve for several years! I think most of our choices were reasonable given the goals and resources &#8211; but certainly database and desktop application would be two things that I would consider carefully if were starting again from the beginning.</p>
<p>CM</p>
<br />Filed under: <a href='http://cmiles.info/category/net/'>.net</a>, <a href='http://cmiles.info/category/software/'>Software</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=162&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2011/07/16/end-of-project-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>
	</item>
		<item>
		<title>Another Blog&#8230;</title>
		<link>http://cmiles.info/2011/06/26/another-blog/</link>
		<comments>http://cmiles.info/2011/06/26/another-blog/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 21:51:46 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://cmiles.info/?p=154</guid>
		<description><![CDATA[I recently decided to create another blog (via WordPress.com of course!) &#8211; cmiles-consuming. The new blog is place for me to record and share the media that I am consuming and info/notes/records/comments about it &#8211; the first post explains the idea&#8230; I having not been posting very often to this blog &#8211; and while I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=154&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently decided to create another blog (via <a href="http://www.WordPress.com" title="WordPress.com">WordPress.com</a> of course!) &#8211; <a href="http://cmiles-consuming.info/" title="cmiles-consuming">cmiles-consuming</a>. The new blog is place for me to record and share the media that I am consuming and info/notes/records/comments about it &#8211; the <a href="http://cmiles-consuming.net/2011/06/24/another-blog-readernaut-goodreads-preserving-and-sharing/" title="Another blog – Readernaut, goodreads… preserving and sharing…">first post</a> explains the idea&#8230;</p>
<p>I having not been posting very often to this blog &#8211; and while I have an idea or two &#8211; I don&#8217;t expect that to change &#8211; but I love having this blog and it is not going away! If you have only seen posts via RSS over the past few years you might enjoy stopping by the site &#8211; the widgets on the side nicely aggregate my links, pictures, hikes/rides/runs, media, twitter, facebook, etc&#8230;</p>
<p>Enjoy!<br />
CM</p>
<br />Filed under: <a href='http://cmiles.info/category/life/'>Life</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=154&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2011/06/26/another-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>
	</item>
		<item>
		<title>Bike Commuting!</title>
		<link>http://cmiles.info/2011/03/02/bike-commuting-2/</link>
		<comments>http://cmiles.info/2011/03/02/bike-commuting-2/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 07:20:49 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[Bicycle]]></category>
		<category><![CDATA[BikeCommuting]]></category>
		<category><![CDATA[Recumbent]]></category>
		<category><![CDATA[Tucson]]></category>
		<category><![CDATA[bikecommuting]]></category>
		<category><![CDATA[recumbent]]></category>
		<category><![CDATA[volea]]></category>

		<guid isPermaLink="false">https://cmiles.wordpress.com/?p=145</guid>
		<description><![CDATA[Another year of bicycle commuting! 2010 was my first full year of commuting on a recumbent – what a beautiful way to commute! I 2010 I rode more miles than any previous year &#8211; in part because I am doing more long rides and in 2010 participated (for the first time) in El Tour de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=145&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Commuting Around Tucson" alt="Riding my Volea Recumbent thru a Tucson Neighborhood" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103CommutingBlur.jpg" width="412" height="164" /></p>
<p>Another year of bicycle commuting! 2010 was my first full year of commuting on a recumbent – what a beautiful way to commute!</p>
<p>I 2010 I rode more miles than any previous year &#8211; in part because I am doing more long rides and in 2010 participated (for the first time) in <a href="http://www.pbaa.com/!ETT/ETThome.html">El Tour de Tucson</a> (66 mile). </p>
<p>2010 was the happiest I have been on a bike – some particularly great points for me about riding my recumbent:</p>
<ul>
<li>Comfort &#8211; I have had basically no issues with my hands, knees, shoulders, neck or back and spent a minimal amount of time tweaking my setup. Not everyone has the same experience but for me this has been fantastic! </li>
<li>Performance – there are plenty of bikes/designs that are going to be lighter and have better performance than my bike – but I can keep up with my cyclist friends without any problems – that is enough for me! The balance between performance and comfort on my recumbent is great and it is safe to say that the primary factors limiting my performance are fitness and technique, not my bike&#8230; </li>
<li>Great Commuting AND Recreational Setup &#8211; underseat racks for good cargo positioning, rear rack for bulky loads and extra panniers, high enough seating position to be seen by cars and a comfortable ride all make this a great commuter &#8211; comfortable position, decent performance and recumbent specific hydration and seat bags all make this a great setup for longer recreational rides! </li>
</ul>
<p>The points above are awesome and you should now be thinking about your new recumbent &#8211; but nothing is for everyone and if you have not owned a recumbent before the points I made <a href="http://cmiles.info/2010/05/02/my-bike-commuting-setup/">last year</a> still seem worthy of consideration and are repeated here:</p>
<ul>
<li>You won’t be hopping curbs with this style bike – it is not for every style of riding… </li>
<li>Parking can be slightly more complicated (not much, but squeezing into a crowded rack is harder or maybe even impossible depending on the style of rack). </li>
<li>Get ready to be noticed! You are NOT going to blend in and if questions, comments, strange stares, shouts, laughter and fun conversations are not your cup of tea you will be better off with another bike. </li>
<li>I have not found many very tire choices for wider tires for the 650c wheels that come on many Volea models (skinny racing tires are no problem…) – you might consider choices such as the Volae Expedition/Expedition Pro instead of the Volea Sport for 26” wheels/more tire options. </li>
</ul>
<p>To those points I would add:</p>
<ul>
<li>More bike = more to clean and maintain: long chain, long cables, bigger frame and unique setup equal more time spent on routine cleaning and adjustments (this is obviously subjective and partly about my skills – but there is just more to clean…) </li>
<li>Fewer Experts: Any good bike mechanic will be familiar with the vast majority of parts on a recumbent and your local bike shop can certainly do great routine work for you.&#160; But when you have recumbent specific questions about clothing/components/gear or want an awesome tune-up to make everything perfect it may be harder to find local experts. However, it is important to remember that there are great sources of information on the internet and that finding a shop that you love, trust, understands you, is conveniently located and has great service is (in my opinion) very very very hard no matter what style of bike you have&#8230; </li>
</ul>
<h3>Recumbent Information</h3>
<p>There are some great resources on the web for recumbents &#8211; these are some of my favorites:</p>
<p><a href="http://www.bentrideronline.com/">&#8216;BentRider Online</a> (articles, information and active forums)</p>
<p><a href="http://www.recumbentjournal.com/">Recumbent Journal</a> (articles and information)</p>
<p><a href="http://rbent.net/">rbent &#8211; Recumbent Bike Enthusiasts of North Texas</a> (active forums)</p>
<p><a href="http://rtrmag.com/index.htm">Recumbent and Tandem Rider Magazine</a> (print magazine)</p>
<p><a href="http://www.velovision.com/index.php">VeloVision Magazine</a> (not specifically recumbent focused but some great coverage)</p>
<p>&#160;</p>
<h3>Tucson Cycling Links</h3>
<p>Tucson cycling links could take up an entire post but I couldn’t resist including a few useful favorites:</p>
<p><a href="http://tucsonvelo.com/">Tucson Velo</a> (great news coverage for Tucson cycling across a wide range of interests/issues – this is a great resource and reading this will lead you to a huge array of other Tucson cycling sites/information)</p>
<p><a href="http://thereandbackbikes.com/">There &amp; Back Bicycles</a> (a recently opened Tucson bike shop with a focus on commuter bikes/products and great service – no recumbents but highly recommended)</p>
<p><a href="http://www.ajobikes1.com/">Ajo Bikes</a> (if you want to try a recumbent in Tucson this is the place to go – they often have some nice deals on used ‘bents in addition to a selection of newer bikes)</p>
<p><a href="http://spoke6.com/">Spoke6</a> (maybe a slight stretch for a cycling link – but if you ever work remotely and need a great space with great company and great indoor bike parking this is certainly the place to go!)</p>
<p><a href="http://www.livingstreetsalliance.org/">Living Streets Alliance</a> (A newer organization whose goal “is to promote healthy communities by empowering people to transform our streets into vibrant places for walking, bicycling, socializing, and play.”)</p>
<p><a href="http://bikeped.pima.gov/Publications.html">Tucson Metro Bike Map</a> (invaluable for exploring Tucson by bike!)</p>
<p>&#160;</p>
<h2 align="center">Gear!!</h2>
<p>&#160;</p>
<h3>Bike</h3>
<p><a href="http://www.volaerecumbents.com/">Volea</a> Sport (used since mid 2009) &#8211; The <a href="http://www.volaerecumbents.com/2010/volae_club.php">Volea Club</a> is the closest current model to my Sport. This is the only recumbent I have owned so I can&#8217;t give any meaningful comparison to other bikes/brands &#8211; but I love this bike and Volea has great customer service! If I bought a new bike today there is a VERY good chance I would buy another Volea, but if I was going to compare other brands I would also check out <a href="http://www.bacchettabikes.com/">Bacchetta</a> (a variety of options), <a href="http://bentupcycles.com/">Carbent</a> (performance oriented bikes starting at about $5,000) and the <a href="http://www.catbike.us/">Catbike Mushashi</a> (if I was not looking for a commuter).</p>
<p>&#160;</p>
<p>&#160;</p>
<h3>Cargo</h3>
<p><a href="http://www.terracycle.com/Merchant2/merchant.mvc?Screen=PROD&amp;Store_Code=T&amp;Product_Code=FB_DoubleCentury&amp;Category_Code=FB_HydPack">TerraCycle FastBack Double Century Hydration Pack</a> (used since mid 2010): This bag straps nicely to my carbon fiber seat and is a great addition for carrying hydration bladders and other small items. The shape of the bags can make loading some items awkward (depends on the shape &#8211; bulky items or even my favorite hydration bladders (<a href="http://cascadedesigns.com/platypus/hydration-systems/big-zip-sl/product">Platypus Big Zip SL 2L</a>) can be tough) &#8211; but with a little effort these bags yield a nice amount of storage. For long rides I am currently loading a 2L hydration bladder in each bag, both slightly under filled to make it easy to also fit in my pump (<a href="http://www.topeak.com/products/Mini-Pumps/RoadMorphG">Topeak Road Morph G</a><a href="http://www.topeak.com/products/Mini-Pumps/RoadMorphG)">)</a> and some snacks. The only down side I have found with these bags is that the great set of straps used to secure the bags make it a little too slow/fussy to take off/put on when switching from commuting to recreational rides &#8211; a bit of a dilemma (especially given the price of the bags) that I am still not sure how I should solve. When I first received these bags I tried loading a bladder in one bag and everything else I wanted for a ride in the other &#8211; but found I could not fit everything &#8211; leading to the purchases below&#8230;</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Terracycle FastBack Double Century Hydration Pack" alt="Left side Terracycle FastBack Double Century Hydration Pack strapped to my Volea Carbon Fiber seat" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103Fastback.jpg" width="427" height="219" /></p>
<p><a href="http://www.terracycle.com/Merchant2/merchant.mvc?Screen=PROD&amp;Store_Code=T&amp;Product_Code=FB_NorBack&amp;Category_Code=FB_FrameBag">TerraCycle FastBack NorBack Frame Bag</a> (used briefly mid 2010): This is a nicely made bag and I love the idea of using the space under the frame for additional storage. Unfortunately the bag was a little tricky to position on my bike &#8211; the length of the bag combined with my underseat rack, seat mount and cables conspired to make taking the bag on and off slightly tricky. If this bag was going to stay on my bike all the time the tricky on/off would not be an issue &#8211; but I did not want it attached for every day commuting.</p>
<p><a href="http://bentupcycles.com/product/bent-up-cycles-aero-bag-939.htm">Bent Up Cycles Aero Bag</a> (used since late 2010): After finding that the Norback bag was not for me I looked at several other bags and eventually purchased the Bent Up Cycles Aero Bag. This bag is great! It fits quickly and easily over my seat back with a single strap/buckle to help secure it. It easily swallows repair kit, cable lock, wallet, phone, extra food and a jacket &#8211; perfect for both longer rides and for casual commute days when panniers/change of clothes/computer are not required. The bag holds its shape very well – which is great but does mean that with just a few loose items in the bags items bounce around and tend to be quite noisy… But in that scenario using the small zippered pouches (included with the bag) that velcro to the inside is an easy way to solve the problem. This bag has quickly become a favorite of mine and I love that it is both secure while riding and very easy to put on/take off.</p>
<p><a href="http://www.oldmanmountain.com/Pages/RackPages/RearRacks.html">Old Man Mountain Sherpa Rack</a> (used since late 2010): When I purchased my Volea I had an inexpensive rear rack put on and it worked quite nicely. Most days I use my underseat racks and panniers &#8211; the rear rack sees only occasional use (packages, odd shaped items, etc&#8230;), but because it lets me carry items that I would otherwise have to use the car to transport it is an important part of my setup. The generic rack made adjusting the seat a hassle (because it clamped to the seat stays) and I became curious about the <a href="http://hostelshoppe.com/cgi-bin/readitem.pl?Accessory=1137019809">Sherpa rack</a> that the <a href="http://www.hostelshoppe.com/">Hostelshoppe</a> offers because it has an adapter to use the seat stay clamps as the forward mounting point. This seemed like it would solve the seat adjustment problem and &#8211; while likely overkill for my use/problem considering the price &#8211; I purchased one in late 2010. The seat stay adapter is a nice solution and it makes the connection to the seat stays cleaner and the seat easier to adjust (the extra hardware on the clamp to hold the seat stay tends to take a little extra fiddling when adjusting the seat angle – so it is still not as easy to adjust as without a rear rack). The quality of the rack is great, there are nice bungee attachment points, the mounting brackets accommodate disc brakes and there is a good chance it could be moved to another bike without much effort. As a commuter I wish this rack had an integrated light mount. There is a single hole in the deck of the rack and I tried using that to attach a <a href="http://www.hostelshoppe.com/cgi-bin/readitem.pl?Accessory=1246476085">Jandd mounting bracket</a> &#8211; but found that the resulting vibrations were annoying. Eventually I resorted to drilling a second hole in the deck to more firmly attach the Jandd mounting bracket &#8211; this solution is about 98% of what I would like but it is still noisier on rough roads than I would like. I think with a little more tweaking and I can make it quiet &#8211; but I would have preferred an integrated light mount&#8230; Overall the rack was a nice purchase, but for my needs the inexpensive rack did nicely also.</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Old Man Mountain Sherpa Rack" alt="Old Man Mountain Sherpa rack mounted to my Volea recumbent using the seat stay clamps from the Hostelshoppe" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103SherpaRack.jpg" width="282" height="310" /></p>
<p><a href="http://pacoutdoor.com/bike-gear/view/coop-pannier">Pacific Outdoor Equipment Co-ops</a> (used since late 2009) – I am happily using my original pair of Pacific Outdoor Equipment Coops. Large open bags are a great choice for use in Tucson, especially if you stash some light weight waterproof dry sacks in your bags for the occasional rainy day (I am using several <a href="http://www.seatosummit.com/products/display/7">Sea to Summit Ultra-Sil Dry Sacks</a> that I purchased in 2009). Both Co-ops have developed small holes in the outer material at the bottom outer corners &#8211; but because your items sit in an inner lining (not against the outer material) this has not impacted the usability of the bags.</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Pacific Outdoor Equipment Co-ops" alt="Pacific Outdoor Equipment Co-ops attached to the Terracycle Easy Reacher Rack on my Volea recumbent" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103PACCoops.jpg" width="240" height="224" /></p>
<p><a href="http://www.terracycle.com/Merchant2/merchant.mvc?Screen=CTGY&amp;Store_Code=T&amp;Category_Code=R">Terracycle Easy Reacher Rack</a> (used since late 2009) &#8211; These have definitely made commuting more enjoyable! This rack positions the your panniers under you which really makes a nice difference in ride/handling compared to putting your panniers on the rear rack. It also makes it quick to access your panniers without getting off the bike. This rack has not given me any problems &#8211; highly recommended!</p>
<p>&#160;</p>
<h3>Mirrors</h3>
<p><a href="http://www.therandonneeshop.com/products/show/43-ultra_light_bike_mirror">D+D Oberlauda Ultralight Bike Mirror</a> (used since mid 2010): I am currently using this as my primary/right side mirror – easy to attach, easy to adjust and is great at giving you a very wide rear view. I originally tried this as my primary/left side mirror but I found that it makes things a little smaller than I am am comfortable with for the left side, but as a secondary/right side mirror it is great!</p>
<p><a href="https://www.mirrycle.com/mountain_mirrycle.php">Mountain Mirrycle Mirror</a> (used since mid 2010): This is my current primary/left side mirror – good field of view and a size that makes cars easy to see. I find this mirror slightly finicky to adjust, but it is so good that it just doesn’t matter!</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Mirrors on my Volea" alt="Mountain Mirrycle Mirror on the left side of my handlebars - D+D Oberlauda Ultralight Bike Mirror on the left side of my handlebars" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103Mirrors.jpg" width="320" height="141" /></p>
<p><a href="http://www.bumm.de/index-e.html">Busch &amp; Müller Cyclestar Mirror – Short</a> (used mid 2009 to mid 2010): Easy to adjust and easy to position.I liked using these mirrors but I found that the larger size and bigger field of view of the Mountain Mirrycle made it a better choice for my primary mirror and the extremely wide field of view of the D+D Oberlaude Ultralght Bike Mirror made it a better choice as my secondary mirror.</p>
<h3>&#160;</h3>
<h3>Tires</h3>
<p><a href="http://www.terrybicycles.com/">Terry</a> Tellus PT Tire 650 x 28C (28-571) (used late 2009 to late 2010) [not currently on the Terry site but available at the <a href="http://hostelshoppe.com/cgi-bin/readitem.pl?Accessory=1288828188">Hostelshoppe</a>]– As far as I know this is the cushiest 650c tire that you are going to find &#8211; and on my bike the largest tire that would fit in the frame. These tires are a nice compromise of fat enough to feel good with some weight/cargo and skinny enough not to feel too slow. One downside was that I averaged about one flat every three weeks (sometimes I had better luck/sometimes worse). I found that using a tire liner helped and <a href="http://www.specialized.com/us/en/bc/SBCEqProduct.jsp?spid=26663">Specialized Standard Road LVS tubes</a> might have made a slight difference (these are some of the only tubes I have seen where the manufacturer claims 20/28 in a 650 &#8211; it might be my imagination but these seem like they do just slightly better than other tubes I tried).</p>
<p><a href="http://www.bontrager.com/model/00443">Bontrager Racelite Hardcase</a> 650&#215;25 (used since late 2010)&#160; – For the El Tour de Tucson I wanted to try a slightly skinnier tire, but I was not thrilled about going back to the <a href="http://www.conti-online.com/generator/www/de/en/continental/bicycle/themes/race/racetyres/gatorskin/gatorskin_en.html">Ultra GatorSkin 650x23C</a> that were on the bike when I bought it. I decided to try the Bontrager Racelite Hardcase 650&#215;25 &#8211; these are skinnier than the Tellus PT Tire mentioned above and, as you might expect, the ride is more jarring. However, unlike the Ultra GatorSkin these do quite nicely with a commuting load and seem to be a nice mid-point between the Tellus PT Tire and Ultra GatorSkin. The unexpected benefit has been the flat prevention &#8211; I think I have had one flat so far in 2011 &#8211; a noticeable improvement over both the Tellus PT Tire and Ultra GatorSkin. While I occasionally miss the extra cush from the Tellus PT Tire these have remained on my bike because of the (so far &#8211; cross your fingers) remarkable flat protection. </p>
<p>Other 650 x 25 options (not used): These are mentioned here because I have found it difficult (and slightly frustrating) to find 650c tire choices wider than 23 – I have not used any of these and have not even seen any of these in person… Bontrager currently lists the <a href="http://www.bontrager.com/model/02865">Bontrager Race Lite</a> , <a href="http://www.bontrager.com/model/02865">Bontrager Race X Lite AC</a> and <a href="http://www.bontrager.com/model/00444">Bontrager Race X Lite</a> in 650&#215;25 (as of 2/26/2011 these models seem to be in-stock and on-sale &#8211; great deals but I hope it does not mean that these choices are going away). I also recently noticed that Panaracer lists the <a href="http://www.panaracer.com/urban.php">Pasela</a> (from their Urban line) in 650&#215;25.</p>
<p>&#160;</p>
<h3>Light</h3>
<p><a href="http://www.mcssl.com/store/ibexsports/2011-exposure-maxx-d-bicycle-light">Exposure Maxx D</a> (used since mid 2009) current version:&#160; : It is amazing how nice it is to have a bright high-quality light that does not need an external battery pack &#8211; quick and easy to get on/off the bike and with no cables/pack to figure out where to rig on the recumbent &#8211; perfect for commuting. I have occasionally had to switch from the hi setting to the medium setting on very hot nights in stop-and-go traffic to avoid overheating the light when it is not getting enough airflow – but the Medium setting is very bright and I have not found this to be an issue. The mounting bracket for the light does not have the vertical adjustability that some mounts have, this may require slightly more time/fiddling when you first set the light up &#8211; but once you have it setup I doubt you will miss the adjustability. In addition to being a great light the support crew at <a href="http://www.ibexsports.com/">Ibex Sports</a> (the distributor for Exposure Lights) is fantastic &#8211; it is always great to talk to people who actually use the products they sell! With any light I think it is worth having a <a href="http://www.mcssl.com/store/ibexsports/catalog/product/b76dd6cc790043c9b1cba147320a2286">second charger</a> for convenience (one at home/one at work) – and I was glad when Exposure added a <a href="http://www.mcssl.com/store/ibexsports/catalog/product/7368078eac25460a91eb4abfd07ab0fa">USB “Top-Up” Charging cable</a> to their line (small enough to fit in my tool bag to allow for impromptu charging without having to carry around a wall charger).</p>
<p><a href="http://shop.bacchettabikes.com/accessories/lights/oab-one-armed-bandit-light-mount.html">OAB (One Armed Bandit) Light Mount</a> (used since late 2010) &#8211; For most of 2010 my light was mounted on may handlebars &#8211; that setup worked well. The position on the handlebar did result in shadows from my feet/front of the bike, but the Maxx-D generates enough light that this was really never an issue. In late 2010 I found and purchased the One Armed Bandit and it has turned out to be an amazing light mount. This mount puts the light far enough out in front of my bike that there is virtually no shadow from your feet (and no reflection from your cranks) putting more light on the road. One downside to this setup – mounting the light on the handle bar was occasionally nice because when going around a tight corner it would put more light where you are going rather than putting all the light where the front of the bike is currently pointing, but the difference is minor.</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Exposure Maxx-D on the Bacchetta One Armed Bandit" alt="Exposure Maxx-D headlight on the Bacchetta One Armed Bandit mounted to the front of my Volea recumbent" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103LightAndOab.jpg" width="432" height="228" /></p>
<p><a href="http://www.cateye.com/en/product_detail/273">Cat Eye SL-LD100</a> (used since ?2007) – on my helmet for a little additional visibility, this light is not outstandingly bright but the size and attachment make it very versatile.</p>
<p><a href="http://www.cateye.com/en/product_detail/561">Cateye HL-EL010 Uno Headlight</a> (used since mid 2010): Single battery, single LED, small enough I don’t mind fitting it in my toolbag – this backup light has saved me a couple of times and having it always in my bag has really paid off. Don’t expect too much brightness, best as a backup when being seen is crucial.</p>
<p><a href="http://www.instructables.com/id/Bright-Bike-DIY-Kit-Installation/">Bright Bike</a> (used since early 2010): This project and the <a href="http://www.brightthread.com">related kits</a> are a set of materials, suggestions and instructions for adding reflective vinyl to your bike. This does not replace reflectors and lights – but the simple added reflectivity/visibility&#160; is a great idea and I applied the black reflective vinyl to a number of spots on my bike.</p>
<p>I have also used a variety of rear lights all of which are slightly underwhelming and not really worth mentioning&#8230;</p>
<p>&#160;</p>
<h3>Office</h3>
<p>I am still using my <a href="http://shop.lenovo.com/us/notebooks/thinkpad/x-series-tablet">Lenovo X-61 Tablet</a> and while my phone replaces it some days it is still with me for quite a few commutes. I have not had and problems with carrying it in my panniers in my <a href="http://www.tombihn.com/">Tom Bihn</a> <a href="http://www.tombihn.com/page/001/PROD/300/TB0300">Horizontal Brain Cell</a>. The Tom Bihn <a href="http://www.tombihn.com/page/001/PROD/ACC/TB0345">Horizontal Freudian Slip</a> &#8211; mentioned last year – is also almost always in my bag to provide a bit of organization.</p>
<p>&#160;</p>
<h3>Seat</h3>
<p><a href="http://www.ventisit.nl/start.php?page=1&amp;lang=2">Ventisit</a> (used since late 2010)&#160; &#8211; The seat pad that came with my Volea was cushy and easy to attach/detach &#8211; but after a year and a half of being parked in the Tucson sun the top layer of open cell foam started to crumble – I found the Ventisit recommended as a more breathable alternative. Compared to the stock Volea seat pad the Ventisit is more breathable and does a better job of not holding water when it rains. The extra ventilation is especially appreciated &#8211; although don&#8217;t expect any miracles, in hot Tucson sun your back will still get sweaty! The Ventisit offers less padding than the stock pad&#160; (not a problem so far for me but it is noticeable) and is more complicated to attach (there are plenty of options for attachment &#8211; but none are as easy as throwing some velcro against the closed cell foam of the stock pad). I like the Ventisit pad a lot – it will be interesting to see how it holds up&#8230;</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Ventisit Material" alt="Close up view of the Ventisit seat pad showing the material used for the pad" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103VentiseatCloseup.jpg" width="359" height="185" /></p>
<p>&#160;</p>
<h3>Pedals</h3>
<p><a href="http://www.wellgo.com.tw/product.asp?category=slip+resistant&amp;offset=3">Wellgo C002 City Comfort Pedals</a> (used since late 2010): Inspired by ADT’s change to clipless pedals I added these to my bike in late 2010. I thought that it was going to be a fairly brutal transition and thought that having my feet farther from the ground would make clipless pedals a bit more of a challenge on my recumbent – but my fears were completely unfounded. While these took a little practice it actually worked out to be a fairly easy adjustment – I think that the two factors that made it easy were that you are setup to easily look at your feet (taking a little of the guess work out of clipping in) and that the recumbent forces you to be adapt to having your feet higher off the ground (even with normal pedals you have a relatively long ‘delay’ getting your foot down). Since my bike is frequently used for commuting I was happy to add a pedal that would be nice for use with ‘regular’ shoes and was glad I could add the toe-clips listed below to them (the toe-clips are practical for regular shoes and have the added benefit of weighting the pedals so they are nicely positioned to clip into).</p>
<p><a href="http://www.zefal.com/zefal/produit.php?key=45">Zefal Toe-Clips</a> (used since late 2009): Toe-clips are not going to add very much to the efficiency of your pedal stroke, but they are a great way to add some control of the positioning of the pedals – a welcome addition for stop and go positioning. </p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Wellgo C002 Pedals with Zefal Toe-Clips" alt="Wellgo C002 Pedals with Zefal Toe-Clips" src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103PedalAndToeClip.jpg" width="217" height="349" />    </p>
<h3>Clothing</h3>
<p>Less bike specific items than you might see in many cycling related lists &#8211; but since traditional bike gear tends to have pockets on the back (not functional or comfortable on a recumbent) I generally look elsewhere for clothing. These are the pieces that I am using most frequently:</p>
<p><a href="http://www.montane.co.uk/products/men/windproof/featherlite-smock/40">Montane Featherlite Smock</a> (used since early 2011): A nice high visibilty wind breaker &#8211; nice reflective hits and takes up very little space – simple and good!</p>
<p><a href="http://www.icebreaker.com/site/index.html">Icebreaker</a> Long sleeve Top (used since early 2008): This top is has gotten quite a bit of use because it provides an incredibly practical amount of warmth in Tucson. It is all the warmth I need most of the year – and for colder days usually all I need if I combine it with a shell. Not a current model but quite like the current 260 weight pieces.</p>
<p><a href="http://www.outdoorresearch.com/site/m_s_flurry_gloves.html">Outdoor Research Flurry Gloves</a> (used since late 2009): Heavier weight Wool/Fleece gloves with nice durability, I use these infrequently on colder days and have rarely wanted anything warmer.</p>
<p><a href="http://www.outdoorresearch.com/site/m_s_stormtracker_gloves.html">Outdoor Research StormTracker Gloves</a> (used since late 2010): I added these late in 2010 on what were &#8211; for Tucson &#8211; some extremely cold days. I don&#8217;t think these will get much use but they provided some welcome relief from painfully cold hands this winter!</p>
<p><a href="http://www.manzella.com/index.php/products/detail/mz-128r">Manzella Hatchback Gloves</a>: Fleece with a high visibility shell that stows into the back of the glove. These are in my bag most of the time since they are good all around weight in Tucson.</p>
<p><a href="http://marmot.com/products/driclime_helmet_liner">Marmot DriClime Helmet Liner</a>: Not too bulky under my helmet and provides enough warmth for any time of the year in Tucson &#8211; a favorite.</p>
<p><a href="http://www.outdoorresearch.com/site/swift_cap.html">Outdoor Research Swift Cap</a> (used since mid 2010) &#8211; Used for extra rain protection for my glasses and face, fits fairly easily under my helmet.</p>
<p><a href="http://shop.bacchettabikes.com/apparel/jerseys/x-eyed-jersey.html">Bacchetta X-Eyed X-Pocket Jersey</a> (used since mid 2010): Pockets on the front &#8211; where they belong!     </p>
<p>&#160;</p>
<p>Always love new ideas – if you have any suggestion please share by leaving a comment!</p>
<p>CM</p>
<p>&#160;</p>
<p><img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="CM and Volea Sport - Commuting in Tucson" alt="Stopped on the side of a Tucson street on my Volea Sport with my usual commuting setup." src="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103VoleaStopped.jpg" width="407" height="287" /></p>
<br />Filed under: <a href='http://cmiles.info/category/bicycle/'>Bicycle</a>, <a href='http://cmiles.info/category/bikecommuting/'>BikeCommuting</a>, <a href='http://cmiles.info/category/recumbent/'>Recumbent</a>, <a href='http://cmiles.info/category/tucson/'>Tucson</a> Tagged: <a href='http://cmiles.info/tag/bikecommuting-2/'>bikecommuting</a>, <a href='http://cmiles.info/tag/recumbent-2/'>recumbent</a>, <a href='http://cmiles.info/tag/tucson/'>Tucson</a>, <a href='http://cmiles.info/tag/volea/'>volea</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=145&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2011/03/02/bike-commuting-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103CommutingBlur.jpg" medium="image">
			<media:title type="html">Commuting Around Tucson</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103Fastback.jpg" medium="image">
			<media:title type="html">Terracycle FastBack Double Century Hydration Pack</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103SherpaRack.jpg" medium="image">
			<media:title type="html">Old Man Mountain Sherpa Rack</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103PACCoops.jpg" medium="image">
			<media:title type="html">Pacific Outdoor Equipment Co-ops</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103Mirrors.jpg" medium="image">
			<media:title type="html">Mirrors on my Volea</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103LightAndOab.jpg" medium="image">
			<media:title type="html">Exposure Maxx-D on the Bacchetta One Armed Bandit</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103VentiseatCloseup.jpg" medium="image">
			<media:title type="html">Ventisit Material</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103PedalAndToeClip.jpg" medium="image">
			<media:title type="html">Wellgo C002 Pedals with Zefal Toe-Clips</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com/camiles_WebImages/2011_ADTCAM/1103VoleaStopped.jpg" medium="image">
			<media:title type="html">CM and Volea Sport - Commuting in Tucson</media:title>
		</media:content>
	</item>
		<item>
		<title>My Bike Commuting Setup!</title>
		<link>http://cmiles.info/2010/05/02/my-bike-commuting-setup/</link>
		<comments>http://cmiles.info/2010/05/02/my-bike-commuting-setup/#comments</comments>
		<pubDate>Sun, 02 May 2010 23:03:00 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[Bicycle]]></category>
		<category><![CDATA[BikeCommuting]]></category>
		<category><![CDATA[Recumbent]]></category>
		<category><![CDATA[Tucson]]></category>
		<category><![CDATA[bikecommuting]]></category>
		<category><![CDATA[recumbent]]></category>
		<category><![CDATA[volea]]></category>

		<guid isPermaLink="false">https://cmiles.wordpress.com/2010/05/02/my-bike-commuting-setup/</guid>
		<description><![CDATA[I have been commuting for over 5 years now! I am not a bike or bike gear expert, but I have fun and get great ideas from other rider’s setups/gear/ideas so I thought I would share my current gear list! &#160; Bike: Volea Sport with Volae Carbon seat – This is a beautiful machine! I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=140&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been commuting for over 5 years now! I am not a bike or bike gear expert, but I have fun and get great ideas from other rider’s setups/gear/ideas so I thought I would share my current gear list!</p>
<p>&#160;<a href="http://www.flickr.com/photos/cmiles/4572145677/"><img src="http://s3.amazonaws.com:80/camiles_WebImages/2010_ADTCAM/1004 Volea Recumbet from the front.JPG" width="456" height="607" /></a></p>
<p>Bike:</p>
<p><a href="http://www.volaerecumbents.com/">Volea</a> <a href="http://www.volaerecumbents.com/2009/volae_sport.php">Sport</a> with <a href="http://www.hostelshoppe.com/cgi-bin/readitem.pl?Accessory=1089843061">Volae Carbon seat</a> – This is a beautiful machine! I am a convert to this style of bike and find it more comfortable and fun than a diamond frame for my daily commute. If you happen to be in Tucson <a href="http://www.ajobikes.com/">Ajo Bikes</a> has a nice collection of recumbents… Nothing (no matter how amazing) is going to work for everyone in every situation. After riding my Volea for close to 9 months I would recommend it without hesitation for commuting in Tucson, but would encourage anyone who was interested to think about: </p>
<ul>
<li>You won’t be hopping curbs with this style bike – it is not for every style of riding… </li>
<li>Parking can be slightly more complicated (not much, but squeezing into a crowded rack is harder or maybe even impossible depending on the style of rack). </li>
<li>Get ready to be noticed! You are NOT going to blend in and if questions, comments,&#160; strange stares, shouts, laughter and fun conversations are not your cup of tea you will be better off with another bike. </li>
<li>I have not found many very tire choices for wider tires for the 650c wheels that come on many Volea models (skinny racing tires are no problem…) – you might consider choices such as the <a href="http://www.volaerecumbents.com/2009/volae_expedition.php">Volae Expedition</a>/<a href="http://www.volaerecumbents.com/2009/volae_expeditionpro.php">Expedition Pro</a> instead of the <a href="http://www.volaerecumbents.com/">Volea</a> <a href="http://www.volaerecumbents.com/2009/volae_sport.php">Sport</a> for 26” wheels/more tire options. </li>
</ul>
<p>Other Brands – If you are interested in this style bike I would recommend a look at the bikes at the <a href="http://www.hostelshoppe.com/recumbent_catalog.php">Hostel Shoppe</a> and <a href="http://www.bacchettabikes.com/">Bachetta</a>.</p>
<p>&#160;</p>
<p>Cargo:</p>
<p>Underseat – A <a href="http://www.terracycle.com/Merchant2/merchant.mvc?Screen=CTGY&amp;Store_Code=T&amp;Category_Code=R">Terracycle Easy Reacher Rack</a> is a really nice addition – slightly better ride because the rack positions the weight under you. Also gives you reasonable access to your panniers without getting out of your seat!</p>
<p>Rear – You can get a number of inexpensive options to work just fine (as in my current setup), but I have been very curious about the Volea recommended <a href="http://www.terracycle.com/Merchant2/merchant.mvc?Screen=CTGY&amp;Store_Code=T&amp;Category_Code=R">Old Man Mountain Sherpa Rack</a> with the <a href="http://www.hostelshoppe.com/cgi-bin/readitem.pl?Accessory=1083879755">Volea Rack Adapter Kit</a>.</p>
<p>Panniers – I am using a pair of <a href="http://www.pacoutdoor.com/">Pacific Outdoor Equipment Coops</a>. These Grocery Bag style panniers are large and durable –&gt; in some areas water proof bags would be more practical, but are (in my opinion) overkill for Tucson. I keep several <a href="http://www.seatosummit.com/products/display/7">Sea to Summit Ultra-Sil Dry Sacks</a> in my bag to protect electronics and other valuables in the infrequent rain.</p>
<p>&#160;</p>
<p>Office:</p>
<p>I often have my Lenovo X-61 Tablet with me &#8211; I was originally worried about having it in a pannier rather than on my back &#8211; but so far having it in the pannier has caused exactly 0 problems! I am carrying my computer in a <a href="http://www.tombihn.com/page/001/PROD/300/TB0300">Tom Bihn Horizontal Brain Cell</a> – the best laptop case I have ever found – and I add a little organization with a Tom Bihn <a href="http://www.tombihn.com/page/001/PROD/ACC/TB0345">Horizontal Freudian Slip</a></p>
<p>&#160;</p>
<p>Tires:</p>
<p>This is the first bike that I have owned with 650c wheels. It is possible that I have not looked in the right places, but so far I have found relatively few tire choices compared with 26” or 700 wheels. I have used:</p>
<p><a href="http://www.conti-online.com/generator/www/de/en/continental/bicycle/themes/race/recetyres/ultra_gatorskin/ultragatorskin_en.html">Continental – Ultra GatorSkin 650x23C</a> – These are great but I found that they were a little hard/skinny esp. for a load of groceries/heavier loads.</p>
<p><a href="http://www.terrybicycles.com/product/detail/2500403/current/tellus-pt-tire--x-c--">Tellus PT Tire 650 x 28C (28-571) by Terry</a> – I have used this tire for several months and I love it! Cushier than the Ultra GatorSkins and a much nicer ride with a heavier load (and not so wide that I feel slow). You might notice that many 650c tubes you will find do not have 28 in the range of tire sizes that they list – but on the recommendation of Georgena Terry I used the <a href="http://www.schwalbetires.com/bike_tires/tubes/presta_valve-40_mm">Schwalbe SV11</a> tubes that I had been using with the <a href="http://www.conti-online.com/generator/www/de/en/continental/bicycle/themes/race/recetyres/ultra_gatorskin/ultragatorskin_en.html">Continental – Ultra GatorSkin 650x23C</a>.</p>
<p><a href="http://www.bontrager.com/products/components/tires">Bontrager Race X</a> – I have not tried any of these yet but with so few choices for wider 650c tires it is certainly worth noting that Bontrager offer several models in its Race X series that come in 650 x 25 (<a href="http://www.bontrager.com/model/00444">Race X Lite</a> and <a href="http://www.bontrager.com/model/02865">Race X Lite AC</a>). (Thanks to <a href="http://www.volaerecumbents.com/">Volea</a> and the <a href="http://www.hostelshoppe.com/recumbent_catalog.php">Hostel Shoppe</a> for pointing these out to me).</p>
<p>&#160;</p>
<p>Light:</p>
<p><a href="http://www.exposurelights.com/products/maxx_d/index.php">Exposure MaXx-D</a> – It was time for a new light when I bought my recumbent and the cable free design of the MaXx-D was a great feature – no routing cables (which may take slightly more creativity on a recumbent) and only one thing to take off the bike when it is parked. This has performed really nicely so far – bright and good battery life. I originally intended to mount the light on a <a href="http://www.hostelshoppe.com/cgi-bin/readitem.pl?Accessory=983907300">Volea T-Bar Light Mount</a> – but the reflections from the shiny crank arms were too much of a distraction and I ended up mounting the light on my handle bars, which works just fine…</p>
<p><a href="http://www.cateye.com/en/product_detail/273">Cat Eye SL-LD100</a> – on my helmet for a little additional visibility since I am frequently riding at night.</p>
<p><a href="http://www.ptsportlights.com/?q=node/124">Princeton Tec Swerve</a> – a simple rear light, this has worked ok.</p>
<p>&#160;</p>
<p>Outerwear:</p>
<p>I dont really have too much bike specific clothing – but these pieces seem to mix and match nicely to cover the range of Tucson weather:</p>
<p><a href="http://www.outdoorresearch.com/site/index.html">OR</a> Wind Beaker&#160; The OR shell I have is old and no longer made, a simple small pullover with a nice long zipper that makes it easy to get on over a helmet.</p>
<p><a href="http://www.outdoorresearch.com/site/m_s_revel_jacket.html">OR Revel Jacket</a> – This goes in my bag in wet weather – the Revel Jacket is water proof with great venting options. No need for a cycle specific piece on the recumbent…</p>
<p><a href="http://www.icebreaker.com/">Icebreaker</a> Long sleeve Top:. A nice layering option when it is chilly. This piece is made from Merino Wool, the main benefit being that it can sit in my bag a lot longer without needing a wash. Not a current model but a 260 weight piece.</p>
<p><a href="http://www.patagonia.com/web/us/product/mens-nano-puff-pullover?p=84020-0-961">Patagonia Nano Puff Pullover</a>: For the cold &#8211; the Nano Puff is surprisingly warm for the weight/bulk.</p>
<p><a href="http://www.manzella.com/">Manzella</a> Vapor Gloves: The Vapor gloves are a lightweight fleece with a nice high visibility color and a few reflective hits.</p>
<p><a href="http://www.manzella.com/">Manzella</a> Hatchback Gloves: Thicker fleece and a high visibility shell that stows out of the way in the back of the glove and can be pulled out to cover your fingers. The small strip of reflective trim is another nice detail.</p>
<p><a href="http://marmot.com/fall_2009/mens/hats/helmet_liner/">Marmot Helmet Liner</a>: Not too bulky under my helmet and provides enough warmth for any time of year in Tucson.</p>
<p>&#160;<a href="http://www.flickr.com/photos/cmiles/4572771486/in/set-72157623125316092/"><img src="http://s3.amazonaws.com:80/camiles_WebImages/2010_ADTCAM/1004 Volea Recumbent.JPG" width="459" height="345" /></a></p>
<p>If you have any ideas/suggestions please leave a comment below!</p>
<p>CM</p>
<br />Filed under: <a href='http://cmiles.info/category/bicycle/'>Bicycle</a>, <a href='http://cmiles.info/category/bikecommuting/'>BikeCommuting</a>, <a href='http://cmiles.info/category/recumbent/'>Recumbent</a>, <a href='http://cmiles.info/category/tucson/'>Tucson</a> Tagged: <a href='http://cmiles.info/tag/bikecommuting-2/'>bikecommuting</a>, <a href='http://cmiles.info/tag/recumbent-2/'>recumbent</a>, <a href='http://cmiles.info/tag/tucson/'>Tucson</a>, <a href='http://cmiles.info/tag/volea/'>volea</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=140&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2010/05/02/my-bike-commuting-setup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com:80/camiles_WebImages/2010_ADTCAM/1004VoleaRecumbetfromthefront.JPG" medium="image" />

		<media:content url="http://s3.amazonaws.com:80/camiles_WebImages/2010_ADTCAM/1004VoleaRecumbent.JPG" medium="image" />
	</item>
		<item>
		<title>Generating WPF with T4 Templates for Localization</title>
		<link>http://cmiles.info/2010/01/29/generating-wpf-with-t4-templates-for-localization/</link>
		<comments>http://cmiles.info/2010/01/29/generating-wpf-with-t4-templates-for-localization/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 15:36:00 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[globalization]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[t4]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://cmiles.wordpress.com/2010/01/29/generating-wpf-with-t4-templates-for-localization/</guid>
		<description><![CDATA[Recently I had the opportunity to explore setting up a small WPF application for globalization/localization. I had no previous experience with this process, so I started by doing some searching and reading. I thought the links below were particularly interesting: WPF Localization Guidance – Included in this project is The WPF Localization Guidance PDF by [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=136&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I had the opportunity to explore setting up a small WPF application for globalization/localization. I had no previous experience with this process, so I started by doing some searching and reading. I thought the links below were particularly interesting:</p>
<p><a href="http://wpflocalization.codeplex.com/">WPF Localization Guidance</a> – Included in this project is The WPF Localization Guidance PDF by Rick Strahl and Michele Leroux Bustamante – I highly recommend reading this! Great details, several approaches are examined.</p>
<p><a href="http://www.codeproject.com/KB/WPF/InternationalizedWizard.aspx">Creating an Internationalized Wizard in WPF</a> by Josh Smith, Karl Shifflett. Very nice walk thru of building an Internationalized Wizard style app with resource files. This is a very approachable place to start.</p>
<p><a href="http://www.codeproject.com/KB/WPF/WPFLocalize.aspx">WPF Multi-Lingual at Runtime</a> by Andrew Wood – A XmlDataProvider based solution.</p>
<p><a href="http://www.codeproject.com/KB/WPF/Article.aspx?aid=17334">Localizing WPF Applications using Locbaml</a> by brunzefb – This link is notable for its comparison of several different approaches.</p>
<p><a href="http://www.codeproject.com/Articles/37339/WPF-Localization.aspx">WPF Localization</a> by Sacha Barber – Interesting because of the third method shown in the article that uses ResourceDictionaries. For more information on using Resource Dictionaries see the answer to <a href="http://stackoverflow.com/questions/1659822/localization-of-text-that-includes-subscript-and-inline-images-in-wpf">this question</a> on <a href="http://www.stackoverflow.com">Stack Overflow</a> by&#160; Ray Burns.</p>
<p>&#160;</p>
<p>One interesting thing about many of the approaches above is that the focus seems to on localizing strings/text, and to a lesser degree settings, images and other resources. In the context of WPF I was surprised not to find more information about customizing the layout of the UI as part of the translation into another language. I think the structure of XAML encourages a UI composed of many elements that will need more than string substitution to be ideal in another language.</p>
<p>For example, the XAML below and UI it generates seems typical of the kind of composition and ‘richness’ encouraged by WPF/XAML’s structure and tools: </p>
<p><pre class="brush: xml; gutter: false;">
&lt;UserControl
		xml:lang=&quot;en&quot;
        xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
        xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&gt;
    &lt;UserControl.Resources&gt;
        &lt;ResourceDictionary&gt;
            &lt;ResourceDictionary.MergedDictionaries&gt;
                &lt;ResourceDictionary Source=&quot;basic_styles.xaml&quot; /&gt;
                &lt;ResourceDictionary Source=&quot;equations.xaml&quot; /&gt;
            &lt;/ResourceDictionary.MergedDictionaries&gt;
        &lt;/ResourceDictionary&gt;
    &lt;/UserControl.Resources&gt;

	&lt;WrapPanel Style=&quot;{StaticResource description_wrap_panel_style}&quot;&gt;

		&lt;TextBlock	x:Name=&quot;c_textblock&quot;
					Style=&quot;{StaticResource description_textblock_style}&quot;
					AutomationProperties.Name = &quot;Enter a Constant, C, that satisfies the following equation: the standard error of the estimate is equal to the constant C over the square root of the sample size&quot;&gt;
			Enter a constant, &lt;Italic&gt;C&lt;/Italic&gt;, that satisfies
    	&lt;InlineUIContainer Style='{StaticResource image_container_style}'&gt;
    		&lt;Image x:Name='formula_11'
					Source='{StaticResource equation_11}'
					Style='{StaticResource image_style}'&gt;
                &lt;Image.Height&gt;
                    &lt;MultiBinding Converter='{StaticResource image_size}'&gt;
                        &lt;Binding Mode='OneWay'
								ElementName='formula_11'
								Path='Tag'/&gt;
                        &lt;Binding Mode='OneWay'
								ElementName='c_textblock'
								Path='FontSize'/&gt;
                    &lt;/MultiBinding&gt;
                &lt;/Image.Height&gt;
            &lt;/Image&gt;
    	&lt;/InlineUIContainer&gt;
	    &lt;/TextBlock&gt;

		&lt;TextBlock 	Style=&quot;{StaticResource description_textblock_style}&quot;
					KeyboardNavigation.TabIndex=&quot;1&quot;&gt;
			(&lt;Hyperlink AutomationProperties.Name='More information about the constant C' x:Name='c_hyperlink'&gt;more info&lt;/Hyperlink&gt;)
		&lt;/TextBlock&gt;

		&lt;TextBox 	Style=&quot;{StaticResource entry_textbox_style}&quot;
					AutomationProperties.LabeledBy=&quot;{Binding ElementName=c_textblock}&quot;
					KeyboardNavigation.TabIndex=&quot;0&quot;&gt;
		&lt;/TextBox&gt;

	&lt;/WrapPanel&gt;
&lt;/UserControl&gt;
</pre></p>
<p><img src="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_English.JPG" width="461" height="114" /></p>
<p>Certainly changing out all of the strings to translate this example is possible (slightly painful because of the number of string to change out…). In French or Spanish this would work fine:</p>
<p>&#160;<img src="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_French.JPG" width="472" height="104" /></p>
<p><img src="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_Spanish.JPG" width="471" height="98" />&#160;</p>
<p>However, here is the same UI translated into Japanese – notice that the translator did not keep the elements in the same position.</p>
<p><img src="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_Japanese.JPG" width="467" height="103" /></p>
<p>&#160;</p>
<p>To accommodate a flexible layout in this application I decided to use T4 templates to generate &#8216;loose&#8217; XAML files. These files are included in the output and parsed at runtime based on the CurrentCulture.</p>
<p>The code below is the contents of the file base_block.tt – this t4 template holds the common elements of the XAML files and will be ‘imported’ by the language specific t4 templates. The language specific templates will provide values for the variables introduced in base_block.tt. One important detail is the use of encoding=&quot;Unicode&quot; &#8211; I assumed “Utf-8” would work but the XamlParser would error on some characters when the template specified Utf-8, apparently because of the BOM setting…</p>
<p><pre class="brush: xml; gutter: false;">
&lt;#@ template debug=&quot;false&quot; hostspecific=&quot;false&quot; language=&quot;C#&quot; #&gt;
&lt;#@ output extension=&quot;.xaml&quot; encoding=&quot;Unicode&quot;#&gt;

&lt;UserControl
		xml:lang=&quot;&lt;#= this.xml_lang #&gt;&quot;
        xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
        xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&gt;
    &lt;UserControl.Resources&gt;
        &lt;ResourceDictionary&gt;
            &lt;ResourceDictionary.MergedDictionaries&gt;
                &lt;ResourceDictionary Source=&quot;basic_styles.xaml&quot; /&gt;
                &lt;ResourceDictionary Source=&quot;equations.xaml&quot; /&gt;
            &lt;/ResourceDictionary.MergedDictionaries&gt;
        &lt;/ResourceDictionary&gt;
    &lt;/UserControl.Resources&gt;

	&lt;WrapPanel Style=&quot;{StaticResource description_wrap_panel_style}&quot;&gt;

		&lt;TextBlock	x:Name=&quot;c_textblock&quot;
					Style=&quot;{StaticResource description_textblock_style}&quot;
					AutomationProperties.Name = &quot;&lt;#= this.textblock_automation_name #&gt;&quot;&gt;
			&lt;#= this.textblock_constant_C_contents #&gt;
	    &lt;/TextBlock&gt;

		&lt;TextBlock 	Style=&quot;{StaticResource description_textblock_style}&quot;
					KeyboardNavigation.TabIndex=&quot;1&quot;&gt;
			&lt;#= this.hyperlink_textblock_contents #&gt;
		&lt;/TextBlock&gt;

		&lt;TextBox 	Style=&quot;{StaticResource entry_textbox_style}&quot;
					AutomationProperties.LabeledBy=&quot;{Binding ElementName=c_textblock}&quot;
					KeyboardNavigation.TabIndex=&quot;0&quot;&gt;
		&lt;/TextBox&gt;

	&lt;/WrapPanel&gt;
&lt;/UserControl&gt;

&lt;#+

	private string xml_lang = @&quot;&quot;;
	private string textblock_constant_C_contents = @&quot;&quot;;
	private string textblock_automation_name = @&quot;&quot;;
	private string hyperlink_textblock_contents = @&quot;&quot;;

#&gt;
</pre></p>
<p>Note that the variables hold all of the information that I wanted to be able to manipulate &#8211; not just the string portions of the UI. The file for English, en.tt:</p>
<p><pre class="brush: xml; gutter: false;">
&lt;# 
	
	xml_lang = @&quot;en&quot;;

	textblock_constant_C_contents = 
		@&quot;Enter a constant, &lt;Italic&gt;C&lt;/Italic&gt;, that satisfies
    	&lt;InlineUIContainer Style='{StaticResource image_container_style}'&gt;
    		&lt;Image x:Name='formula_11' 
					Source='{StaticResource equation_11}' 
					Style='{StaticResource image_style}'&gt;
                &lt;Image.Height&gt;
                    &lt;MultiBinding Converter='{StaticResource image_size}'&gt;
                        &lt;Binding Mode='OneWay' 
								ElementName='formula_11' 
								Path='Tag'/&gt;                        
                        &lt;Binding Mode='OneWay' 
								ElementName='c_textblock' 
								Path='FontSize'/&gt;
                    &lt;/MultiBinding&gt;
                &lt;/Image.Height&gt;
            &lt;/Image&gt;
    	&lt;/InlineUIContainer&gt;&quot;;

	textblock_automation_name = @&quot;Enter a Constant, C, that satisfies the following equation: the standard error of the estimate is equal to the constant C over the square root of the sample size&quot;;

	hyperlink_textblock_contents = @&quot;(&lt;Hyperlink AutomationProperties.Name='More information about the constant C' x:Name='c_hyperlink'&gt;more info&lt;/Hyperlink&gt;)&quot;;

#&gt;

&lt;#@ include file=&quot;base_block.tt&quot; #&gt;
</pre></p>
<p>The file for the Spanish version:</p>
<p><pre class="brush: xml; gutter: false;">
    &lt;#
	
        xml_lang = @&quot;es&quot;;

        textblock_constant_C_contents =
            @&quot;Ingrese una constante, &lt;Italic&gt;C&lt;/Italic&gt;, para resolver
            &lt;InlineUIContainer Style='{StaticResource image_container_style}'&gt;
                &lt;Image x:Name='formula_11'
                        Source='{StaticResource equation_11}'
                        Style='{StaticResource image_style}'&gt;
                    &lt;Image.Height&gt;
                        &lt;MultiBinding Converter='{StaticResource image_size}'&gt;
                            &lt;Binding Mode='OneWay'
                                    ElementName='formula_11'
                                    Path='Tag'/&gt;
                            &lt;Binding Mode='OneWay'
                                    ElementName='c_textblock'
                                    Path='FontSize'/&gt;
                        &lt;/MultiBinding&gt;
                    &lt;/Image.Height&gt;
                &lt;/Image&gt;
            &lt;/InlineUIContainer&gt;&quot;;

        textblock_automation_name = @&quot;Ingrese una constante, C, que satisface la siguiente ecuación: el error estándar de la estimación es igual a la constante C sobre la raíz cuadrada del tamaño de la muestra.&quot;;

        hyperlink_textblock_contents = @&quot;(&lt;Hyperlink AutomationProperties.Name='Más información acerca de la constante C'&gt;más información&lt;/Hyperlink&gt;)&quot;;

    #&gt;

    &lt;#@ include file=&quot;base_block.tt&quot; #&gt;
</pre></p>
<p>Each of the XAML files has a Build Action of ‘Content’ so that it is included in the output for the project.&#160; At runtime I look at the CurrentCulture, compare that to the names of the generated XAML files that are available, feed the file to XamlReader.Load() and add the resulting UserControl into the UI as needed. A small sample app demonstrating this is a available <a href="http://s3.amazonaws.com/camiles_WebImages/2009_ADTCAM/T4LocalizationSample_VS2010.zip">here</a>.</p>
<p>&#160;</p>
<p>I do not have enough experience with globalization/localization to be confident this approach would work in all situations, but for this application it did work and I enjoyed that it: easily allows flexible UI layout, generated XAML files that could be viewed in the VS editor and is simple to use. I seems to me that the biggest downsides to this approach are that it does not allow translators to work on a simple value pair style file and the loose XAML does not allow for a code-behind (which is usually fine but occasionally awkward – at least for me). I would love to hear any comments or feedback on this approach!</p>
<p>&#160;</p>
<p>Special thanks to Lance and Kent for translating for me!! And extra thanks to Lance for pointing out how to cleanly <a href="http://en.support.wordpress.com/code/posting-source-code/">post source code</a> on <a href="http://en.support.wordpress.com/code/posting-source-code/">WordPress.com</a></p>
<p>&#160;</p>
<p>Enjoy!</p>
<p>CM</p>
<br />Filed under: <a href='http://cmiles.info/category/net/'>.net</a> Tagged: <a href='http://cmiles.info/tag/net/'>.net</a>, <a href='http://cmiles.info/tag/globalization/'>globalization</a>, <a href='http://cmiles.info/tag/localization/'>localization</a>, <a href='http://cmiles.info/tag/t4/'>t4</a>, <a href='http://cmiles.info/tag/wpf/'>WPF</a>, <a href='http://cmiles.info/tag/xaml/'>XAML</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=136&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2010/01/29/generating-wpf-with-t4-templates-for-localization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>

		<media:content url="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_English.JPG" medium="image" />

		<media:content url="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_French.JPG" medium="image" />

		<media:content url="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_Spanish.JPG" medium="image" />

		<media:content url="http://s3.amazonaws.com:80/camiles_WebImages/2009_ADTCAM/T4_Localization_Sample_Japanese.JPG" medium="image" />
	</item>
		<item>
		<title>Mercurial and White Presentations</title>
		<link>http://cmiles.info/2009/12/17/mercurial-and-white-presentations/</link>
		<comments>http://cmiles.info/2009/12/17/mercurial-and-white-presentations/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 21:16:00 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[TucsonDotNetUserGroup]]></category>
		<category><![CDATA[White]]></category>

		<guid isPermaLink="false">http://cmiles.wordpress.com/2009/12/17/mercurial-and-white-presentations/</guid>
		<description><![CDATA[I recently had the opportunity to do two presentations at a Tucson .NET User Group meeting &#8211; Aaron Wagner and I gave a ~40 minute presentation on Mercurial and I did a short presentation on White! It was a privilege to have the opportunity to share information about these tools and great to get some [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=135&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently had the opportunity to do two presentations at a <a href="http://www.tucsondotnet.org/TucsonDotNet/default.aspx">Tucson .NET User Group</a> meeting &#8211; <a href="http://www.twocentsworth.com/">Aaron Wagner</a> and I gave a ~40 minute presentation on <a href="http://mercurial.selenic.com/wiki/">Mercurial</a> and I did a short presentation on <a href="http://white.codeplex.com/">White</a>!</p>
<p>It was a privilege to have the opportunity to share information about these tools and great to get some extra motivation to keep learning. The Mercurial presentation was 2/3 slides and 1/3 live demo (<a href="http://mercurial.selenic.com/wiki/">Mercurial</a>/<a href="http://bitbucket.org/tortoisehg/stable/wiki/download">TortoiseHg</a> and <a href="http://fogcreek.com/kiln/">Kiln</a>) targeted at providing a basic introduction to Mercurial. I have put the slides <a href="http://s3.amazonaws.com/camiles_WebImages/2009_ADTCAM/CM_and_AW_20_Minute_Mercurial_Presentation.zip">here for download</a> (<a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share Alike 3.0 Unported</a>), if you are doing a similar short presentation they may be useful – if you are just looking for tutorials/information about Mercurial I suggest you skip these slides and look at <a href="http://mercurial.selenic.com/wiki/Tutorial">this tutorial</a> and <a href="http://hgbook.red-bean.com/read/">this book</a> – both great starting points. (Powerpoint and Impress files are included in the download – the Impress file is not ideal but should be clean enough to easily use or copy).</p>
<p>Enjoy!</p>
<p>CM</p>
<br />Posted in .net Tagged: Mercurial, TucsonDotNetUserGroup, White <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=135&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2009/12/17/mercurial-and-white-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>
	</item>
		<item>
		<title>Some Experiences in the Display of Mathematical Equations in WPF</title>
		<link>http://cmiles.info/2009/10/03/some-experiences-in-the-display-of-mathematical-equations-in-wpf/</link>
		<comments>http://cmiles.info/2009/10/03/some-experiences-in-the-display-of-mathematical-equations-in-wpf/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 21:07:00 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[equations]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://cmiles.wordpress.com/2009/10/03/some-experiences-in-the-display-of-mathematical-equations-in-wpf/</guid>
		<description><![CDATA[I recently needed to display ‘notes’ in a WPF application – the interesting detail was that the notes contained both text and mathematical equations. I did not find a tremendous amount of information about presenting mathematical equations in WPF &#8211; so I thought I would share my experiences. The notes for the application were delivered [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=130&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently needed to display ‘notes’ in a WPF application – the interesting detail was that the notes contained both text and mathematical equations. I did not find a tremendous amount of information about presenting mathematical equations in WPF &#8211; so I thought I would share my experiences.</p>
<p>The notes for the application were delivered by the client as a Microsoft Word document.</p>
<p>Because I do not have any experience with Adobe Illustrator or any of the Expression products none of the solutions I investigated involves those products.</p>
<p>&#160;</p>
<p><a href="http://www.math.union.edu/~dpvc/jsMath/">jsMath</a> &#8211; My first idea was to display the notes in a browser control with the hope of reusing them on the web. I quickly found <a href="http://www.math.union.edu/~dpvc/jsMath/">jsMath</a> which generates equations from TeX input (if formulas in TeX are not a familiar idea see <a href="http://en.wikipedia.org/wiki/Math_markup">Help:Displaying a Formula</a>). Setup was quick and my test page looked nice in Firefox. However, the rendering in the WPF Browser control was unacceptable. It is completely possible that I did not have something configured correctly and/or that there were settings I needed to change, but I decided to move on…</p>
<p>&#160;</p>
<p><a href="http://www.w3.org/Math/">MathML</a> &#8211; As an alternative to having jsMath handle the equations I briefly looked into using MathML. Unfortunately <a href="http://www.mozilla.org/projects/mathml/start.xhtml">this page</a> failed to open correctly on my machine in IE8, Chrome, Safari and Opera. That was enough to steer me away from MathML. The page opened without problems in Firefox 3.5…</p>
<p>&#160;</p>
<p><a href="http://wpfchromium.codeplex.com/">WPF Chromium WebBrowser control</a> &#8211; I was not quite ready to give up on the idea of presenting the notes in a browser control with jsMath and thought the rendering in this control might be better. I did not get very far with this and did not try the control in my project &#8211; not because of problems with the control, but because the <a href="http://princeofcode.com/awesomium.php">Awesomium</a> project that this control uses is <a href="http://princeofcode.com/blog/?p=267">going closed source</a>. I was unsure about the future of the WPF Chromium WebBrowser control without updated versions of Awesomium so I moved on to my next idea.</p>
<p>&#160;</p>
<p><a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.documentviewer.aspx">DocumentViewer</a> -&#160; I already had nicely formatted text and equations in the original Word document and thought that I might be able to leverage that. The WPF DocumentViewer control can display <a href="http://en.wikipedia.org/wiki/Open_XML_Paper_Specification">XPS</a> documents &#8211; and Word documents can be saved as XPS. I saved the first note from the Word document as a .XPS file and &#8211; after figuring out that System.Windows.Xps.Packaging is in ReachFramework.dll &#8211; quickly put together a test. The file displayed quickly and easily (including equations) and for some applications this could be a great option!&#160; However, I felt the DocumentViewer was too page and print focused for this application. I do not think &#8211; at least in it’s default configuration – that the DocumentViewer is a very good solution for displaying shorter items for easy on-screen reading (esp. in a smaller screen area). I am sure I could have tweaked options to improve the DocumentViewer for use in this application, but this seemed like the wrong approach.</p>
<p>&#160;</p>
<p>Word/XPS converted to <a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument.aspx">FlowDocument</a> – I thought these articles were interesting, but was skeptical about the time/results, and did not try this approach &#8211; <a href="http://khason.net/blog/converting-fixeddocument-xpsdocument-too-to-flowdocument/">Converting FixedDocument (XPSDocument too) to FlowDocument</a> and <a href="http://khason.net/blog/wordml-to-flowdocument-&ndash;-how-to-convert-docx-files-to-wpf-flowdocument/">WordML to FlowDocument – how to convert docx files to WPF FlowDocument</a>. I would be really curious to hear from anyone how the conversion of Word equations works with the ideas/code presented in these articles.</p>
<p>&#160;</p>
<p><a href="http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument.aspx">Flow Document</a>&#160; + Images &#8211; Images seem like an obvious/traditional choice for presenting the equations and the FlowDocument seemed like an interesting choice for presenting text and images for on-screen reading. One easy way to produce the images is <a href="http://rogercortesi.com/eqn/">Roger&#8217;s Online Equation Editor</a> which transforms LaTeX equations into images. It is easy to work with images in WPF &#8211; but the problem I had was getting the images to look as sharp as the text in the FlowDocument when they were resized. If this was a document for printing, or had specific static layout requirements, I think that the images would have worked great. But as the images were resized (either because of dynamic layout changes or changes to the applications design) I was not able to keep them as sharp as the surrounding text. If I had more graphics expertise I may have been able to find a better image type/resolution/rescaling combination.</p>
<p>&#160;</p>
<p>FlowDocument + Shapes &#8211; <a href="http://twocentsworth.com/">a good friend</a> suggested that I look for ways to represent the equations as <a href="http://www.w3.org/Graphics/SVG/">SVG</a>. What I eventually found was <a href="http://www.inkscape.org/">Inkscape</a> + <a href="http://www.elisanet.fi/ptvirtan/software/textext/">textext</a>. textext works as an add-in to Inkscape that allows you to render LaTeX. The install and troubleshooting steps near the bottom of the textext page are critical in finding the dependencies (<a href="http://www.miktex.org/">MikTex</a>, <a href="http://www.pstoedit.net/pstoedit">Pstoedit</a>, <a href="http://pages.cs.wisc.edu/~ghost/gsview/">Ghostscript</a>) and dealing with errors (I had to add a directory to my path to get textext working). Once it is up and running textext worked great – it is very easy to create an equation and save it as an SVG file. The next problem is moving the equation from SVG into XAML.</p>
<p>&#160;</p>
<p>SVG to XAML <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.canvas.aspx">Canvas</a> &#8211; All of the methods below can be used to convert an SVG file&#160; into shapes in a XAML Canvas object. In the case of the equations I was producing all of the solutions below generally produced usable output. The Canvas output could be inserted directly into your application &#8211; or it could be placed in a resource file by stripping out the Name elements and adding a Key. In addition to using the Canvas directly it could also be used as a <a href="http://msdn.microsoft.com/en-us/library/system.windows.media.visualbrush.aspx">VisualBrush</a>.</p>
<p><a href="http://members.chello.nl/~a.degreef/XAML.html">Xsl</a> &#8211; I was able to use the xsl on <a href="http://members.chello.nl/~a.degreef/XAML.html">this page</a> to get canvas based output (and do a some xsl debugging in Visual Studio &#8211; a great feature and the first time I have used it).</p>
<p><a href="http://www.inkscape.org/">Inkscape</a> &#8211; Inkscape has save as XAML built-in. In the past, for simple images, this worked great for me. For the equations that I was producing in this project the canvas that Inkscape produced apparently lacked a RenderTransform that was crucial to correct display. The problem was fairly easy to fix, but mainly because I had the output from XamlTune as a comparison.</p>
<p><a href="http://xamltune.codeplex.com/">XamlTune</a> &#8211; The command line executable in this project worked great &#8211; and could potentially be integrated into a build script which is a nice bonus. I had trouble with the gui portion of this project crashing.</p>
<p>The Canvas with shapes output is ok &#8211; but I want to reuse the same equation multiple times, use the same equations both as larger stand-alone figures and inline with the text and rescale the larger images as the application’s size changes. I assume that I could get the canvas based resources working for all of those requirements (although I not sure exactly how and imagine a bit of awkward code…). However, I know that having the equations as <a href="http://msdn.microsoft.com/en-us/library/system.windows.media.drawingimage.aspx">DrawingImages</a> in a resource file would allow me to use the equations inside an Image tag, solving the problems above.</p>
<p>&#160;</p>
<p>FlowDocument + <a href="http://msdn.microsoft.com/en-us/library/system.windows.media.drawingimage.aspx">DrawingImage</a> &#8211; The only programs I found that produced DrawingImage output from SVG input were <a href="http://www.wpf-graphics.com/ViewerSvg.aspx">ViewerSvg Professional</a> or <a href="http://www.wpf-graphics.com/ReaderSvg.aspx">Ab2d.ReaderSvg Professional</a> (the ‘Basic’ versions are not listed as having ‘Export as Geometry’ support) from <a href="http://www.wpf-graphics.com/Home.aspx">WPF Graphics</a> (demo downloads available – note these will also convert from SVG to a Canvas). This software did nice conversions from SVG to DrawingImage with a good array of options. The <a href="http://www.wpf-graphics.com/ReaderSvg.aspx">Ab2d.ReaderSvg</a> class library also includes a sample application that allows you to combine multiple SVGs into DrawingImages inside a ResourceDictionary, which is almost exactly what I wanted to do! For some situations these applications will not be appropriate since they are commercially licensed software with a cost of $169/$399.</p>
<p>&#160;</p>
<p>Conclusion: The options above present several viable solutions for presenting mathematical equations in a WPF application. Every project will have different requirements that will dictate the best solution. With that said &#8211; in my opinion -&#160; the combination of Inkscape and textext to create equations in SVG and <a href="http://www.wpf-graphics.com/ReaderSvg.aspx">Ab2d.ReaderSvg Professional</a> to convert the SVG into DrawingImage resources is the best combination currently available for presenting mathematical&#160; equations for on-screen reading in a WPF application.</p>
<p>&#160;</p>
<p>Enjoy!</p>
<p>CM</p>
<br />Posted in .net Tagged: equations, LaTeX, SVG, WPF, XAML <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=130&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2009/10/03/some-experiences-in-the-display-of-mathematical-equations-in-wpf/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>
	</item>
		<item>
		<title>A beginner’s view &#8211; Textual DSL with OSLO</title>
		<link>http://cmiles.info/2009/08/22/a-beginners-view-textual-dsl-with-oslo/</link>
		<comments>http://cmiles.info/2009/08/22/a-beginners-view-textual-dsl-with-oslo/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 22:43:43 +0000</pubDate>
		<dc:creator>cmiles</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[Oslo]]></category>

		<guid isPermaLink="false">http://cmiles.wordpress.com/2009/08/22/a-beginners-view-textual-dsl-with-oslo/</guid>
		<description><![CDATA[For just over a month I have been working on a project at work that lets users select inventory items from a database using a textual DSL. This is the first DSL I have ever produced! I thought that it was interesting that with no significant experience in building DSLs I was able to produce [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=129&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For just over a month I have been working on a project at work that lets users select inventory items from a database using a textual DSL. This is the first DSL I have ever produced! I thought that it was interesting that with no significant experience in building DSLs I was able to produce a useful application in a relatively short period of time. Below are the best resources I found and a few remarks:</p>
<p>&#160;</p>
<p>Overview/Perspective: The <a href="http://herdingcode.com/">Herding Code</a> interview with <a href="http://www.voelter.de/">Markus Völter</a> (who you might know from <a href="http://www.se-radio.net/">Software Engineering Radio</a>) is interesting – while not strictly focused on textual DSLs he gives a great overview/critique of Microsoft’s OSLO effort and interesting information on the Eclipse tools in this space (some recent news related to topics in the interview from <a href="http://www.douglaspurdy.com/2009/08/17/on-oslo/">Douglas Purdy</a> and a <a href="http://voelterblog.blogspot.com/2009_08_01_archive.html">short post by Markus</a>). If you want to see some of the Eclipse tools he mentions the second link will take you to a nice presentation.</p>
<ul>
<li><a href="http://herdingcode.com/?p=206">Herding Code 56: Markus Völter on Model-Driven Development, DSLs and Product Line Engineering</a></li>
<li><a href="http://msdn.microsoft.com/en-us/oslo/dd727732.aspx">Markus Völter: Textual DSLs and Code Generation with Eclipse Tools</a></li>
</ul>
<p>Useful MGrammar/OSLO focused podcast: This podcast features <a href="http://wildermuth.com/">Shawn Wildermuth</a> and has some great discussion around DSLs with a focus on OSLO:</p>
<ul>
<li><a href="http://deepfriedbytes.com/podcast/episode-33-getting-the-scoop-about-olso-and-m-with-shawn-wildermuth/">Deep Fried Bytes Episode 33: Getting the Scoop About Oslo and M with Shawn Wildermuth</a></li>
</ul>
<p>Bits and samples: The Oslo Developer Center &#8211; official downloads and samples (I thought the MGrammar samples were good study material):</p>
<ul>
<li><a title="http://msdn.microsoft.com/en-us/oslo/default.aspx" href="http://msdn.microsoft.com/en-us/oslo/default.aspx">&quot;Oslo&quot; Dev Center</a></li>
</ul>
<p>Focused start: This three part series by Shawn Wildermuth was incredibly valuable because the focus of the articles matched what I was trying to accomplish quite well:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/dd441702.aspx">Textual Domain Specific Languages for Developers &#8211; Part 1</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd548006.aspx">Textual Domain Specific Languages for Developers &#8211; Part 2</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd789404.aspx">Textual Domain Specific Languages for Developers &#8211; Part 3</a></li>
</ul>
<p>Digging deeper: There is a good chance that you will need to dig into some of the details of MGraph and MGrammar – I found the following references useful:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/dd878360.aspx">MGraph Object Model</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd285282.aspx">The &quot;Oslo&quot; Modeling Language Specification</a></li>
</ul>
<p>Skeptical? The application I developed is currently being tested by a handful of users, so far these are the points I would make in support of the DSL:</p>
<ul>
<li>Less dev time than you might guess: this is a small business app with a tight focus, it was coded by one dev working part-time on the app in about 4 weeks. There are always more features to implement, but the app is useful now with a fairly low investment.</li>
<li>Powerful/Flexible Searching: For advanced users the DSL exposes many more search fields/categories/options than I know how to expose via a reasonable list/wizard/combo box/text box style query build screen, and it is not nearly as tedious! The textual interface allows advanced users to be more efficient and creative and gives them access to more options than they had in the past.</li>
<li>Conventional UI feeds the DSL: I found the ‘conventional’ query build screen to be fast and pleasant to develop because it simply constructs the text to be parsed! This means that anything I build for the conventional interface needs to be supported by the DSL – this forces all features to remain ‘exposed’ in the textual interface for more advanced users.</li>
</ul>
<p>Pain points:</p>
<ul>
<li>I was surprised by the amount of work that I had to to to turn the AST produced by parsing the user’s input into usable objects/actions. There are some samples/posts/ideas out that can help build objects automatically – but this seems like an obvious area for Microsoft to enhance since we are talking about an all MS tool chain. I imagine that most scenarios are going to involve walking the tree to build/modify objects? Is there an approach or scenario that really does not do that?</li>
<li>The lack of a text editor component to put in your application in conjunction with your DSL is disappointing. There is an obvious need to deliver an editor for your DSL embedded in your app with syntax highlighting and keyword completion, if that is currently available I am not aware of it… While inputting text into a vanilla textbox may be a good test of the simplicity and logic of your DSL I doubt it is really the user experience you want. If a commercial product is an option then <a href="http://www.actiprosoftware.com/Products/DotNet/WPF/SyntaxEditor/Default.aspx">Actipro’s WPF SyntaxEditor</a> might be interesting – they have MGrammar support which sounds encouraging, but I have not made time to test it out.</li>
</ul>
<p>While the jury is still out if the application mentioned in this post will be successful I think that it was the right choice to build and try a DSL – hopefully if you are interested in trying out a textual DSL in .NET the links and information above will be interesting!</p>
<p>CM</p>
<br />Posted in .net Tagged: dsl, Oslo <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cmiles.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cmiles.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cmiles.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cmiles.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cmiles.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cmiles.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cmiles.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cmiles.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cmiles.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cmiles.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cmiles.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cmiles.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cmiles.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cmiles.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cmiles.info&amp;blog=331266&amp;post=129&amp;subd=cmiles&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cmiles.info/2009/08/22/a-beginners-view-textual-dsl-with-oslo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d94d5fb54d2d8a5b8b6afa0328d9542b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">cmiles</media:title>
		</media:content>
	</item>
	</channel>
</rss>
