<?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>blog.davebouwman.com</title>
	<atom:link href="http://blog.davebouwman.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.davebouwman.com</link>
	<description>ArcGIS, .NET and Mobile Web Apps</description>
	<lastBuildDate>Wed, 18 Jan 2012 15:29:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.davebouwman.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>blog.davebouwman.com</title>
		<link>http://blog.davebouwman.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.davebouwman.com/osd.xml" title="blog.davebouwman.com" />
	<atom:link rel='hub' href='http://blog.davebouwman.com/?pushpress=hub'/>
		<item>
		<title>Changing Gears for 2012: Getting Real with Rails</title>
		<link>http://blog.davebouwman.com/2012/01/03/changing-gears-for-2012-getting-real-with-rails/</link>
		<comments>http://blog.davebouwman.com/2012/01/03/changing-gears-for-2012-getting-real-with-rails/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 05:23:25 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby-on-Rails]]></category>

		<guid isPermaLink="false">https://dbouwman.wordpress.com/?p=1678</guid>
		<description><![CDATA[For the last few years, I&#8217;ve occasionally &#8220;dabbled&#8221; with Ruby on Rails, even spoken about it at conferences, but never really stuck with it to any real extent. I&#8217;d always be catching glimpses of the supposed unicorns and rainbows, but would &#8230; <a href="http://blog.davebouwman.com/2012/01/03/changing-gears-for-2012-getting-real-with-rails/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1678&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">For the last few years, I&#8217;ve occasionally &#8220;dabbled&#8221; with Ruby on Rails, <a href="http://proceedings.esri.com/library/userconf/devsummit10/tech/userpres_17.html">even spoken about it at conferences</a>, but never really stuck with it to any real extent. I&#8217;d always be catching glimpses of the supposed <a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://farm5.static.flickr.com/4138/4924736342_a16a73cb3b.jpg">unicorns and rainbows</a>, but would then get tripped up on some trivial syntax thing, and spend and hour Googling, and then bail and revert to .NET because it was just easier.</p>
<p><span style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;font-size:16px;line-height:24px;">Given that I&#8217;d likely have an aneurysm if I paid any attention to the electoral insanity of the next 11 months, I&#8217;m opting to spend my evenings and weekends getting real with Rails. And I&#8217;ll be  blogging about my adventures along the way.</span></p>
<h2 style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;"><strong>What about .NET and Esri? Are you going all FOSS?</strong></h2>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">In a word no. DTS is and will remain a .NET shop, and we&#8217;ll still be cooking ASP.NET MVC apps backed with  Esri technology, and I&#8217;ll still be blogging and speaking about that stack (some cool stuff is coming at 10.1 but can&#8217;t talk about it yet!). My interest in Rails is mainly to get another perspective on web development, and to see how well it works. I&#8217;ve got a few non-spatial ideas kicking around, and I want to use them as a platform for learning Rails. There may come a time when we start doing project work on Rails, but that will be a ways out.</p>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">That said, if I could avoid the hell that is the Microsoft Volume Licensing site, I&#8217;d be more than a little happy <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h2 style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;"><strong>&#8220;Getting Started With Rails&#8221; Resources</strong></h2>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">There are a ton of resources out there to get you going &#8211; here are some that I found useful:</p>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">Glenn Goodrich (<a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://twitter.com/#!/ruprictgeek">@ruprictgeek</a>) has an on-going series at <a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://rubysource.com/">RubySource.com</a> &#8211; I literally got my Mac setup with Rails using <a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://rubysource.com/rails-development-101-rvm/">this post on RVM</a>. His series continues and is integrating <a href="http://documentcloud.github.com/backbone/">Backbone.js</a> and some geospatial flair using <a href="http://leaflet.cloudmade.com/">leaflet</a>, but I had to take a side journey into Ruby 101 and Rails.</p>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">The day after I got RVM setup, <a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://twitter.com/#!/robconery">Rob Conery</a> tweeted about $100 off an annual subscription to <a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://tekpub.com/">Tekpub.com</a>. I love love love the <a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://thisdeveloperslife.com/">This Developers Life podcast</a> which Rob edits, and I knew that Tekpub had a <a style="color:#743399;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;" href="http://tekpub.com/productions/rails3">Rails 3 series</a> ($28 if you just want that series), so it was an easy sale. Over the break I managed to watch 9 of the 11 videos in that series, and I have to say they are really good in terms of giving you a mix of theory and practice. Rob shows how to use scaffolders, and then how to do it &#8220;better&#8221;. There is quite a bit on testing in here, using the built in test tools as well as rspec. Other goodies covered include generators, haml, factory_girl, cheat, devise and autotest. Rob also mixes it up doing some episodes using VIM, others in Textmate, and others in RubyMine. Some on Linux and some on Mac. Quality work sir!</p>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">I really enjoyed a NetTuts video called <a href="http://net.tutsplus.com/tutorials/ruby/the-intro-to-rails-screencast-i-wish-i-had/">&#8220;The Intro to Rails Screencast I Wish I Had&#8221;</a> and is presented by Jeffery Way. Once you have a general understanding of Rails 3, this is a great 45 minute overview of how it all goes together, doing TDD and not using any scaffolding. It also goes into Capybara, which is wicked slick if you&#8217;ve ever tried to do any front-end testing. I&#8217;m definitely going to check out more NetTuts Rails stuff.</p>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">I also got the Kindle version of &#8220;<a href="http://www.amazon.com/The-Ruby-Programming-Language-ebook/dp/B0026OR3JO/ref=sr_1_3?s=digital-text&amp;ie=UTF8&amp;qid=1325654153&amp;sr=1-3">The Ruby Programming Language</a>&#8221; book for the whopping sum of $5.98. I&#8217;ve been reading this in chunks mainly as a means to get my mind into reading ruby code, and thus &#8220;knowing&#8221; how to express my intent in the language.</p>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">While I strive to be &#8220;all digital&#8221;, having cheat-sheets lying around is always helpful, so I&#8217;m compiling a list of useful ones that I&#8217;ll post sometime soon.</p>
<p style="color:#444444;font-family:Georgia, 'Bitstream Charter', serif;line-height:1.5;font-size:16px;margin-bottom:24px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;orphans:2;text-align:0;text-indent:0;text-transform:none;white-space:normal;widows:2;word-spacing:0;">So that&#8217;s it for now. I&#8217;ve got a lot of ideas on things I want to built, and at this point I merely have an idea of how much I don&#8217;t know (linux, nginx, postgres), but I think it&#8217;s gonna be a fun journey!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1678/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1678/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1678/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1678&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2012/01/03/changing-gears-for-2012-getting-real-with-rails/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>
	</item>
		<item>
		<title>Handling Circular References ASP.NET MVC Json Serialization</title>
		<link>http://blog.davebouwman.com/2011/12/08/handling-circular-references-asp-net-mvc-json-serialization/</link>
		<comments>http://blog.davebouwman.com/2011/12/08/handling-circular-references-asp-net-mvc-json-serialization/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 15:26:29 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://dbouwman.wordpress.com/?p=1673</guid>
		<description><![CDATA[I love the Entity Framework CodeFirst stuff, combined with scaffolding, it makes development go so fast. Fast that is until you drop an API into the mix and want that to serve Json. Here’s my EF Model. Lots of lovely &#8230; <a href="http://blog.davebouwman.com/2011/12/08/handling-circular-references-asp-net-mvc-json-serialization/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1673&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I love the Entity Framework CodeFirst stuff, combined with scaffolding, it makes development go so fast. Fast that is until you drop an API into the mix and want that to serve Json.</p>
<p>Here’s my EF Model. Lots of lovely navigation properties allowing me to get from any entity to any other one. Handy-dandy in .NET land…</p>
<p><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="models" border="0" alt="models" src="http://dbouwman.files.wordpress.com/2011/12/models.png?w=550&#038;h=383" width="550" height="383"></p>
<p>But no-bueno when serializing using the out of the box Json serializer…</p>
<pre class="code">[<span style="color:#2b91af;">HttpGet</span>]
<span style="color:blue;">public </span><span style="color:#2b91af;">JsonResult </span>Get(<span style="color:blue;">int </span>id)
{
    <span style="color:blue;">return </span>Json(itemcategoryRepository.Find(id),
        <span style="color:#2b91af;">JsonRequestBehavior</span>.AllowGet);
}
</pre>
<p>Now, this sucks because how awesomely elegant is that code? What you get is an error like this:</p>
<h4><i>A circular reference was detected while serializing an object of type &#8216;System.Data.Entity.DynamicProxies.ItemCategory_A79…&#8217;.</i></h4>
<h2>Json Serialization Options</h2>
<p>There are a few ways to go here – you could use ViewModels everywhere and sloppy-copy properties across as needed. Even with Automapper to take the drugery out of this, it rubs me the wrong way – what’s the point of using EF if I still have to have a separate set of Poco ViewModels?</p>
<p>Another option is to add a .ToJson method to the EF classes, and emit strings. Lots of control, but… meh.</p>
<p>Using Json.net comes up a lot, but it’s also labor intensive.</p>
<p>What I ended up doing is using Linq to project the EF object graph into an anonymous object graph. Here’s an example that serializes two levels of objects (a list of ItemCategories, each of which can contain a list of Items – see the object model above)</p>
<pre class="code">[<span style="color:#2b91af;">HttpGet</span>]
<span style="color:blue;">public </span><span style="color:#2b91af;">JsonResult </span>List()
{
    <span style="color:blue;">var </span>data = itemcategoryRepository
        .AllIncluding(itemcategory =&gt; itemcategory.Items);
    <span style="color:green;">//Project into anonymous objects because Serializers
    //can't handle circular refs in the EF magic
    </span><span style="color:blue;">var </span>collection = data.Select(x =&gt; <span style="color:blue;">new
    </span>{
        id = x.Id,
        name = x.Name,
        items = x.Items.Select(item =&gt; <span style="color:blue;">new
        </span>{
            id=item.Id,
            name = item.Name
        })
    });
    <span style="color:blue;">return </span>Json(collection,
        <span style="color:#2b91af;">JsonRequestBehavior</span>.AllowGet);
}
</pre>
<p>I like this solution because I have control of the Json in the controller, rather than forcing an object to always serialize the same way in all cases (sometimes I want the Item to serialize it’s Entries, but only when I’m getting a single Item).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1673/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1673/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1673/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1673&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/12/08/handling-circular-references-asp-net-mvc-json-serialization/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/12/models.png" medium="image">
			<media:title type="html">models</media:title>
		</media:content>
	</item>
		<item>
		<title>ASP.NET MVC3 and 404&#8217;s for Area Controllers</title>
		<link>http://blog.davebouwman.com/2011/12/08/asp-net-mvc3-and-404s-for-area-controllers/</link>
		<comments>http://blog.davebouwman.com/2011/12/08/asp-net-mvc3-and-404s-for-area-controllers/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 15:07:01 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[asp.net mvc]]></category>

		<guid isPermaLink="false">https://dbouwman.wordpress.com/?p=1670</guid>
		<description><![CDATA[So I’m a big fan of ASP.NET MVC, and the general idea of convention over configuration, but I spent a few hours late last night fighting with something, and the Google was no help, so hopefully this helps someone else… &#8230; <a href="http://blog.davebouwman.com/2011/12/08/asp-net-mvc3-and-404s-for-area-controllers/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1670&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So I’m a big fan of ASP.NET MVC, and the general idea of convention over configuration, but I spent a few hours late last night fighting with something, and the Google was no help, so hopefully this helps someone else…</p>
<p>The situation:</p>
<p>I have ASP.NET MVC3 project, and I created an Area for my json API.&nbsp; In my area I create a simple controller called CategoriesController, and I registered some routes in my AreaRegistration…</p>
<pre class="code"><span style="color:green;">//handles get for a list of all categories
</span>context.MapRoute(
    <span style="color:#a31515;">"ListCategories"</span>,
    <span style="color:#a31515;">"API/Categories"</span>,
    <span style="color:blue;">new </span>{ controller = <span style="color:#a31515;">"Categories"</span>, action = <span style="color:#a31515;">"List" </span>}
);
</pre>
<p>I used the very awesome MvcRouteUnitTester (on Nuget) to write unit tests to make sure this route was working. All systems go!</p>
<p>Before I started writing tests against the actual controller, I used a browser to hit <a href="http://localhost/myapp/API/Categories">http://localhost/myapp/API/Categories</a> – which should match this route, and spit back some “hello world” json. I get a 404. </p>
<p>Even with the unit tests, I decided to pull in the <a href="http://nuget.org/packages/routedebugger">RouteDebugger</a> NuGet package, just to make sure that the routes were working, and that showed that all was good</p>
<p><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="routes" border="0" alt="routes" src="http://dbouwman.files.wordpress.com/2011/12/routes.png?w=653&#038;h=277" width="653" height="277"></p>
<p>So, I’m stumped. No Exceptions, everything seems to line up, but still a 404. </p>
<p>After about 15 minutes of useless Googling, I remember that I’ve got logging setup in this project, and that’s in my Global.asax.cs and tied into Application_Error…</p>
<pre class="code"><span style="color:blue;">protected void </span>Application_Error()
{
    <span style="color:#2b91af;">Exception </span>lastException = Server.GetLastError();
    <span style="color:blue;">var </span>logger = <span style="color:#2b91af;">DependencyResolver</span>.Current.GetService&lt;<span style="color:#2b91af;">ILogger</span>&gt;();
    logger.Fatal(lastException);
}
</pre>
<p>SO I look in the log… and find this error</p>
<p>The controller for path &#8216;/statsme/API/Categories/List&#8217; was not found or does not implement IController.</p>
<p>(full trace because this will help Google index this when others go lookin)…</p>
<pre class="code">Message :The controller for path '/statsme/API/Categories/List' was not found or does not implement IController.
Source :System.Web.Mvc
Stack Trace :   at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
   at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
   at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController&amp; controller, IControllerFactory&amp; factory)
   at System.Web.Mvc.MvcHandler.&lt;&gt;c__DisplayClass6.&lt;BeginProcessRequest&gt;b__2()
   at System.Web.Mvc.SecurityUtil.&lt;&gt;c__DisplayClassb`1.&lt;ProcessInApplicationTrust&gt;b__a()
   at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust[TResult](Func`1 func)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)
TargetSite :System.Web.Mvc.IController GetControllerInstance(System.Web.Routing.RequestContext, System.Type)
</pre>
<p>Ok, WTF? CategoriesController inherits from a BaseController which inherits from Controller, so we’re clear on the IController bit. I know the class is there… what is going on? </p>
<p>Google… Google… more Google. Random hacking… cursing… Ah HA!</p>
<p>The issue was the namespace on my controller. Turns out that MVC has a convention that the area name is expected to be in the namespace of the controller.</p>
<p>So – I had StatsMe.API.CategoriesController, but MVC was looking for StatsMe.<strong>Areas</strong>.API.CategoriesController.</p>
<p>What finally tipped me off was some stuff in the RouteDebugger output…</p>
<p><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="namespaces" border="0" alt="namespaces" src="http://dbouwman.files.wordpress.com/2011/12/namespaces.png?w=487&#038;h=287" width="487" height="287"></p>
<p>Annoying because the error message really could have helped out by saying “Hey – I’m looking for StatsMe.Areas.API.CategoriesController and I can’t find it”, rather than the very generic message it spit out.</p>
<h2>Configuration Overriding Convention</h2>
<p>As we all know, in MVC where there is a convention, there is a way to override this, and that’s in the route definition… like so…</p>
<pre class="code">context.MapRoute(
    <span style="color:#a31515;">"ListCategories"</span>,
    <span style="color:#a31515;">"API/Categories"</span>,
    <span style="color:blue;">new </span>{ controller = <span style="color:#a31515;">"Categories"</span>, action = <span style="color:#a31515;">"List" </span>},
    <span style="color:blue;">new</span>[] { <span style="color:#a31515;">"StatsMe.API.Controllers" </span>}
);
</pre>
<p>Viola! Hope this helps someone else avoid a few hours of frustration.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1670/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1670&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/12/08/asp-net-mvc3-and-404s-for-area-controllers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/12/routes.png" medium="image">
			<media:title type="html">routes</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/12/namespaces.png" medium="image">
			<media:title type="html">namespaces</media:title>
		</media:content>
	</item>
		<item>
		<title>Adventures in the Real World: How I Spent my Fall</title>
		<link>http://blog.davebouwman.com/2011/11/29/adventures-in-the-real-world-how-i-spent-my-fall/</link>
		<comments>http://blog.davebouwman.com/2011/11/29/adventures-in-the-real-world-how-i-spent-my-fall/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 19:46:48 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">https://dbouwman.wordpress.com/?p=1665</guid>
		<description><![CDATA[Before I jump back into technical blog posts, I thought I&#8217;d share a little about my adventures of the last few months as it&#8217;s been hectic but quite a lot of fun. As noted in the previous post, things got &#8230; <a href="http://blog.davebouwman.com/2011/11/29/adventures-in-the-real-world-how-i-spent-my-fall/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1665&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Before I jump back into technical blog posts, I thought I&#8217;d share a little about my adventures of the last few months as it&#8217;s been hectic but quite a lot of fun.
<p>As noted in the previous post, things got started back in September with the FOSS4G conference. That post sums things up pretty well, so I’ll just move the story forward from there… up up and away!
<p><a href="http://dbouwman.files.wordpress.com/2011/11/clouds.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="clouds" border="0" alt="clouds" src="http://dbouwman.files.wordpress.com/2011/11/clouds_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a><br />
<h2>Orlando</h2>
<p>The following week I was in Orlando doing some work with a client. While DTS is headquartered in Orlando, our offices are in Avalon Park, which is well outside the city itself. But, this client is downtown, and this gave me a chance to check out another area of the city. I do enough business travel that staying in yet another cookie cutter hotel has long lost it’s appeal, so when I can, I step out and stay at non-chain places – like the <a href="http://eoinn.com/">OE Inn</a>. Great little place, right on Lake Eola Park (photo below), half a block to the client’s office, a Panera Bread on the main floor, and a great sushi place around the block. Since this was right after FOSS4G, and I had my evenings free, node hacking was in order (more on this in the next post!).
<p><a href="http://dbouwman.files.wordpress.com/2011/11/orlando-1.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Orlando-1" border="0" alt="Orlando-1" src="http://dbouwman.files.wordpress.com/2011/11/orlando-1_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a>&nbsp;<br />
<h2>Next Stop… Kentucky</h2>
<p>From time to time we have internal meetings – usually in Orlando, and usually out at Avalon Park. This was getting kinda boring, so Dave Buckley (our VP of GIS and <a href="http://www.dtswildfire.com">Wildfire</a> dude) suggested we do something different… like tie the meetings in with some caving in Kentucky. And so it was that 8 of the DTS core team met up at Mammoth Cave National Park for a mix of meetings, burbon and caving.</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/caves-1.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="caves-1" border="0" alt="caves-1" src="http://dbouwman.files.wordpress.com/2011/11/caves-1_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>This was the easy walking-on-the-path Crystal Cave. While the iPhone 4 can take good photos, low-light conditions are not it’s forte.</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/slithering.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="slithering" border="0" alt="slithering" src="http://dbouwman.files.wordpress.com/2011/11/slithering_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>This is from the “Wild Cave Tour” which had a few “tight spots” and a fair amount of crawling around. A great way to spend 4 hours, and get photos of the DTS core team looking like convicts…</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/cave-team.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="cave-team" border="0" alt="cave-team" src="http://dbouwman.files.wordpress.com/2011/11/cave-team_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<h2>Colorado River Trip</h2>
<p>From Kentucky it was back home to Fort Collins, and then off to Fruita to float the Ruby Horse Thief section of the Colorado river. For the last 3 years we’ve been doing this family river trip with a group of friends. This year the dates got moved around a bunch due to my travel schedule so it was a smaller group, but still a ton of fun for all involved. </p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/colorado-river.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="colorado-river" border="0" alt="colorado-river" src="http://dbouwman.files.wordpress.com/2011/11/colorado-river_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>I’m not much of a “water” person, and this is perfect – no real whitewater, but still a lot of fun camping and being out in the desert. </p>
<h2>Off to Europe</h2>
<p>I was at home for a few weeks and then headed out to Europe for a 10 day whirlwind tour of sorts. The basic plan was to go do a few presentations at the Esri European User Conference, which was held in Madrid. Our Spanish partner in the Wildfire business, Joaquin Ramirez / Technosylva, has come over to the US for the last two Esri User Conferences in San Diego, so it only seemed fair that we come over there since it was in Spain. And since we were going over to Europe, why not tack on some meetings in Zurich and Geneva?</p>
<h2>Zurich</h2>
<p>We got micro rooms at non-micro rates right near the lake and downtown. I managed to get out and walk about (with a side-trip to the Apple store to get a USB-Cat5 dongle/adapter). Stunning place.</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/zurich-1.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="zurich-1" border="0" alt="zurich-1" src="http://dbouwman.files.wordpress.com/2011/11/zurich-1_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<h2>Off to Madrid</h2>
<p>When dealing with airlines, nothing is straight forward, so while it would make sense to fly from Geneva (we drove down from Zurich) directly to Madrid, that particular flight was gonna cost most than the rest of the trip combined. So, we hop from Geneva, back to Frankfurt and then down to Madrid… much farther, but through the miracle of airline math, less than 10% of the price of the direct flight. Go figure. Of note – Spanair really crams the seats onto their planes. If you are 6’ or taller, you’re gonna have a leg-room issue. I think there were 8 additional rows of seats on this plane as compared to the Lufthansa flight… in the exact same model of aircraft. Ok, back to it.</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/jack-en-espana.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="jack-en-espana" border="0" alt="jack-en-espana" src="http://dbouwman.files.wordpress.com/2011/11/jack-en-espana_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>Ah Jack. Whenever possible, I always make his plenary sessions. Sure I’ve heard the content before, but as someone who does a lot of speaking, there is a lot I can learn from Jack’s style and how he presents his vision, and structures the talk in general. Some people call this kool-aid, I call it a great speaker. Moving on… the conference was fun, and our talks went really well – packed rooms for all of them (special thanks to Ismael Chivite who I believe corralled a mess of people into my talk about deploying apps to the cloud!). But the real fun is after hours! We went to the Mercado San Miguel and liked it so much we want back the next night. This place is how WholeFoods would do a tapas / wine bar / open space. Awesome fun.</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/san-miguel.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="san-miguel" border="0" alt="san-miguel" src="http://dbouwman.files.wordpress.com/2011/11/san-miguel_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>And apparently you can’t eat in Spain without consuming Jamon. Nom Nom Nom!</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/jamon-1.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="jamon-1" border="0" alt="jamon-1" src="http://dbouwman.files.wordpress.com/2011/11/jamon-1_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<h2>Seville</h2>
<p>So the conference wrapped up and we jumped on a train with Joaquin, and headed to Seville for a few days of “strategic planning” for DTSWildfire. And by strategic we mean…<a href="http://dbouwman.files.wordpress.com/2011/11/seville-1.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="seville-1" border="0" alt="seville-1" src="http://dbouwman.files.wordpress.com/2011/11/seville-1_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>and…</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/bucks-birthday-lunch.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="bucks-birthday-lunch" border="0" alt="bucks-birthday-lunch" src="http://dbouwman.files.wordpress.com/2011/11/bucks-birthday-lunch_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>and…</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/toro.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="toro" border="0" alt="toro" src="http://dbouwman.files.wordpress.com/2011/11/toro_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>Somewhere along the line we did talk about wildfire products and markets and marketing and general strategy, but in a very civilized manner. </p>
<h2>Back Home</h2>
<p>I have a 5 year old, which means that Halloween is big deal. Thanks to the magic of jet travel I was able to get from Madrid to Fort Collins (via Frankfurt… of course) in a single (very long) day, arriving just in time to go trick or treating. In keeping with the general frenzy of the fall, the next day my wife went to New York to visit her sister and our new nephew, so I was a solo parent for about a week. This was actually really good, because it was perfectly acceptable for me to go to sleep at 7:30 when my son goes to bed. And it’s always nice to get outside and have a picnic in Lory State Park…</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/kai-1.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="kai-1" border="0" alt="kai-1" src="http://dbouwman.files.wordpress.com/2011/11/kai-1_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>That was supposed to be it for travel. Note the “supposed” part. But with our acquisition of <a href="www.vueworks.com">VueWorks</a> earlier this year, we also acquired their annual user conference. And since I’m helping define some major changes in the product, I had to pop over to Orlando for a few days of strategic meetings (see how that comes up so often?) and then do a talk on the vision for the product line. </p>
<p><a href="http://dbouwman.files.wordpress.com/2011/11/vw-speaking.jpg"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="vw-speaking" border="0" alt="vw-speaking" src="http://dbouwman.files.wordpress.com/2011/11/vw-speaking_thumb.jpg?w=616&#038;h=616" width="616" height="616"></a></p>
<p>(Note: the vision does not involve “pivoting to monetize crowd sourced photos of giant dump trucks” – I’ll leave that up to you.)</p>
<p>In contrast to my previous trip to Orland, this time I was staying at the Disney Coronado Springs – the very epitome of corporate lodging. Don’t get me wrong, it was all fine, but just a little to homogenized for my liking. </p>
<p>And that about winds up the last few months. Thanks for slogging through this – hope it was a fun diversion from the usual tech-centric posts. With all that travel out of the way, I’ll be working on some posts about real-time collaboration, discussing two research apps we built – one using node and socket.io and the other using ASP.NET MVC and SignalR. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1665/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1665/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1665/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1665&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/11/29/adventures-in-the-real-world-how-i-spent-my-fall/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/clouds_thumb.jpg" medium="image">
			<media:title type="html">clouds</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/orlando-1_thumb.jpg" medium="image">
			<media:title type="html">Orlando-1</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/caves-1_thumb.jpg" medium="image">
			<media:title type="html">caves-1</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/slithering_thumb.jpg" medium="image">
			<media:title type="html">slithering</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/cave-team_thumb.jpg" medium="image">
			<media:title type="html">cave-team</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/colorado-river_thumb.jpg" medium="image">
			<media:title type="html">colorado-river</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/zurich-1_thumb.jpg" medium="image">
			<media:title type="html">zurich-1</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/jack-en-espana_thumb.jpg" medium="image">
			<media:title type="html">jack-en-espana</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/san-miguel_thumb.jpg" medium="image">
			<media:title type="html">san-miguel</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/jamon-1_thumb.jpg" medium="image">
			<media:title type="html">jamon-1</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/seville-1_thumb.jpg" medium="image">
			<media:title type="html">seville-1</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/bucks-birthday-lunch_thumb.jpg" medium="image">
			<media:title type="html">bucks-birthday-lunch</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/toro_thumb.jpg" medium="image">
			<media:title type="html">toro</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/kai-1_thumb.jpg" medium="image">
			<media:title type="html">kai-1</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/11/vw-speaking_thumb.jpg" medium="image">
			<media:title type="html">vw-speaking</media:title>
		</media:content>
	</item>
		<item>
		<title>FOSS4G: Rockin the Mile High City</title>
		<link>http://blog.davebouwman.com/2011/09/21/foss4g-rockin-the-mile-high-city/</link>
		<comments>http://blog.davebouwman.com/2011/09/21/foss4g-rockin-the-mile-high-city/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 23:28:41 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://blog.davebouwman.com/?p=1630</guid>
		<description><![CDATA[I had a pretty good idea that I&#8217;d be blown away by the stuff going on at FOSS4G, but the conference exceeded my expectations. Sure, a lot of the sessions I went to were pretty cutting edge, but that was the point &#8230; <a href="http://blog.davebouwman.com/2011/09/21/foss4g-rockin-the-mile-high-city/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1630&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had a pretty good idea that I&#8217;d be blown away by the stuff going on at FOSS4G, but the conference exceeded my expectations. Sure, a lot of the sessions I went to were pretty cutting edge, but that was the point for me &#8211; to see just where the edge is, and who&#8217;s living on it.</p>
<p>One thing that struck me, and apparently also <a href="http://www.stulester.co.uk/2011/09/foss4g-2011-summary/">Stu Lester</a> - the maturity of the FOSS GIS software was really on display. That said, I&#8217;m not about to write off a certain large vendor by any means &#8211; but make no mistake &#8211; FOSS4G software is certainly usable beyond the &#8220;gcc&#8221; crowd. I will note that the only Windows machine I saw was someone who&#8217;d just grabbed the Win8 bits, so the crowd was certainly it&#8217;s roots.</p>
<p>Some particularly cool things that stood out for me&#8230;</p>
<p>PostGIS Cloud Services are clearly hot. <a href="http://spacialdb.com/">SpacialDB</a> and <a href="https://cartodb.com/">CartoDB</a> are leading the charge here. Both will be offered as services, and both have their own take on how this should work. Javier de le Torre (@jatorre) and Simon Tokumine (@tokumin) of Vizzuality were pretty direct in saying that CartoDB was modeled on Google Fusion Tables, and the demo shown was really slick. Here&#8217;s a <a href="http://vimeo.com/29390641">video</a> of CartoDB accessed from an iPad.</p>
<p>On the SpacialDB side of things, Kashif Rasul (@krasul) and Shoaib Burq (@sabman) did a tutorial/talk on <a href="http://2011.foss4g.org/sessions/tutorial-async-and-realtime-geo-applications-nodejs">Async apps with NodeJs</a> and focused more on how to use NodeJS for real-time collaboration, and just glazed over SpacialDB. One thing that stood out to me was that when you created a &#8220;table&#8221; you got back 4 keys for the 4 HTTP verbs. Kinda slick, and I&#8217;ve since used their example code to hack up some other stuff (read: blog later). Notably they were also the only people talking about <a href="http://leaflet.cloudmade.com/">LeafletJS</a>. Not sure what the deal is with that, as Leaflet is pretty frikin&#8217; sweet, but whatever.</p>
<p>Back to PostGIS &#8211; the upcoming version 2.0 will seriously raise the bar with the addition of has more built-in features &#8211; from &#8220;clean&#8221; operations, to 3D support to raster algebra / focal operations (as in Spatial Analyst &#8216;fu in the database). Quite simply this is gonna be a huge release &#8211; I think I heard that the beta is slated for end of the year. More info <a href="http://postgis.refractions.net/documentation/manual-svn/">here</a>.</p>
<p>Vizzuality also released <a href="http://vizzuality.com/cartoset">CartoSet</a> (on <a href="https://github.com/Vizzuality/cartoset">github</a>), a Rails framework for simple &#8220;Home/Explore/Details&#8221; type apps. As someone who cares about the design of web apps, I think this is a great idea. Standardize what can be standardized, but leave the UI completely open ended &#8211; a sure way to avoid cookie cutter sites. Vizzuality++</p>
<p><a href="http://nodejs.org/">NodeJs</a> - the new new shiny thing, javascript on the server, async, non-blocking goodies that few people are sure about how to leverage effectively (case in point: all demos are &#8220;chat&#8221;). Sure you can use <a href="http://expressjs.com/">Express</a> and create server side MVC apps, but since that type of app is well serviced by a host of other frameworks, I&#8217;m not seeing that as the real use-case. Realtime steaming seems to be the best fit at this time, and it certainly is fun to play with. If you are on Windows and want to play with Node, check out this post on using <a href="http://www.hanselman.com/blog/WebMatrixAndNodejsTheEasiestWayToGetStartedWithNodeOnWindows.aspx">Node with IIS and WebMatrix</a>.</p>
<p>A nice thing about a smaller geo conference is that you are much more likely to actually talk with vendors. So, talked with the folks at SkyGone, and got the skinny &#8211; although a &#8220;cloud&#8221; provider, they are NOT like EC2. The difference starts with a &#8220;system builder&#8221; tool which allows you to layout an entire multi-server system, using pre-configured machine images (I&#8217;m sure they have some other name). What really struck me was that a running instance can be scaled by adding resources on the fly (think scaling from an EC2 micro-instance to an x-large instance on the fly without launching new instances). This is especially attractive for emergency response applications which need to run with minimal resources until an event occurs and then needs to scale up quickly.</p>
<p>Design Matters&#8230;  attendees packed the room to hear Sergio Alvarez (@saleiva) of Vizzuality talk about design. Since virtually every Vizzuality project I&#8217;ve seen is a work of art, you know the room was packed. Sergio walked through a series of design principles, giving examples of most from their work or via interesting videos. I&#8217;ll credit Apple and the app store with making the value of design obvious to a much wider audience. Simply put &#8211; ugly apps will fail.</p>
<p>Ok, I did not want this to be atotal Vizzuality love-fest, but when you show up and every presentation your team gives is top notch, you deserve credit. So, in that vein, check out this <a href="http://xavijam.github.com/html5-foss4g/">javascript web preso on HTML5</a> hosted at github by Javier Alvarez (@xavijam) and while you&#8217;re in the mood for cool HTML5 stuff, check out his <a href="http://xavijam.github.com/">profile page</a>. Question: Where do I find people like this? <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Overall, there was a ton of great content, but realistically there is only so much you can absorb in a few short days (ok, the late nights in LoDo may have had some impact!). Beyond reconnecting with old friends and meeting tweeple for real &#8211;  for me, the long term value from an event like this is getting the lay of the land, and knowing what tools and technologies are at a point where I feel we can use them in solutions. From here, the hard work of getting up to speed on those technologies starts &#8211; watch for blog posts!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1630/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1630/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1630/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1630/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1630/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1630/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1630/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1630/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1630/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1630/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1630/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1630/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1630/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1630/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1630&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/09/21/foss4g-rockin-the-mile-high-city/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>
	</item>
		<item>
		<title>FOSS4G: Fun and Games in Denver</title>
		<link>http://blog.davebouwman.com/2011/08/19/foss4g-fun-and-games-in-denver/</link>
		<comments>http://blog.davebouwman.com/2011/08/19/foss4g-fun-and-games-in-denver/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 23:00:24 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[NodeJs]]></category>

		<guid isPermaLink="false">https://dbouwman.wordpress.com/2011/08/19/foss4g-fun-and-games-in-denver/</guid>
		<description><![CDATA[I’m pretty excited about FOSS4G – the last “big” non-Esri geo event I made it to was (the now defunct) GeoWeb conference back in 2009, and it was a blast. Nothing like hanging out with a bunch of crazy smart &#8230; <a href="http://blog.davebouwman.com/2011/08/19/foss4g-fun-and-games-in-denver/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1627&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’m pretty excited about <a href="foss4g.org">FOSS4G</a> – the last “big” non-Esri geo event I made it to was (the now defunct) <a href="http://www.geowebconference.org/">GeoWeb</a> conference back in 2009, and it was a blast. Nothing like hanging out with a bunch of <a href="http://twitter.com/#!/cageyjames">crazy</a> <a href="http://twitter.com/#!/ajturner">smart</a> people who believe that they can change the world with some creative / inspired code involving maps.</p>
<p>I expect FOSS4G to be similar – lots of great, creative ideas, lots of code and “how-to-make-this-rock-now” type sessions. And beer.</p>
<p>So, why am I going to a “dirty-hippy-give-it-all-away-GPL-forevah-yo” event? After all, building on the Esri platform is (and will continue to be) my bread and butter. The simple fact is that spatial has not been “special” for a long time now. Integration and scalability are key factors when designing systems and products – and this applies across all software markets. Esri has a great software stack, and even they are embracing the use of open source technologies. Python is an integral part of the ArcGIS ecosystem, and postgresql is the database in their cloud solution. At 10.1 there is PostGIS native access <a href="http://www.spatiallyadjusted.com/2011/08/18/you-cant-edit-spatial-rdbms-with-arcgis-for-desktop-without-sde/">via Spatial Data Service</a>. And then there is the whole <a href="http://www.esri.com/library/whitepapers/pdfs/geoservices-rest-spec.pdf">GeoServices REST Specification</a> (pdf).  So, from my place in the world, I want to get the skinny on this stuff, and FOSS4G is the place to be!</p>
<p>Sure, some of it’s pretty bleeding edge (I’m not likely to propose <a href="http://2011.foss4g.org/sessions/tutorial-async-and-realtime-geo-applications-nodejs">nodejs</a> + <a href="http://2011.foss4g.org/sessions/new-geodata-tool-set-couchdb-and-nodejs">couchdb</a> to a state agency!) but that’s not the point. As a developer, in order to keep my edge, I need to continually challenge myself. I do this by learning <a href="http://blog.davebouwman.com/2011/08/17/jumping-in-the-deep-end/">new languages, tools and techniques</a>. So maybe I don’t *implement* solutions on nodejs for my clients, but upping my javascript skills by using <a href="http://documentcloud.github.com/backbone/">backbonejs</a> on the server will certainly help with other solutions.</p>
<p>And who wouldn&#8217;t want to hear Schuyler Erle pontificate on ”<em><a href="http://2011.foss4g.org/sessions/pivoting-monetize-mobile-hyperlocal-social-gamification-going-viral">Pivoting to Monetize Mobile Hyperlocal Social Gamification by Going Viral</a>” </em></p>
<p>Hope to see you there!</p>
<p>Of note: the <a href="http://2011.foss4g.org/content/big-party-denver-art-museum">Thursday night party</a> is $99 on top of the $649 registration fee, but people tell me it’s gonna be totally awesome and @mattpriour will be there and <a href="http://twitter.com/#!/mattpriour/status/104668199483752448">that alone is worth the price of admission</a> <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" src="http://dbouwman.files.wordpress.com/2011/08/wlemoticon-winkingsmile1.png?w=640" alt="Winking smile" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1627/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1627&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/08/19/foss4g-fun-and-games-in-denver/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/08/wlemoticon-winkingsmile1.png" medium="image">
			<media:title type="html">Winking smile</media:title>
		</media:content>
	</item>
		<item>
		<title>Jumping in the Deep-End&#8230;</title>
		<link>http://blog.davebouwman.com/2011/08/17/jumping-in-the-deep-end/</link>
		<comments>http://blog.davebouwman.com/2011/08/17/jumping-in-the-deep-end/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 03:35:48 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.davebouwman.com/?p=1624</guid>
		<description><![CDATA[A week or so ago, just as Apple momentarily eclipsed Exxon in value, I finally took the plunge and got a Mac. I may be off the back in joining the Cult, but I&#8217;m making up for it by jumping &#8230; <a href="http://blog.davebouwman.com/2011/08/17/jumping-in-the-deep-end/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1624&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A week or so ago, just as <a href="http://blogs.wsj.com/marketbeat/2011/08/10/apple-back-above-exxon-mobil-for-good/">Apple momentarily eclipsed Exxon in value</a>, I finally took the plunge and got a Mac. I may be off the back in joining the Cult, but I&#8217;m making up for it by jumping right into things.</p>
<p>Since getting this thing (maxed out MacBook Air w/ Lion if you&#8217;re interested), I&#8217;ve been learning all sort of stuff &#8211; got Xcode installed (via the app store) and knocked out the first 4 lectures on the <a href="http://itunes.apple.com/us/itunes-u/developing-apps-for-ios-sd/id395631522">Stanford iOS classes</a> (free through iTunes). I got my <a href="http://git-scm.com">git</a> on and poked at our <a href="https://github.com/dtsagile/Leaflet/blob/master/src/layer/AgsDynamicLayer.js">ArcGIS Layers</a> in <a href="http://macromates.com/">TextMate</a>, hacked up some python to harvest <a href="http://share.findmespot.com/shared/faces/viewspots.jsp?glId=0sFUrdrsUxFZFlTRSrgZfNYX6Yx9IhgkS">SpotGPS </a>data for a friend who&#8217;s about to start a multi-year, round the world sailing trip. I got <a href="https://github.com/mxcl/homebrew/wiki/installation">HomeBrew</a> installed and used it to install <a href="https://github.com/mxcl/homebrew/blob/07326546afdea74596a4d0119e9cbde7ad51b6c1/Library/Formula/postgis.rb">Postgresql/Postgis,</a> but I utterly failed to get it running (permissions maybe??!?).</p>
<p>Moving on from that, the next obvious toy to play with was <a href="http://nodejs.org">nodejs</a> and when in Rome, why not throw a NoSql database in the mix &#8211; enter <a href="http://www.mongodb.org/">mondodb</a>. Armed with <a href="http://shapeshed.com/journal/setting-up-nodejs-and-npm-on-mac-osx/">npm</a> (node package manager), I grabbed <a href="http://expressjs.com">Express</a>, cooked the most basic example app, and started to grok the <a href="http://jade-lang.com/">jade</a> templating system (shiny!). Still looking at options/examples for the M &amp; C part of the nodejs MVC stack though. And since I&#8217;ll need somewhere to run any of this hackery, I setup a (free) micro Linux instance on Amazon EC2. Since I&#8217;ll likely travel with this rather than my other massive quad PC notebook, I also got BootCamp setup and Win7 installed so I can perform emergency surgery on ASP.NET MVC apps if needed.</p>
<p>All of this is in the evenings. I&#8217;m spending my days working on a system architecture for a state-wide agency, trying to sort out the best options for synchronizing edits from far flung offices back to a central system, across slow to non-existant network links, taking into consideration new features at ArcGIS 10.1. Which of course means installing the beta of desktop and server, and sorting all the changes, and getting to up speed on the new-new way things work. Fun stuff for sure, but a mental blender. Of note, apparently the &#8220;beta&#8221; is under NDA, so I can&#8217;t talk about the &#8220;techy bits&#8221; until &#8220;pre-release&#8221;.</p>
<p>Suffice to say my head is full, but it&#8217;s seriously fun! Hopefully I can steal 10 minutes of some Postgresql guru&#8217;s time at FOSS4G and get my PostGIS woes solved, and then I&#8217;ll be hackin like a mad-man.</p>
<p>The only developer-ish thing that&#8217;s notoriously Mac-centric that I&#8217;ve not jumped on is <a href="http://www.rubyonrails.org">Ruby on Rails.</a> This is on the agenda, but since I&#8217;ve dabbled in the past, and I view it as more or less on par with ASP.NET MVC (start the flaming now) except in a language I suck at, so I&#8217;m not overly amped to jump on it till I have a particular project in mind.</p>
<p>Anyhow &#8211; I&#8217;d post some more technical stuff on these various things, but at this point I&#8217;m a total &#8220;<a href="http://en.wikipedia.org/w/index.php?title=N00b&amp;redirect=no">n00b</a>&#8220;, so I don&#8217;t have anything to add. Overall, it&#8217;s been really interesting learning new a whole new ecosystem, and fighting through issues. Once I get happy with a node MVC framework and build in some Esri hooks, I&#8217;ll throw up something on what I&#8217;m using.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1624/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1624&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/08/17/jumping-in-the-deep-end/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>
	</item>
		<item>
		<title>Leaflet: Lean, Mean Javascript Maps</title>
		<link>http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/</link>
		<comments>http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 14:21:55 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[ArcGIS Server]]></category>
		<category><![CDATA[javascipt]]></category>
		<category><![CDATA[Leaflet]]></category>

		<guid isPermaLink="false">https://dbouwman.wordpress.com/2011/08/04/leaflet-lean-mean-javascript-maps/</guid>
		<description><![CDATA[A few weeks back I tweeted about some fun stuff we were doing with the Leaflet javascript map library. For those who may not know about it, Leaflet is a new(ish) library from Cloudmade (http://leaflet.cloudmade.com/). What’s really great about this &#8230; <a href="http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1620&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few weeks back I tweeted about some fun stuff we were doing with the Leaflet javascript map library. For those who may not know about it, Leaflet is a new(ish) library from Cloudmade (<a title="http://leaflet.cloudmade.com/" href="http://leaflet.cloudmade.com/">http://leaflet.cloudmade.com/</a>). What’s really great about this library is that is really really lean. Like 24Kb on the wire. Of course this means that instead of handling every possible thing in every browser, the developers focused on a reasonable subset of functionality, and make the assumption you’re using a reasonably modern browser.</p>
<h2>How Lean is Lean?</h2>
<p>As I said, we’re talkin’ 24Kb total and it’s all in one file, which means one request. This makes it ideal for use in mobile web applications. Compared to the Esri Compact javascript api, which is 114Kb itself, AND makes 11 additional requests for more Dojo pieces and parts, totaling out to ~145Kb, Leaflet is substantially leaner. And since there is less javascript running… it’s also faster.</p>
<h2>Leaning on the Browser: CSS3</h2>
<p>Another noticeable difference is that Leaflet leans heavily on CSS3. This alone is good because CSS3 operations (transforms etc.) are native so they are MUCH faster than doing the same thing via javascript. And, on iOS, <a href="http://mir.aculo.us/2010/08/28/so-whats-the-status-of-hardware-acceleration-really/">CSS3 transforms are hardware accelerated</a>, which means super smooth panning and zooming. Relying on CSS3 also removes a ton of code – of course if your end users are rocking Internet Explorer 6, this may be sub-optimal. (What isn’t sub-optimal in IE6??). Luckily for us all, the vast majority of smartphones use a webkit browser <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" src="http://dbouwman.files.wordpress.com/2011/08/wlemoticon-winkingsmile.png?w=640" alt="Winking smile" /></p>
<h2>ArcGIS Server Goodies</h2>
<p>Ok, so that’s set the stage – leaflet is good and shiny, but how do we (die-hard Esri geogeeks) integrate services hosted on ArcGIS Server? We write code! (mostly)</p>
<h3>Tiled Map Services</h3>
<p>Tiled map services are really easy to use in Leaflet and don’t require any coding. Since Leaflet has a TileLayer, and assumes we’re all using the <a href="http://wiki.openstreetmap.org/wiki/EPSG:3857">One-True-Projection</a> (did I say there were limitations?) all we need to do is hand the TileLayer constructor the url to the tile service.</p>
<pre class="code"><span style="color:blue;">var </span>streetMapUrl = <span style="color:maroon;">'http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}'</span>;
<span style="color:blue;">var </span>streetMapLayer = <span style="color:blue;">new </span>L.TileLayer(streetMapUrl, { maxZoom: 19, attribution: <span style="color:maroon;">'Tiles: &amp;copy; Esri' </span>});</pre>
<p>The thing to note here is that the CloudMade tile urls have the parameters ordered differently ({z}/{x}/{y}) than an ArcGIS Server tile cache ({z}/{y}/{x}). That’s it!</p>
<h2>ArcGIS Dynamic Map Services</h2>
<p>This does require some code (over in GitHub if you want to peek). I ended up creating two types of layers that use ArcGIS Dynamic map services. The first one I build is based off the <a href="https://github.com/dtsagile/Leaflet/blob/master/src/layer/ImageOverlay.js">ImageOverlay</a> class. The <a href="https://github.com/dtsagile/Leaflet/blob/master/src/layer/AgsDynamicLayer.js">AgsDynamicLayer</a> class takes the url to a map service, and will make requests for map images that cover the visible extent (just like the ArcGISDynamicLayer in the javascript and Flex APIs). You can specify which layers in the map service to show, as well as setup definition queries.</p>
<pre class="code"><span style="color:blue;">var </span>sitesLayer = <span style="color:blue;">new </span>L.AgsDynamicLayer(
    <span style="color:maroon;">'http://ags2.dtsagile.com/ArcGIS/rest/services/LiveFeeds/WxMappr/MapServer'</span>,
    { maxZoom: 19,
        attribution: <span style="color:maroon;">"NOAA"</span>,
        opacity: 1,
        layers: <span style="color:maroon;">'show:2' </span>});
_map.addLayer(sitesLayer);</pre>
<p>This is a *minimalist* implementation – if you want to use this, and it’s missing a feature you want – add it! Since it’s using the REST API, this is really just about creating Urls, so it’s simple. Also – this example is using a demo NEXRAD service, so don’t use it in your apps. Ok, you actually could and we likely would not notice, but we move stuff around a lot so it will likely break at some really inconvenient time, and then your boss will be all up in your face etc. etc. In short – be cool. Moving on…</p>
<p>Turns out that this works quite well in desktop browsers, but crashes Safari on iOS after a bunch (like 50) pan/zoom operations. Not quite sure why this is, but hopefully someone can take a peek at the code and have an “Ah HA!” moment and fix this.</p>
<p>SO – since that did not work on mobile browsers, and I saw that there was a <a href="https://github.com/dtsagile/Leaflet/blob/master/src/layer/tile/TileLayer.WMS.js">TileLayer.WMS</a> class in the repo, I thought I’d go that route – assuming that whatever was causing Safari on iOS to puke would not be an issue. Thus the <a href="https://github.com/dtsagile/Leaflet/blob/master/src/layer/tile/TileLayer.AGSDynamic.js">TileLayer.AGSDynamic</a> class (yeah yeah – I just noticed the inconsistent casing). This has the same parameters etc as the AgsDynamic layer, but instead of making a request for a single image covering the current visible extent, it makes a bunch of requests for images that line up with tiles.</p>
<pre class="code"><span style="color:blue;">var </span>nexrad = <span style="color:blue;">new </span>L.TileLayer.AGSDynamic(
            <span style="color:maroon;">'http://ags2.dtsagile.com/ArcGIS/rest/services/LiveFeeds/WxMappr/MapServer'</span>,
                 {  maxZoom: 19,
                    attribution: <span style="color:maroon;">"NEXRAD"</span>,
                    opacity: 0.5,
                    layers: <span style="color:maroon;">'show:18'</span>,
                    cacheBuster: <span style="color:blue;">true </span>});
_map.addLayer(nexrad);</pre>
<p>This is cool because now you’ll have consistent urls,  which means you’ll play nice with caching and once an image is loaded your pan/zoom operations don’t have to re-load it. However, the first layer I used this with is a NEXRAD feed that updates every 5 minutes, so I added a cacheBuster property which basically tacks a random number on the back of the request to force new images every time. Down the line I’d probably make another custom layer that has a timer and only changes this random string every 5 minutes. Unfortunately, this layer still causes Safari on iOS to crash (doh!)</p>
<p>Here’s a simple screen grab of leaflet, loaded with the Esri Streetmap tile cache, NEXRAD data coming in via TileLayer.AGSDynamic and windfields coming in via AgsDynamic.</p>
<p><a href="http://dbouwman.files.wordpress.com/2011/08/ll-ags.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;" title="ll-ags" src="http://dbouwman.files.wordpress.com/2011/08/ll-ags_thumb.png?w=548&#038;h=367" alt="ll-ags" width="548" height="367" border="0" /></a></p>
<h2>Lets Play!</h2>
<p><del>I’m going to push up some simple demo’s later today (and will update this post) but until then</del>   UPDATE: Live demo&#8217;s of can be found at <a href="http://demo.dtsagile.com/leaflet" target="_blank">http://demo.dtsagile.com/leaflet</a></p>
<p>You can fork <a href="https://github.com/dtsagile/Leaflet/">our Leaflet repo</a> at GitHub or just grab code, and use the agstile.html and ags-dynamic.html files includes in /debug/map. Once we (or someone) sorts out why these are crashing Safari, we’ll submit a pull request and hopefully get this into the main branch of the Leaflet source.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1620/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1620/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1620/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1620&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/08/04/leaflet-lean-mean-javascript-maps/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/08/wlemoticon-winkingsmile.png" medium="image">
			<media:title type="html">Winking smile</media:title>
		</media:content>

		<media:content url="http://dbouwman.files.wordpress.com/2011/08/ll-ags_thumb.png" medium="image">
			<media:title type="html">ll-ags</media:title>
		</media:content>
	</item>
		<item>
		<title>Mobile Custom View Engine Code</title>
		<link>http://blog.davebouwman.com/2011/07/12/ms-sig/</link>
		<comments>http://blog.davebouwman.com/2011/07/12/ms-sig/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 23:00:45 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.davebouwman.com/?p=1611</guid>
		<description><![CDATA[Today I gave a talk at the  Microsoft Special Interest Group about using ASP.NET MVC to serve device specific views. In that talk I used a CustomViewEngine class (code is here) This code was modified from this post by Scott &#8230; <a href="http://blog.davebouwman.com/2011/07/12/ms-sig/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1611&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I gave a talk at the  Microsoft Special Interest Group about using ASP.NET MVC to serve device specific views. In that talk I used a CustomViewEngine class (<a href="https://gist.github.com/1077436">code is here</a>)</p>
<p>This code was modified from<a href="http://www.hanselman.com/blog/ABetterASPNETMVCMobileDeviceCapabilitiesViewEngine.aspx"> this </a>post by Scott Hanselman. To use it, use Package Manager and install 51degrees.mobi, comment out the redirect to Mobile/Default in the App_Data/51degrees.mobi.config file, drop in this class, and add the viewengines in Global.asax.cs like so:</p>
<p>ViewEngines.Engines.Clear();<br />
ViewEngines.Engines.AddIELessThan9&lt;RazorViewEngine&gt;();<br />
ViewEngines.Engines.AddBlackBerryLessThan6&lt;RazorViewEngine&gt;();<br />
ViewEngines.Engines.AddWP7&lt;RazorViewEngine&gt;();<br />
ViewEngines.Engines.AddPhone&lt;RazorViewEngine&gt;();<br />
ViewEngines.Engines.AddAndroidPhone&lt;RazorViewEngine&gt;();<br />
ViewEngines.Engines.AddIPad&lt;RazorViewEngine&gt;();</p>
<p>//Everybody else gets the full blown dealio<br />
ViewEngines.Engines.Add(new RazorViewEngine());</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1611/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1611/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1611/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1611&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/07/12/ms-sig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>
	</item>
		<item>
		<title>Flex Special Interest Group Presentation</title>
		<link>http://blog.davebouwman.com/2011/07/12/flex-special-interest-group-presentation/</link>
		<comments>http://blog.davebouwman.com/2011/07/12/flex-special-interest-group-presentation/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 18:30:57 +0000</pubDate>
		<dc:creator>Dave Bouwman</dc:creator>
				<category><![CDATA[ArcGIS Server]]></category>
		<category><![CDATA[Esri]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.davebouwman.com/?p=1609</guid>
		<description><![CDATA[Today I gave a really rapid fire presentation at the Flex Special Interest Group at the Esri Users Conference. I showed 11 flex apps in ~5 minutes &#8211; so clearly it was a whirlwind. Here are the the links to &#8230; <a href="http://blog.davebouwman.com/2011/07/12/flex-special-interest-group-presentation/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1609&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I gave a really rapid fire presentation at the Flex Special Interest Group at the Esri Users Conference. I showed 11 flex apps in ~5 minutes &#8211; so clearly it was a whirlwind. Here are the the links to the public facing sites so you can explore them a little more.</p>
<p>#1 <a href="http://ForestHealth.info">ForestHealth.info</a> &#8211; our first flex app / particle graphs</p>
<p>#2 <a href="http://mashup.dtsagile.com">Esri Mashup Entry</a> &#8211; particle effects v2</p>
<p>#3 <a href="http://texaswildfirerisk.com">Texas Wildfire Risk</a> &#8211; very customized Flex Viewer</p>
<p>#4<a href="http://historicbuildings.utah.gov/">Utah Historic Buildings</a> &#8211; server side clustering</p>
<p>#5 Forest Disturbance Mapper (login required) &#8211; thresholding</p>
<p>#6 <a href="http://exoticforestpest.info/Pest/Details/PotentialDistribution/143">Exotic Forest Pests Portal &#8211; potential distribution tool</a> &#8211; PixelBender v1</p>
<p>#7 <a href="http://changematters.esri.com/explore">Esri ChangeMattersViewer App</a> &#8211; PixelBender v2</p>
<p>#8 <a href="http://tx.dtswildfire.com">Texas Wildfire COP</a> &#8211; Flex Viewer</p>
<p>#9 <a href="http://dev.dtsagile.com/fireintel">Fire Intel Viewer</a> &#8211; real-time data feeds</p>
<p>#10 DTSWildfire COP R&amp;D &#8211; Community Analyst Online integration (login only)</p>
<p>#11 Video Chat Widget for Flex Viewer (login only)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dbouwman.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dbouwman.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dbouwman.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dbouwman.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dbouwman.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dbouwman.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dbouwman.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dbouwman.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dbouwman.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dbouwman.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dbouwman.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dbouwman.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dbouwman.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dbouwman.wordpress.com/1609/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.davebouwman.com&amp;blog=14377016&amp;post=1609&amp;subd=dbouwman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.davebouwman.com/2011/07/12/flex-special-interest-group-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7f4bfa0a5e4a4e45219a80f9c3cfd6f6?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">dbouwman</media:title>
		</media:content>
	</item>
	</channel>
</rss>
