<?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>Matt Steele</title>
	<atom:link href="https://matthewsteele.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://matthewsteele.wordpress.com</link>
	<description></description>
	<lastBuildDate>Sun, 20 Oct 2013 17:16:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">1731277</site><cloud domain='matthewsteele.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s2.wp.com/i/webclip.png</url>
		<title>Matt Steele</title>
		<link>https://matthewsteele.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://matthewsteele.wordpress.com/osd.xml" title="Matt Steele" />
	<atom:link rel='hub' href='https://matthewsteele.wordpress.com/?pushpress=hub'/>
	<item>
		<title>HTTP 301 Moved Permanently</title>
		<link>https://matthewsteele.wordpress.com/2013/10/20/http-301-moved-permanently/</link>
					<comments>https://matthewsteele.wordpress.com/2013/10/20/http-301-moved-permanently/#respond</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Sun, 20 Oct 2013 17:14:41 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=263</guid>

					<description><![CDATA[I&#8217;ve moved off WordPress.com. I&#8217;m now hosting my blog here: http://www.matthew-steele.com/ Update your RSS Feeds: http://www.matthew-steele.com/feed/atom.xml &#160;]]></description>
										<content:encoded><![CDATA[<h2><strong>I&#8217;ve moved off WordPress.com.</strong></h2>
<p><strong>I&#8217;m now hosting my blog here: <a href="http://www.matthew-steele.com/">http://www.matthew-steele.com/</a></strong></p>
<p><strong>Update your RSS Feeds: <a href="http://www.matthew-steele.com/feed/atom.xml">http://www.matthew-steele.com/feed/atom.xml</a></strong></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2013/10/20/http-301-moved-permanently/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">263</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Exploring the Device APIs</title>
		<link>https://matthewsteele.wordpress.com/2013/08/06/exploring-the-device-apis/</link>
					<comments>https://matthewsteele.wordpress.com/2013/08/06/exploring-the-device-apis/#respond</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Wed, 07 Aug 2013 03:32:19 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Talks]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=254</guid>

					<description><![CDATA[I gave a lightning talk at NebraskaJS on some of the new features available through the Device API. More importantly, it marks the glorious return of the Wayne&#8217;s World light sensor. Video: Diving into the Device API from Matt Steele on Vimeo. Slides]]></description>
										<content:encoded><![CDATA[<p>I gave a lightning talk at <a href="http://nebraskajs.com/">NebraskaJS</a> on some of the new features available through the <a href="https://matthewsteele.wordpress.com/2013/06/19/diving-into-the-device-api/">Device API</a>. More importantly, it marks the glorious return of the Wayne&#8217;s World light sensor.</p>
<h2>Video:</h2>
<div class="embed-vimeo" style="text-align: center;"><iframe src="https://player.vimeo.com/video/71864754" width="500" height="373" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>
<p><a href="http://vimeo.com/71864754">Diving into the Device API</a> from <a href="http://vimeo.com/mattdsteele">Matt Steele</a> on <a href="https://vimeo.com">Vimeo</a>.</p>
<h2><a href="https://speakerdeck.com/mattdsteele/diving-into-the-device-api">Slides</a></h2>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2013/08/06/exploring-the-device-apis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">254</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Diving into the Device API</title>
		<link>https://matthewsteele.wordpress.com/2013/06/19/diving-into-the-device-api/</link>
					<comments>https://matthewsteele.wordpress.com/2013/06/19/diving-into-the-device-api/#comments</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Wed, 19 Jun 2013 21:46:31 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=224</guid>

					<description><![CDATA[I recently read Tim Wright&#8217;s article on A List Apart detailing the Device API; a collection of W3C standards that let you obtain access to a number of hardware sensors. I found this fascinating, and had to try them out. Here&#8217;s what I&#8217;ve learned. Note: for most of these demos, you&#8217;ll want to try them [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I recently read Tim Wright&#8217;s <a style="font-size:13px;" href="http://alistapart.com/article/environmental-design-with-the-device-api">article on A List Apart</a> detailing the Device API; a collection of W3C standards that let you obtain access to a number of hardware sensors.</p>
<p>I found this fascinating, and had to try them out. <strong>Here&#8217;s what I&#8217;ve learned</strong>.</p>
<p>Note: for most of these demos, you&#8217;ll want to try them out in specific browsers (either Android Firefox or iOS Safari); as of today, browser support is limited. The most up-to-date information on browser implementation is on <a href="http://www.w3.org/2009/dap/wiki/ImplementationStatus">this page</a>.</p>
<p>All demo code is <a href="https://github.com/mattdsteele/device-apis">available on GitHub</a>.</p>
<h2>Battery Status</h2>
<iframe class="youtube-player" width="830" height="467" src="https://www.youtube.com/embed/dLD7Ve5t5cI?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
<h3><a href="http://www.matthew-steele.com/projects/device-apis/battery.html">View Demo <em>(works in Android Firefox)</em></a></h3>
<p>The <a href="https://dvcs.w3.org/hg/dap/raw-file/tip/battery/Overview.html#introduction">Battery Status API</a> is straightforward &#8211; it adds a new object <code>window.navigator.battery</code> that you can inspect and discover how much juice is left in the device for you to suck out (this is exposed by <code>battery.dischargingTime</code> and is measured in seconds).</p>
<p><code>battery.charging</code> returns a boolean. You can inspect the charged level using <code>battery.level</code>, but the most interesting parts are the <a href="https://dvcs.w3.org/hg/dap/raw-file/tip/battery/Overview.html#event-handlers">events</a>, which let you capture when a device starts charging, or reaches a threshold over 60%, etc.</p>
<p>The demo captures the <code>chargingchange</code> event and changes some background colors. but you could do lots of things with this data. For example, it might be prudent to turn off 3D CSS transformations at a certain battery threshold, as they&#8217;re quite power-hungry. <strong>By treating power as a feature test, you can take progressive enhancement to a new level</strong>.</p>
<h3>Availability</h3>
<p>Firefox currently supports this API on desktop and mobile Android. WebKit <a href="https://bugs.webkit.org/show_bug.cgi?id=62698">appears to have implemented</a> it briefly last year, but it&#8217;s currently disabled and work to re-enable it <a href="https://bugs.webkit.org/show_bug.cgi?id=90538">appears to have stalled</a>. Similarly, <a href="https://code.google.com/p/chromium/issues/detail?id=122593">Chromium has a patch built</a> but it doesn&#8217;t seem to have ever landed.</p>
<h2>Ambient Light Sensor</h2>
<iframe class="youtube-player" width="830" height="467" src="https://www.youtube.com/embed/YEkhmYXJAeY?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
<h3><a href="http://www.matthew-steele.com/projects/device-apis/lightsensor.html">View Demo <em>(works in Android Firefox)</em></a></h3>
<p>Most phones have an ambient light sensor &#8211; it&#8217;s mostly used to dim the screen in low-light environments. The <a href="https://dvcs.w3.org/hg/dap/raw-file/tip/light/Overview.html">Ambient Light Sensor API</a> works with any sensors that can read light levels, including an embedded camera. There&#8217;s lots of environment-specific modifications to a site you could perform with this.</p>
<h3>Availability</h3>
<p>Firefox on Android has it, and it&#8217;s implemented on the desktop in OS X. There&#8217;s a patch for Windows 7 that <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=754199">appears to have stalled</a>. I don&#8217;t see any evidence that other browsers are planning to implement it.</p>
<h2>Device Orientation</h2>
<iframe class="youtube-player" width="830" height="467" src="https://www.youtube.com/embed/c7rWFcYSs1g?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
<p>A native app that recently captured my attention was the <a href="http://pizza-compass.com/">well-advertised Pizza Compass</a> for iOS. It does exactly what you&#8217;d expect. I wanted to try a version in pure HTML5. Right now it only points you to a pizza place in my city, but it meets my use case, so why abstract?</p>
<h3><a href="http://www.matthew-steele.com/projects/device-apis/pizza.html">View Demo <em>(works in Mobile Safari/iOS Chrome)</em></a></h3>
<p>There&#8217;s a number of device location/orientation sensors in modern cell phones, and it&#8217;s not always clear which HTML5 feature to use:</p>
<ul>
<li>Accelerometer/Device Tilt: <a href="http://dev.w3.org/geo/api/spec-source-orientation">DeviceOrientation</a></li>
<li>Latitude/Longitude: <a href="http://dev.w3.org/geo/api/spec-source.html">Geolocation</a></li>
<li>Compass: <a href="http://dev.w3.org/geo/api/spec-source-orientation">DeviceOrientation</a> (using the alpha property)</li>
</ul>
<p>There&#8217;s been plenty of apps that use Latitude/Longitude; many use it to assist in a &#8220;Store Locator&#8221; feature. Google&#8217;s also done a few <a href="http://chrome.com/campaigns/rollit">interesting experiments</a> with DeviceOrientation, but I haven&#8217;t seen many instances of its use in the wild.</p>
<h3>Here Be Dragons</h3>
<p>The basic functionality works on current iOS browsers. However, I ran into a number of quirks on other platforms that also support the DeviceOrientation API; which means you can&#8217;t build interoperable apps with it.</p>
<ul>
<li>Firefox <strong>increases</strong> the alpha property as the device rotates clockwise. All other tested devices <strong>decrease</strong> the property when rotating clockwise.</li>
<li>The alpha property&#8217;s initial value is all over the place. Some browsers (iOS Mobile Safari) set it at 0 based on the initial orientation of the device. Other browsers set 0 to a particular orientation, but it&#8217;s inconsistent (Android Browser is 0 at west, Firefox is 0 at north, Chrome is ambiguous).</li>
<li>The event provides an absolute property, assuming the alpha value is calibrated to formal <a href="http://dev.w3.org/geo/api/spec-source-orientation#deviceorientation">Euler Angles</a> (Firefox and Chrome for Android implement this). There doesn&#8217;t seem to be consistency even with this.</li>
</ul>
<h3>Availability</h3>
<p>Most mobile browsers support these APIs, with the caveats stated above.</p>
<h2>Conclusion</h2>
<p>These features are really slick, but they&#8217;re hampered by the same issues that hinder the web platform generally: <strong>platform fragmentation and buggy implementations</strong>. But take the long view, and soon enough you&#8217;ll be able to build real-world sites that capture environment input in lots of cool ways.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2013/06/19/diving-into-the-device-api/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">224</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Unit Testing JavaScript when you&#8217;re Afraid of JavaScript</title>
		<link>https://matthewsteele.wordpress.com/2013/03/16/unit-testing-javascript-when-youre-afraid-of-javascript/</link>
					<comments>https://matthewsteele.wordpress.com/2013/03/16/unit-testing-javascript-when-youre-afraid-of-javascript/#respond</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Sun, 17 Mar 2013 01:27:55 +0000</pubDate>
				<category><![CDATA[Talks]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=219</guid>

					<description><![CDATA[I spoke at Nebraska Code Camp on how to unit test JavaScript when you&#8217;re deathly afraid of the language. We&#8217;ve gone from writing toy programs in JavaScript to full-blown applications, but our testing skills haven&#8217;t caught up. Weirdly, lots of us are coming to JavaScript from other languages that value and encourage testing. What happened? Turns [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I spoke at <a href="http://www.nebraskacodecamp.com/">Nebraska Code Camp</a> on how to unit test JavaScript when you&#8217;re deathly afraid of the language.</p>
<blockquote><p>We&#8217;ve gone from writing toy programs in JavaScript to full-blown applications, but our testing skills haven&#8217;t caught up. Weirdly, lots of us are coming to JavaScript from other languages that value and encourage testing. What happened?</p>
<p>Turns out, unit testing JavaScript is different than other languages, and doing it well means you have to rethink how you write JS code.</p></blockquote>
<p><a href="https://speakerdeck.com/mattdsteele/unit-testing-javascript-when-youre-afraid-of-javascript"><strong>Slides</strong></a></p>
<p><strong>Slides + Audio</strong></p>
<div class="embed-vimeo" style="text-align: center;"><iframe src="https://player.vimeo.com/video/62004647" width="500" height="375" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2013/03/16/unit-testing-javascript-when-youre-afraid-of-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">219</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>What Zelda Taught Me About Front End Engineering</title>
		<link>https://matthewsteele.wordpress.com/2012/12/06/what-zelda-taught-me-about-front-end-engineering/</link>
					<comments>https://matthewsteele.wordpress.com/2012/12/06/what-zelda-taught-me-about-front-end-engineering/#comments</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Thu, 06 Dec 2012 22:46:31 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Talks]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=171</guid>

					<description><![CDATA[I spoke at the HaymarketDev meetup in Lincoln on treating JavaScript like a real language. I was coming down from an NES Zelda bender, and I think it shows. Slides Slides + Audio: Video:]]></description>
										<content:encoded><![CDATA[<p>I spoke at the HaymarketDev meetup in Lincoln on treating JavaScript like a real language.</p>
<p>I was coming down from an NES Zelda bender, and I think it shows.</p>
<p><strong><a href="https://speakerdeck.com/mattdsteele/what-zelda-taught-me-about-front-end-engineering">Slides</a></strong></p>
<p>Slides + Audio:<br />
<div class="embed-vimeo" style="text-align: center;"><iframe src="https://player.vimeo.com/video/54993676" width="830" height="467" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div></p>
<p>Video:</p>
<iframe class="youtube-player" width="830" height="467" src="https://www.youtube.com/embed/2whBsRpkt4Q?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2012/12/06/what-zelda-taught-me-about-front-end-engineering/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">171</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Unit Testing in JavaScript with Jasmine</title>
		<link>https://matthewsteele.wordpress.com/2012/10/21/unit-testing-in-javascript-with-jasmine/</link>
					<comments>https://matthewsteele.wordpress.com/2012/10/21/unit-testing-in-javascript-with-jasmine/#respond</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Sun, 21 Oct 2012 19:22:38 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Talks]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=200</guid>

					<description><![CDATA[I spoke at the Omaha Java User Group this month about what testing JavaScript is like for a JS neophyte:]]></description>
										<content:encoded><![CDATA[<p>I spoke at the Omaha Java User Group this month about what testing JavaScript is like for a JS neophyte:</p>
<div class="embed-vimeo" style="text-align: center;"><iframe src="https://player.vimeo.com/video/51600238" width="830" height="467" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2012/10/21/unit-testing-in-javascript-with-jasmine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">200</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Town Tester &#8211; How well does your city unit test?</title>
		<link>https://matthewsteele.wordpress.com/2012/09/18/town-tester/</link>
					<comments>https://matthewsteele.wordpress.com/2012/09/18/town-tester/#respond</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Tue, 18 Sep 2012 16:20:19 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=190</guid>

					<description><![CDATA[In my talk Zen and the Art of TDD, I included a slide that showed only 43% of all Github repositories from Omaha developers included unit tests: Today I&#8217;m releasing the code I used to obtain this data: a script called Town Tester. View town-tester on Github It&#8217;s a Ruby script that queries the Github [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In my talk <a href="https://vimeo.com/49092644/">Zen and the Art of TDD</a>, I included a slide that showed only 43% of all Github repositories from Omaha developers included unit tests:</p>
<p><a href="https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png"><img data-attachment-id="191" data-permalink="https://matthewsteele.wordpress.com/2012/09/18/town-tester/languages-2/" data-orig-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png" data-orig-size="935,499" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="languages" data-image-description="" data-image-caption="" data-large-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png?w=830" class="aligncenter size-full wp-image-191" title="languages" src="https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png?w=830&#038;h=442" alt="" width="830" height="442" srcset="https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png?w=830&amp;h=443 830w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png?w=150&amp;h=80 150w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png?w=300&amp;h=160 300w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png?w=768&amp;h=410 768w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png 935w" sizes="(max-width: 830px) 100vw, 830px" /></a></p>
<p>Today I&#8217;m releasing the code I used to obtain this data: a script called Town Tester.</p>
<p><strong><a href="https://github.com/mattdsteele/town-tester">View town-tester on Github</a></strong></p>
<p>It&#8217;s a Ruby script that queries the Github API to do the following tasks:</p>
<ul>
<li>Find users with their Location set to the value you provide</li>
<li>Clones all &#8220;popular&#8221; repos (not a dotfiles project, at least 1 watcher, not a fork)</li>
<li>Checks for the existence of tests (based on a filename that includes &#8220;test&#8221; or &#8220;spec&#8221;)</li>
<li>Creates a .csv with data on each repo, and prints statistics broken down by language</li>
</ul>
<p>I&#8217;m excited for the possibilities of this project:</p>
<ul>
<li>Want to showcase how awesome your local community is? Steal developers away from San Francisco by proving your city can test better than their piddling 56% rate.</li>
<li>Put an end to the Great Semicolon Debates. Whichever developer has more JavaScript repositories with tests wins all syntax arguments by default!</li>
<li>Gamification is all the rage. Why not track your city&#8217;s testing ratio over time, and give XP to developers that increase the ratio the most? Each month, the winner could get free drinks at your local <a href="http://www.beerandcode.org/">Beer &amp;&amp; Code</a>.</li>
<li>Just in time for the <a href="http://globalday.coderetreat.org/">Global Day of Coderetreat</a>, you could lure <a href="https://twitter.com/coreyhaines">Corey Haines</a> to your hometown by being the best tested city in the world. I&#8217;m pretty sure he doesn&#8217;t really want to go to Sydney or Honolulu anyway.</li>
</ul>
<p>I know I&#8217;m just scratching the surface of this venture.</p>
<p>Also, please don&#8217;t game the system by adding a &#8220;test.txt&#8221; file to the root of each of your repositories.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2012/09/18/town-tester/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">190</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>

		<media:content url="https://matthewsteele.wordpress.com/wp-content/uploads/2012/09/languages1.png" medium="image">
			<media:title type="html">languages</media:title>
		</media:content>
	</item>
		<item>
		<title>Zen and the Art of TDD</title>
		<link>https://matthewsteele.wordpress.com/2012/09/09/zen-and-the-art-of-tdd-barcamp/</link>
					<comments>https://matthewsteele.wordpress.com/2012/09/09/zen-and-the-art-of-tdd-barcamp/#respond</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Sun, 09 Sep 2012 19:15:00 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Talks]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=155</guid>

					<description><![CDATA[Over the weekend at Barcamp Omaha I gave a talk on why I practice test driven development. Though TDD is over a decade old, it still isn&#8217;t a practice we do with much regularity. So this is my Top 5 list of reasons why I think TDD is an important skill to develop. While prepping [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Over the weekend at <a href="http://barcampomaha.org">Barcamp Omaha</a> I gave a talk on why I practice test driven development. Though TDD is over a decade old, it still isn&#8217;t a practice we do with much regularity. So this is my Top 5 list of reasons why I think TDD is an important skill to develop.</p>
<p>While prepping this talk, I discovered that only 43% of GitHub repositories from Omaha developers have any tests at all. How many were built with TDD is certainly an even smaller fraction.</p>
<p><strong>Slides with Audio</strong></p>
<div class="embed-vimeo" style="text-align: center;"><iframe src="https://player.vimeo.com/video/49092644" width="500" height="313" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>
<p>&nbsp;</p>
<p><strong>Video + Slides</strong></p>
<iframe class="youtube-player" width="830" height="467" src="https://www.youtube.com/embed/wBX28bJIPhQ?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
<p>&nbsp;</p>
<p><strong><a href="http://barcamp-omaha-tdd.herokuapp.com/">Slides</a></strong></p>
<p><strong><a href="http://www.matthew-steele.com/talks/barcamp-app/">JavaScript demo app</a> | <a href="http://www.matthew-steele.com/talks/barcamp-app/specs/">Jasmine test suite</a></strong></p>
<p>The code for the <a href="https://github.com/mattdsteele/js-tdd-demo">app</a> and the <a href="https://github.com/mattdsteele/barcamp-tdd-slides">slides</a> are also available on Github.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2012/09/09/zen-and-the-art-of-tdd-barcamp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">155</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>
	</item>
		<item>
		<title>Lessons Learned from the first Hack Omaha</title>
		<link>https://matthewsteele.wordpress.com/2012/04/19/lessons-learned-from-the-first-hack-omaha/</link>
					<comments>https://matthewsteele.wordpress.com/2012/04/19/lessons-learned-from-the-first-hack-omaha/#comments</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Thu, 19 Apr 2012 21:44:23 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[omaha]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=144</guid>

					<description><![CDATA[Hack Omaha This weekend I took part in Hack Omaha &#8211; the city&#8217;s first hackathon with a focus on making apps from public data. We built an app that gameified health inspection data. It was awesome. Nate&#8217;s already written up an hour by hour recap of our team&#8217;s experience, but I thought I&#8217;d share specifics [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hack Omaha</p>
<p>This weekend I took part in Hack Omaha &#8211; the city&#8217;s first hackathon with a focus on making apps from public data. We built an app that <a href="http://www.omahafoodfight.org/">gameified health inspection data</a>. It was awesome. Nate&#8217;s already written up an <a href="http://fullycroisened.com/omaha-food-fight-hackomaha-app/">hour by hour recap</a> of our team&#8217;s experience, but I thought I&#8217;d share specifics of what I learned.</p>
<ul>
<li><strong>Pitch an idea, even if it&#8217;s not a winner.</strong> Nick Wertzburger started the pitch session off with a joke app (I think) that he <a href="https://twitter.com/#!/rannick/status/187954462441218048">tweeted earlier</a>. It was one of only a handful of pitches, and his team ran with it and melded it into an awesome <a href="http://www.safeomaha.org/">heatmap </a>page; my favorite project of the weekend.</li>
<li><strong>Sinatra rocks</strong>. My day job consists of writing Web Services, with a capital W and S. The process is often heavyweight, cumbersome, and requires numerous approval and manual configuration steps. It was beyond refreshing to just write a <code>get /matchup</code> method, paste in some JSON, and have a working service. Prototyping service design before you&#8217;ve even gotten a dataset gives you lots of flexibility to change your design on the fly.</li>
</ul>
<div data-shortcode="caption" id="attachment_159" style="width: 470px" class="wp-caption aligncenter"><a href="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg"><img aria-describedby="caption-attachment-159" data-attachment-id="159" data-permalink="https://matthewsteele.wordpress.com/2012/04/19/lessons-learned-from-the-first-hack-omaha/foodfight1/" data-orig-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg" data-orig-size="2560,1920" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Nexus S 4G&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1334356256&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;3.43&quot;,&quot;iso&quot;:&quot;50&quot;,&quot;shutter_speed&quot;:&quot;0.016666666666667&quot;,&quot;title&quot;:&quot;&quot;,&quot;latitude&quot;:&quot;41.2592202&quot;,&quot;longitude&quot;:&quot;-95.9335141&quot;}" data-image-title="foodfight1" data-image-description="" data-image-caption="&lt;p&gt;Initial mockups for the app&lt;/p&gt;
" data-large-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg?w=830" class="size-full wp-image-159" title="foodfight1" src="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg?w=830" alt=""   srcset="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg?w=460&amp;h=345 460w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg?w=920&amp;h=690 920w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg?w=150&amp;h=113 150w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg?w=300&amp;h=225 300w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg?w=768&amp;h=576 768w" sizes="(max-width: 460px) 100vw, 460px" /></a><p id="caption-attachment-159" class="wp-caption-text">Initial mockups for the app</p></div>
<ul>
<li><strong>Heroku is great, except when it isn&#8217;t</strong>. We ran the app&#8217;s service layer on a shared (read: free) Heroku instance and a shared Postgres database. This was my first experience hosting apps on Heroku, so I relied on Steve&#8217;s expertise. Pushing changes was simple as pie, but we ran into numerous issues getting Rake migrations to function correctly. We ended up creating databases on my machine, and using Heroku&#8217;s backup/restore feature to load up production. It&#8217;s not pretty but it got the job done.</li>
<li><strong>Designers are worth their weight in gold</strong>. With all due respect to Nate&#8217;s work, we could have used someone to help with the usability, icon design and overall polish of our app. Most projects were in the same boat. But they were in extremely limited supply here.</li>
<li><strong>ORM flexibility is helpful</strong>. Since you have no idea what tech stack you&#8217;ll be working with, you don&#8217;t want to require teammates to have a particular database already installed. For example, Steve didn&#8217;t have Postgres installed on his MacBook, but we just configured a SQLite instance on his box, set up his ActiveRecord configuration to connect to it and he was off and running.</li>
</ul>
<div data-shortcode="caption" id="attachment_160" style="width: 470px" class="wp-caption aligncenter"><a href="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg"><img aria-describedby="caption-attachment-160" data-attachment-id="160" data-permalink="https://matthewsteele.wordpress.com/2012/04/19/lessons-learned-from-the-first-hack-omaha/foodfight2/" data-orig-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg" data-orig-size="2560,1920" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Nexus S 4G&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1334352761&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;3.43&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;,&quot;latitude&quot;:&quot;41.2592597&quot;,&quot;longitude&quot;:&quot;-95.9335712&quot;}" data-image-title="foodfight2" data-image-description="" data-image-caption="" data-large-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg?w=830" class="size-full wp-image-160" title="foodfight2" src="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg?w=830" alt=""   srcset="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg?w=460&amp;h=345 460w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg?w=920&amp;h=690 920w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg?w=150&amp;h=113 150w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg?w=300&amp;h=225 300w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg?w=768&amp;h=576 768w" sizes="(max-width: 460px) 100vw, 460px" /></a><p id="caption-attachment-160" class="wp-caption-text">The team on Friday evening</p></div>
<ul>
<li><strong>Don&#8217;t let your VCS hold you back.</strong> We decided to use <a href="https://github.com/organizations/HackOmahaFoodInspectors/">GitHub</a> to host the source, but only half the team had any git experience. Rather than try to learn a crash-course on git, they used a shared Dropbox folder as the repository location.</li>
<li><strong>Colocation isn&#8217;t necessary</strong>. We spent most of Saturday working from our individual houses, and we stood up a Google+ Hangout to help. The video chat and screensharing worked really smoothly. We probably had an advantage over the folks who worked at the hackathon venue, as wi-fi was spotty the whole weekend.</li>
<li><strong>We could have been more ambitious with our tech stack.</strong> We were familiar with almost every piece of what we built. Then I look at <a href="http://www.omahabountyhunter.com/">Omaha Bounty Hunter</a>, which was developed against a <strong><a href="http://www.meteor.com/">five-day old JavaScript framework</a></strong>, and I feel a little sad that we didn&#8217;t try something farther out there. At the very least, we could have tried a document database like Mongo, given that nothing we were doing was relational.</li>
<li><strong>Keep projects small and focused</strong>. We were essentially finished with our app by 6pm on Saturday. After that, we spent the rest of the time play testing, tweaking the design, and adding features like analytics, win/loss counting, etc. But having a small, achievable project meant we weren&#8217;t scrambling to get basic functionality working at the last minute.</li>
</ul>
<div data-shortcode="caption" id="attachment_161" style="width: 470px" class="wp-caption aligncenter"><a href="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg"><img aria-describedby="caption-attachment-161" loading="lazy" data-attachment-id="161" data-permalink="https://matthewsteele.wordpress.com/2012/04/19/lessons-learned-from-the-first-hack-omaha/foodfight3/" data-orig-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg" data-orig-size="551,400" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="foodfight3" data-image-description="" data-image-caption="&lt;p&gt;The demo session&lt;/p&gt;
" data-large-file="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg?w=551" class="size-full wp-image-161" title="foodfight3" src="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg?w=830" alt=""   srcset="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg?w=460&amp;h=334 460w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg?w=150&amp;h=109 150w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg?w=300&amp;h=218 300w, https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg 551w" sizes="(max-width: 460px) 100vw, 460px" /></a><p id="caption-attachment-161" class="wp-caption-text">The demo session</p></div>
<ul>
<li><strong>I don&#8217;t know Ruby very well</strong>. I kept running into syntax issues, like trying to return early out of a block (which isn&#8217;t allowed). I also spent a ton of time learning the methods on Enumerable, and figuring out how attributes in ActiveRecord models function. You only have to look at the number of <code>Hash.new</code> and <code>Array.new</code> in the codebase to see that we&#8217;re still noobs at this.</li>
<li><strong>Untested code becomes legacy code, fast</strong>. We cranked out the services with nary a unit test in sight. If it didn&#8217;t cause a syntax error, we shipped it. By the end, all code was making into Sinatra routes, which meant we had to reload our web app each time we wanted to change a group_by, or see if our ActiveRecord query was right. This slowed us down noticeably, even by day 3 of the project.</li>
<li><strong>Not all prepwork is fruitful</strong>. I tried to learn two new technologies before the hackathon: <a href="http://neo4j.org/">Neo4J</a> and <a href="http://www.postgis.org/">PostGIS</a>. I thought each might be helpful, and I spent weeks trying to learn just enough to fake knowing it for a weekend. But I ended up using neither. Rather, a 2-hour session with <a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a> proved far more useful than anything else I knew.</li>
</ul>
<p>Much thanks to <a href="https://twitter.com/#!/steven_a_s">Steve</a>, <a href="https://twitter.com/#!/fullycroisened">Nate</a> and <a href="https://twitter.com/#!/mikeask">Mike</a> for putting up with me this weekend. And many, many thanks to <a href="https://twitter.com/mattwynn">Matt</a> for setting up the event. I&#8217;m ready to do it again.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2012/04/19/lessons-learned-from-the-first-hack-omaha/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">144</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>

		<media:content url="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight1.jpg" medium="image">
			<media:title type="html">foodfight1</media:title>
		</media:content>

		<media:content url="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight2.jpg" medium="image">
			<media:title type="html">foodfight2</media:title>
		</media:content>

		<media:content url="https://matthewsteele.wordpress.com/wp-content/uploads/2012/04/foodfight3.jpg" medium="image">
			<media:title type="html">foodfight3</media:title>
		</media:content>
	</item>
		<item>
		<title>I have a cameo in The Clean Coder</title>
		<link>https://matthewsteele.wordpress.com/2011/11/04/i-have-a-cameo-in-the-clean-coder/</link>
					<comments>https://matthewsteele.wordpress.com/2011/11/04/i-have-a-cameo-in-the-clean-coder/#comments</comments>
		
		<dc:creator><![CDATA[matthewsteele]]></dc:creator>
		<pubDate>Fri, 04 Nov 2011 17:43:30 +0000</pubDate>
				<category><![CDATA[Code]]></category>
		<guid isPermaLink="false">http://matthewsteele.wordpress.com/?p=141</guid>

					<description><![CDATA[On my way back from India, I finally had a chance to read The Clean Coder, Uncle Bob&#8217;s latest book. It was something I&#8217;d been personally wanting to do for a while now; having been introduced to the tenants of software craftsmanship, professionalism, and test-driven-design as part of reading his previous book, Clean Code. It also [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>On my way back from India, I finally had a chance to read <a href="http://www.amazon.com/gp/product/0137081073/ref=pd_lpo_k2_dp_sr_1?pf_rd_p=486539851&amp;pf_rd_s=lpo-top-stripe-1&amp;pf_rd_t=201&amp;pf_rd_i=0132350882&amp;pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_r=0T5SQJEBB1E869YQFG4E">The Clean Coder</a>, Uncle Bob&#8217;s latest book. It was something I&#8217;d been personally wanting to do for a while now; having been introduced to the tenants of software craftsmanship, professionalism, and test-driven-design as part of reading his previous book, Clean Code.</p>
<p>It also was something I&#8217;d wanted to do because last year, my company brought in Robert C. Martin for a two-day course on TDD for me and a dozen other employees. And it was amazing. My colleague Shawn compared it to &#8220;getting private guitar lessons from Jimi Hendrix&#8221;.</p>
<p><a href="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg"><img loading="lazy" data-attachment-id="149" data-permalink="https://matthewsteele.wordpress.com/2011/11/04/i-have-a-cameo-in-the-clean-coder/img_0660/" data-orig-file="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg" data-orig-size="1600,1200" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="IMG_0660" data-image-description="" data-image-caption="" data-large-file="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg?w=830" class="aligncenter size-full wp-image-149" title="IMG_0660" src="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg?w=830" alt=""   srcset="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg?w=460&amp;h=345 460w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg?w=920&amp;h=690 920w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg?w=150&amp;h=113 150w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg?w=300&amp;h=225 300w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg?w=768&amp;h=576 768w" sizes="(max-width: 460px) 100vw, 460px" /></a></p>
<p>To my delight, this came up as an anecdote in Chapter 6 of his book, &#8220;Practice&#8221;:</p>
<blockquote><p>Since then many programmers have adopted a martial arts metaphor for their practice sessions. The name Coding Dojo seems to have stuck. Sometimes a group of programmers will meet and practice together just like martial artists do. At other times, programmers will practice solo, again as martial artists do.</p>
<p><strong>About a year ago I was teaching a group of developers in Omaha. At lunch they invited me to join their Coding Dojo. I watched as twenty developers opened their laptops and, keystroke by keystroke, followed along with the leader who was doing The Bowling Game Kata.</strong></p></blockquote>
<p>Reading this on the plane, I couldn&#8217;t help but smile. Uncle Bob has had a tremendous affect on my development style and coding habits, so I&#8217;m glad to hear that I had an influence on him, however small that might be.</p>
<p><a href="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg"><img loading="lazy" data-attachment-id="146" data-permalink="https://matthewsteele.wordpress.com/2011/11/04/i-have-a-cameo-in-the-clean-coder/img_20111027_171005/" data-orig-file="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg" data-orig-size="1920,2560" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;2.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Nexus S 4G&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1319735405&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;3.43&quot;,&quot;iso&quot;:&quot;100&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;,&quot;latitude&quot;:&quot;41.276388888889&quot;,&quot;longitude&quot;:&quot;-95.993888888889&quot;}" data-image-title="IMG_20111027_171005" data-image-description="" data-image-caption="" data-large-file="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg?w=768" class="aligncenter size-full wp-image-146" title="IMG_20111027_171005" src="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg?w=830" alt=""   srcset="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg?w=460&amp;h=613 460w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg?w=920&amp;h=1227 920w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg?w=113&amp;h=150 113w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg?w=225&amp;h=300 225w, https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg?w=768&amp;h=1024 768w" sizes="(max-width: 460px) 100vw, 460px" /></a></p>
<p>Postscript: At the start of the session, we each introduced ourselves and explained what we wanted to get out of the course. <a href="http://twitter.com/JCake09">Jessica</a>&#8216;s conversation went like this:</p>
<blockquote><p><strong>Jessica</strong>: My name&#8217;s Jessica Codr [pronounced &#8220;coder&#8221;]</p>
<p><strong>Uncle Bob</strong>: [pause] That&#8217;s the best last name I&#8217;ve ever heard. I need to put your name in my next book!</p></blockquote>
<p>I think this counts.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matthewsteele.wordpress.com/2011/11/04/i-have-a-cameo-in-the-clean-coder/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">141</post-id>
		<media:content url="https://0.gravatar.com/avatar/9bd36a4c288a3ee3f4c3fbd6c0ec2c3348df75999e44efeda0c36b250927c460?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">matthewsteele</media:title>
		</media:content>

		<media:content url="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_0660.jpg" medium="image">
			<media:title type="html">IMG_0660</media:title>
		</media:content>

		<media:content url="https://matthewsteele.wordpress.com/wp-content/uploads/2011/10/img_20111027_171005.jpg" medium="image">
			<media:title type="html">IMG_20111027_171005</media:title>
		</media:content>
	</item>
	</channel>
</rss>
