<?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></title>
	<atom:link href="http://davidpthomas.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://davidpthomas.wordpress.com</link>
	<description></description>
	<lastBuildDate>Fri, 30 Dec 2011 06:36:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='davidpthomas.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/aeac56f51e14c8d4484f4271990f1310?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title></title>
		<link>http://davidpthomas.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://davidpthomas.wordpress.com/osd.xml" title="" />
	<atom:link rel='hub' href='http://davidpthomas.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Happy 2012</title>
		<link>http://davidpthomas.wordpress.com/2011/12/30/happy-2012/</link>
		<comments>http://davidpthomas.wordpress.com/2011/12/30/happy-2012/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 06:36:03 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=709</guid>
		<description><![CDATA[if ( Minecraft == Twitter ) { Now what? }<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=709&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>if ( Minecraft == Twitter ) {</p>
<p>Now what?</p>
<p>}</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/709/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/709/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/709/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=709&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2011/12/30/happy-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>
	</item>
		<item>
		<title>[r]evolving architecture</title>
		<link>http://davidpthomas.wordpress.com/2011/10/18/revolving-architecture/</link>
		<comments>http://davidpthomas.wordpress.com/2011/10/18/revolving-architecture/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 04:17:26 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=695</guid>
		<description><![CDATA[Over the last few months I have been deep in my latest VIM integration (announcement coming soon) written with 95% ruby (core) and 5% vim (wrapper).  At this point in it&#8217;s development I have proved out the functionality for vim-ruby communication, key mappings, data display, CRUD operations, exception handling, logging, and most importantly, aspects of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=695&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over the last few months I have been deep in my latest VIM integration (announcement coming soon) written with 95% ruby (core) and 5% vim (wrapper).  At this point in it&#8217;s development I have proved out the functionality for vim-ruby communication, key mappings, data display, CRUD operations, exception handling, logging, and most importantly, aspects of (mouse-less :) usability.  Now, there is clear line of sight to start building functionality at a very rapid pace.  However, I am forcing myself to stop. cold.</p>
<h2>Stop. Think. Refactor.</h2>
<p>Why stop?  To stop and embrace the evolutionary aspect of designing the architecture.   If I continue, I run the risk of building 10-20x more code on top of user paths with incomplete exception handling, lots of FIXME and TODOs, and quite frankly, various areas with fairly good but really just prototype code.   The existing code is not a loss.  Rather is was a series of experiments; &#8216;successful&#8217; experiments.  Even the failures were a success.  And I refactored a lot along the way, so the current body of code is still quite valuable.  But it&#8217;s time to inspect.</p>
<h3>Example:  Loading ruby classes.</h3>
<p>I struggled a lot with LOADPATH visibility in the ruby runtime embedded inside vim.  If you &#8216;require&#8217; a file in your ruby class, it tried to open that class file relative to the current directory where you&#8217;re generally editing &#8211; not your vim plugin lib path.   This actually turned out to be OK because I started to just &#8216;require&#8217; all the files up front.  But I had to register the names manually, load base classes before subclasses, and I didn&#8217;t want to load the universe of classes in case the plugin failed to load (e.g. remote service not available).</p>
<p><strong><em>Refactor:</em> This weekend I was surfing the ruby Kernel API and was reminded of &#8216;autoload&#8217; to simply register the files to load only if the Class/Module is actually referenced.  I turned about 20 lines of code, located in 2 files, with nested conditions, into the following solution that relies on the [Rails-like] convention where camel-case class names match underscore filenames:</strong></p>
<pre><span style="color:#0000ff;"> 53</span>   <span style="color:#999999;"># Pre-register ALL ruby files to be loaded on-demand^</span>
<span style="color:#0000ff;"> 54</span>   <span style="color:#999999;"># convention: underscore filename =&gt; camelized module^</span>
<span style="color:#0000ff;"> 55</span>   <span style="color:#999999;"># example: update_task_todo_controller.rb --&gt; :UpdateTaskTodoController^</span>
<span style="color:#0000ff;"> 56</span>   <strong><span style="color:#333333;">rbfiles = File.join(VIM::evaluate('g:rally_lib_dir'), "ruby", "**", "*.rb")^</span></strong>
<span style="color:#0000ff;"> 57</span>   <strong><span style="color:#ff9900;">Dir.glob(rbfiles).each do |filename_abs|^</span></strong>
<span style="color:#0000ff;"> 58</span>     <span style="color:#339966;">filename_noext = File.basename(filename_abs).gsub!(/\.rb$/, '')  # extract name of file, no extension</span>
<span style="color:#0000ff;"> 59</span>     <span style="color:#339966;">modname = filename_noext.gsub(/(^|_)(.)/) {$2.upcase}  # camelize filename^</span>
 <span style="color:#0000ff;">60</span>     <span style="color:#ff0000;"><strong>autoload(modname, filename_abs)^</strong></span>
<span style="color:#0000ff;"> 61</span>   <strong><span style="color:#ff9900;">end^</span></strong></pre>
<h3>Example: Global variables.</h3>
<p>Yes.  I know.  I felt dirty at the mere thought of using a&#8230; glo&#8230; glob&#8230; global variable.   But after looking at the code, almost 90% of it used the same variable that was passed around EVERYWHERE.   It was the connection class to the remote service that also served as a cache&#8230; the whole plugin relies on this connection across the board.  Now the initial architecture is fairly MVC&#8230; but this means that the controller grabs the connection, passes it to the model, the model passes it to utility classes.  And only the handful of view classes are immune.   This also meant that automated testing would require&#8230; ugh&#8230; mocking a connection and passing to all test classes.</p>
<p><strong><em>Refactor</em>:  I created a single top-level global variable ($conn).  This cleaned up SO much of the API that using the global variable actually felt&#8230; clean.   Now I&#8217;m not advocating that it was the most pure approach, but from simplification of the APIs and code&#8230; it was a great!</strong></p>
<pre><span style="color:#ff0000;">68   $conn = ConnectionController.new.conn^</span></pre>
<h3>Example: Testable ruby.</h3>
<p>In vim, if you want to envoke ruby code, you do this:</p>
<pre><span style="color:#ff0000;">10 ruby &lt;&lt; FOO</span>
<span style="color:#ff0000;">11 puts "bar"</span>
<span style="color:#ff0000;">12 FOO</span></pre>
<p>That only makes your vimscript file get messy by having so much ruby code mixed with vimscript.  So instead, you can tuck those lines above into foo.rb and within vim do:</p>
<pre><span style="color:#ff0000;">10 runtime /path/to/foo.rb</span></pre>
<p>But that&#8217;s the problem!  Look at your ruby file.  The file is flanked by the vim/ruby load syntax &#8220;ruby &lt;&lt; FOO &#8230;. FOO&#8221;.   So you can&#8217;t load that foo.rb file within ruby for independent&#8230; TESTING!   I had a much bigger problem writing tons of ruby classes that couldn&#8217;t be tested (easily) than dealing with a single global variable.</p>
<p><strong><em>Refactor</em>: Turns out that the first example above solved this issue entirely.  By using autoload() to preload the files, those files are written entirely in pure ruby.  Solved.  Now all classes can be loaded and independently tested.</strong></p>
<h2>Summary</h2>
<p>I want to also add more exception handling for core activities,  support for trap&#8217;ping interrupts (e.g. user hits CTRL-C during network activity), and review the MVC flows that currently require 5 files (controller, model, view, formatter, display manager).</p>
<p>I&#8217;ll &#8220;lose&#8221; about 2 weeks doing this architecture refactor.    But I&#8217;m confident that it&#8217;ll make adding features 2-3x faster and the overall codebase will be maintainable.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/695/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/695/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/695/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/695/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/695/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/695/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/695/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/695/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/695/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/695/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/695/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/695/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/695/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/695/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=695&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2011/10/18/revolving-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby or Vim.  Who&#8217;s segFAULT is it?</title>
		<link>http://davidpthomas.wordpress.com/2011/07/31/its-not-my-segfault/</link>
		<comments>http://davidpthomas.wordpress.com/2011/07/31/its-not-my-segfault/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 23:04:21 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=685</guid>
		<description><![CDATA[Ah the joys of programming.   Like spending 3 hours tracking down an elusive segfault :( Today I managed to crash Vim with a custom ruby-based plugin I&#8217;m writing.   I can&#8217;t find any solutions on the web and don&#8217;t have time for a full day of gdb coredump debugging but managed to narrow down the culprit. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=685&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ah the joys of programming.   Like spending 3 hours tracking down an elusive segfault :(</p>
<p>Today I managed to crash Vim with a custom ruby-based plugin I&#8217;m writing.   I can&#8217;t find any solutions on the web and don&#8217;t have time for a full day of gdb coredump debugging but managed to narrow down the culprit.   Posting this in case someone else encounters a similar situation &#8212; and drop me a line if you do!</p>
<p>Here is the helpful information that Vim spit out:</p>
<pre>Vim: Caught deadly signal SEGV
Vim: Finished.</pre>
<p>This is the ruby code initiating the segfault (line 27):</p>
<pre>26   c.each_index do |i|^
27     VIM::Buffer.current.append(i, c[i])^
28   end^</pre>
<p>Here is the vimscript used to create a new buffer into which the above line tries to add new lines:</p>
<pre>241   " launch new buffer^
242   exec "silent botright new"^
243   " create a 'scratch' buffer that cannot be saved^
244   setlocal nobuflisted^
245   setlocal noswapfile^
246   setlocal buftype=nofile^
<span style="color:#ff0000;">247   setlocal bufhidden=wipe^</span>
248   setlocal nolist^
249   setlocal nonumber^
250   setlocal foldcolumn=0 nofoldenable^
251   setlocal showbreak=&gt;&gt;^
252   setlocal wrap^
253   if has('syntax') | setlocal syntax=rally | endif^</pre>
<p>Turns out that removing the <span style="color:#ff0000;">bufhidden=wipe</span> setting solves the segfault crash.  So something with the ruby VIM::Buffer.current is conflicting with that setting.   I&#8217;m not sure what&#8230; but at least i&#8217;m not choking anymore.</p>
<p>I&#8217;ll followup if I get clarity on this situation&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/685/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/685/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/685/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/685/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/685/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/685/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/685/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/685/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/685/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/685/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/685/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/685/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/685/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/685/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=685&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2011/07/31/its-not-my-segfault/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>
	</item>
		<item>
		<title>Weekend @ JPL</title>
		<link>http://davidpthomas.wordpress.com/2011/05/16/jpl/</link>
		<comments>http://davidpthomas.wordpress.com/2011/05/16/jpl/#comments</comments>
		<pubDate>Mon, 16 May 2011 00:39:18 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=668</guid>
		<description><![CDATA[Destination. JPL. Tyler and I took a weekend trip from Santa Cruz to Pasadena to the annual JPL openhouse. Event: $0. Hotels, Gas, Food: $350. Father &#38; Son weekend: Priceless. While the major attraction was the Mars Rover and various test versions, we had a blast in the fabrication facility looking at the tools and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=668&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://davidpthomas.files.wordpress.com/2011/05/jpl12.jpg"><img class="alignright size-medium wp-image-674" title="Dad &amp; Tyler @ JPL" src="http://davidpthomas.files.wordpress.com/2011/05/jpl12-e1306630089703.jpg?w=224&#038;h=300" alt="" width="224" height="300" /></a>Destination. JPL.</p>
<p>Tyler and I took a weekend trip from Santa Cruz to Pasadena to the annual JPL openhouse.</p>
<p><strong>Event:</strong> $0.</p>
<p><strong>Hotels, Gas, Food:</strong> $350.</p>
<p><strong>Father &amp; Son weekend:</strong> Priceless.</p>
<p>While the major attraction was the Mars Rover and various test versions, we had a blast in the fabrication facility looking at the tools and 3D printers.</p>
<p><a href="http://davidpthomas.files.wordpress.com/2011/05/jpl21.jpg"><img class="alignleft size-medium wp-image-675" title="Tyler @ Fabrication Facility" src="http://davidpthomas.files.wordpress.com/2011/05/jpl21-e1306630162778.jpg?w=224&#038;h=300" alt="" width="224" height="300" /></a></p>
<p><a href="http://davidpthomas.files.wordpress.com/2011/05/jpl3.jpg"><img class="alignright size-medium wp-image-676" title="Example Rover" src="http://davidpthomas.files.wordpress.com/2011/05/jpl3-e1306630203363.jpg?w=224&#038;h=300" alt="" width="224" height="300" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/668/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/668/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/668/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/668/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/668/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/668/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/668/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/668/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/668/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/668/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/668/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/668/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/668/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/668/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=668&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2011/05/16/jpl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2011/05/jpl12-e1306630089703.jpg?w=224" medium="image">
			<media:title type="html">Dad &#38; Tyler @ JPL</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2011/05/jpl21-e1306630162778.jpg?w=224" medium="image">
			<media:title type="html">Tyler @ Fabrication Facility</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2011/05/jpl3-e1306630203363.jpg?w=224" medium="image">
			<media:title type="html">Example Rover</media:title>
		</media:content>
	</item>
		<item>
		<title>continuous emPAVEMENT</title>
		<link>http://davidpthomas.wordpress.com/2011/04/11/continuous-empavement/</link>
		<comments>http://davidpthomas.wordpress.com/2011/04/11/continuous-empavement/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 00:26:39 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=608</guid>
		<description><![CDATA[Santa Cruz 1/2 marathon. round 3. New personal record: 1hr 46min 48sec &#8211; 8:06/mi.  Nuts!  [results] I&#8217;ve been working out regularly. Not just for this event, but to stay in shape and in good spirit. 15mi/wk on average. With 2 kids loving my attention, getting more than an hour away a day is tough so [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=608&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_33.png"><img class="size-full wp-image-635 aligncenter" title="Santa Cruz Half Marathon, 2011" src="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_33.png?w=500" alt=""   /></a></p>
<p>Santa Cruz 1/2 marathon. round 3.</p>
<p>New personal record<span style="color:#000000;">: 1hr 46min 48sec &#8211; 8:06/mi.  </span><span style="color:#ff0000;">Nuts!</span>  [<a href="http://www.svetiming.com/events/Santa-Cruz-Half-Marathon/results">results</a>]</p>
<p><em><a href="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_14.png"><img class="size-medium wp-image-639 alignleft" style="padding-right:10px;" title="Santa Cruz Half Marathon, 2011" src="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_14.png?w=137&#038;h=300" alt="" width="137" height="300" /></a></em>I&#8217;ve been working out regularly. Not just for this event, but to stay in shape and in good spirit. 15mi/wk on average. With 2 kids loving my attention, getting more than an hour away a day is tough so 5 mile runs will have to do. <em></em></p>
<p><a href="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_22.png"><img class="alignright size-medium wp-image-640" style="padding-left:10px;" title="Santa Cruz Half Marathon, 2011" src="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_22.png?w=143&#038;h=300" alt="" width="143" height="300" /></a><em>Tip: I often need &#8220;mental time&#8221; at work to prepare for presentations or challenge value / time spent / waste on tasks de jour&#8230;. doing this while running [along the ocean] is very effective.</em></p>
<p><a href="http://en.wikipedia.org/wiki/Kaizen">Kaizen</a>.  Consistently improving your personal best record is a double edge sword.  One one hand, you conquered &#8216;it.&#8217;  On the other hand, you know that next year just got that much more serious. How serious?  Enter the 7min window.</p>
<p>Next year, the challenge is 7min/ 50sec per mile.  Game on.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/608/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=608&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2011/04/11/continuous-empavement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_33.png" medium="image">
			<media:title type="html">Santa Cruz Half Marathon, 2011</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_14.png?w=137" medium="image">
			<media:title type="html">Santa Cruz Half Marathon, 2011</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2011/05/schalf_2011_22.png?w=143" medium="image">
			<media:title type="html">Santa Cruz Half Marathon, 2011</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile Tour &#8211; Let us CLARA round MESA for you</title>
		<link>http://davidpthomas.wordpress.com/2010/10/12/agile-tour-let-me-clara-round-mesa-for-you/</link>
		<comments>http://davidpthomas.wordpress.com/2010/10/12/agile-tour-let-me-clara-round-mesa-for-you/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 05:27:49 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=567</guid>
		<description><![CDATA[This week I spoke at both &#8216;Agile Comes to You&#8216; seminars in Santa Clara, CA and Costa Mesa, CA.  Sponsored by the Agile Journal and Software Quality Engineering (SQE), these events bring together AccuRev, Rally Software, Urbancode, and BigVisible to share stories and best practices when starting, managing, or scaling Agile teams. Best of all, the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=567&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This week I spoke at both <a title="Agile Comes To You" href="http://www.accurev.com/blog/2010/09/01/agile-comes-to-you-seminars-fall-schedule/" target="_blank">&#8216;Agile Comes to You</a>&#8216; seminars in Santa Clara, CA and Costa Mesa, CA.  Sponsored by the <a title="Agile Journal" href="http://www.agilejournal.com/" target="_blank">Agile Journal</a> and <a title="Software Quality Engineering" href="http://www.sqe.com/" target="_blank">Software Quality Engineering (SQE)</a>, these events bring together <a title="AccuRev - Software Configuration Management" href="http://www.accurev.com" target="_blank">AccuRev</a>, <a title="Rally Software - Scaling Software Agility" href="http://www.rallydev.com/" target="_blank">Rally Software</a>, <a title="Urbancode - Build and Deploy" href="http://www.anthillpro.com/html/default.html" target="_blank">Urbancod</a>e, and <a title="Big Visible - Agile Coaching" href="http://www.bigvisible.com/" target="_blank">BigVisible </a>to share stories and best practices when starting, managing, or scaling Agile teams.<br />
<div id="attachment_570" class="wp-caption alignright" style="width: 310px"><a href="http://davidpthomas.files.wordpress.com/2010/10/img_1371.jpg"><img class="size-medium wp-image-570 " title="Presenter: David P Thomas" src="http://davidpthomas.files.wordpress.com/2010/10/img_1371.jpg?w=300&#038;h=225" alt="Presenter: David P Thomas" width="300" height="225" /></a><p class="wp-caption-text">David P Thomas - Costa Mesa - 115 attendees</p></div></p>
<p>Best of all, the 2nd half of each seminar is dedicated to demonstrating the latest software tools on the market to support Agile teams.</p>
<p>As a software engineer by trade, I&#8217;m always looking for reusable patterns.   With a focus on software development (and given a 20-min timebox ;) I discussed and demonstrated the following three (3) patterns suited for Agile teams.</p>
<p><strong>Task-based Development</strong> &#8211; When it comes to tracking software changes, traditionally we focused on specific file versions, revision numbers, or commit transactions.  In this manner, you have to track the sets of files or the non-sequential, often multiple, commit transaction IDs, respectively.  This is horribly manual, fraught with error and even when using BugId in the commit comment, is only a reporting tool at best.  With Task-based development, you want to abstract those details and work at a higher level &#8212; a level where you don&#8217;t care how many files, how many commit transactions, or even how many people worked on a task (but you do care -who- did -what-).  Rather, you want to track changes as a logical unit of work, or a Task.   AccuRev&#8217;s change package facility ties directly to your agile project management (e.g. Rally) or issue tracking system (e.g. Jira, Bugzilla, etc) and associates the tasks/issues/defects to a working set of files.  You can promote as many files, as many times, from as many people and AccuRev tracks the working set.  Furthermore, beyond just reporting, the change package can be delivered as a whole unit to other baselines (e.g. bugfix releases, customer specific releases, future development lines, etc).</p>
<p><strong>Workflow and Multi-stage Continuous Integration</strong> &#8211; The most important aspect of workflow (IMO) for Agile teams is &#8216;just enough&#8217; stabilility.  While agile teams innately desire to integrate with other teams, early and often, you still need to provide a buffer &#8211; especially if you have follow-the-sun development.  For example, without a Team-level buffer, a single commit from one contributor can destabilize multiple teams.  With a good workflow in place, teams can co-integrate on the order of hours or days and, most critically, know that the integrated changes are &#8220;good.&#8221;<br />
<div id="attachment_571" class="wp-caption alignright" style="width: 310px"><a href="http://davidpthomas.files.wordpress.com/2010/10/img_1374.jpg"><img class="size-medium wp-image-571 " title="Presenter: David P Thomas" src="http://davidpthomas.files.wordpress.com/2010/10/img_1374.jpg?w=300&#038;h=225" alt="Presenter: David P Thomas" width="300" height="225" /></a><p class="wp-caption-text">David P Thomas - Costa Mesa - Sharing Experiences</p></div></p>
<p>The idea is to organize teams such that if someone breaks the build, they only break it for their team &#8212; not other teams.   If a team deems their changes worthy, they can share with all other teams.   Determining worthiness of a change is the job of Continuous Integration (CI).  You want to be running CI not only at the shared integration area for all teams, but also at the individual team level.  The value of multi-stage CI is that changes are validated at a lower level before they progress to a higher level.  Also, the amount or rigor of testing at a lower level may be less than at a higher level, especially if test executions take hours or days to complete (e.g. full regression or performance tests).</p>
<p>The concept of moving changes along a workflow isn&#8217;t new.  Traditionally&#8230;.changes on a team branch get merged to a shared integration branch.  Those changes get merged to a QA branch, etc.   The root problem here is using  branches&#8230; as <em>each</em> branch incurs manual merging.   Instead, AccuRev uses inheritance-based streams that allow changes to implicitly flow from parent stream to child.   The parent-child nature of streams lets you build an n-level promotion hierarchy from child to parent where individuals are at the leaves of the tree, organized by team, combined at the team-of-teams level, then queued for end of iteration review.  As changes are promoted up the tree, they automatically flow down to corresponding children.    This is a beautiful combination of stability and continuous [team] integration.</p>
<p><strong>Private Sandbox </strong>- With the spotlight on the team, we can&#8217;t entirely forget about supporting the individual contributors.  Private sandboxes are an individual&#8217;s cornerstone for sanity.  By tracking private commit of file and directory changes, savepoints are marked that can be compared over time or even reverted back to if a current task is deemed out of scope.   The sandbox is also tracking refactoring and namespace changes.  For example, in Java, if you move and/or rename a class, that will likely impact an entire set of files that import the original (unless you are lazy and use import * :)   It is important to track these changes privately especially if you ever need to revert back &#8212;the entire set&#8212; to a previous state&#8230; all without impacting <em>anyone</em> else.  Private sandboxes should also store those changes on the server thus minimizing the requirement to manage, backup, or lose sleep over a given development machine.</p>
<p>It was hard choosing only three (3) patterns but those are the ones I see frequently in practice.  Of the set, I am particularly fond of Task-based development as very few tools support this and it is vital to tracking, delivering, and reporting on logical units of work, rather than just sets of files.</p>
<p>I really enjoy participating in these seminars and especially meeting new folks.   I encourage anyone involved in software development to attend one of these seminars.  They are a great networking event and you get to see some of the latest software in action!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/567/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/567/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/567/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=567&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2010/10/12/agile-tour-let-me-clara-round-mesa-for-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2010/10/img_1371.jpg?w=300" medium="image">
			<media:title type="html">Presenter: David P Thomas</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2010/10/img_1374.jpg?w=300" medium="image">
			<media:title type="html">Presenter: David P Thomas</media:title>
		</media:content>
	</item>
		<item>
		<title>MAILstrom</title>
		<link>http://davidpthomas.wordpress.com/2010/07/02/mailstrom/</link>
		<comments>http://davidpthomas.wordpress.com/2010/07/02/mailstrom/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 07:04:46 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[hacks]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=559</guid>
		<description><![CDATA[Sending email from a (rails) web application? Getting an error like this? Net::SMTPFatalError (555 5.5.2 Syntax error. x9sm5202508waj.3 &#8220;Silly Dad. chevrons (&#60;) are for kids!&#8221; That&#8217;s what my son would say. bad code: 6 from &#8220;From User &#60;from@domain.com&#62;&#8220; good code: 6 from &#8220;From User (from@domain.com)&#8221; HTH _ dave<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=559&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sending email from a (rails) web application?  Getting an error like this? Net::SMTPFatalError (555 5.5.2 Syntax error. x9sm5202508waj.3</p>
<p>&#8220;Silly Dad.  chevrons (&lt;) are for kids!&#8221;   That&#8217;s what <a href="http://www.youtube.com/watch?v=44XHW7KwycM" target="_blank">my son</a> would say.</p>
<p><span style="color:#ff0000;">bad code:</span><br />
6     from          &#8220;From User <strong>&lt;</strong>from@domain.com<strong>&gt;</strong>&#8220;<br />
<strong><span style="color:#339966;">good code:</span></strong><br />
6     from          &#8220;From User (from@domain.com)&#8221;</p>
<p>HTH _ dave</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/559/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/559/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/559/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=559&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2010/07/02/mailstrom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>
	</item>
		<item>
		<title>kill /bin/sh[opaholic]</title>
		<link>http://davidpthomas.wordpress.com/2010/06/13/kill-binshopaholic/</link>
		<comments>http://davidpthomas.wordpress.com/2010/06/13/kill-binshopaholic/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 04:23:08 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[hacks]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=554</guid>
		<description><![CDATA[I found this gem deep in the OSCommerce source. Huh? What is so different between a shopping cart containing 100,000 items, versus one that has a mere 85,000? Gotta love hardcoding. 30 if ($cart-&#62;count_contents() &#62; 100000){ $cart-&#62;reset(); }^ Did you see the code comments? I pasted those too. ;(<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=554&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I found this gem deep in the OSCommerce source.  Huh?   What is so different between a shopping cart containing 100,000 items, versus one that has a mere 85,000?   Gotta love hardcoding.</p>
<p><code> 30 if ($cart-&gt;count_contents() &gt; 100000){ $cart-&gt;reset(); }^</code></p>
<p>Did you see the code comments?   I pasted those too. ;(</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/554/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=554&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2010/06/13/kill-binshopaholic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>
	</item>
		<item>
		<title>ubuntu 10.04 postREgres</title>
		<link>http://davidpthomas.wordpress.com/2010/05/03/upgrading-ubuntu-postgres/</link>
		<comments>http://davidpthomas.wordpress.com/2010/05/03/upgrading-ubuntu-postgres/#comments</comments>
		<pubDate>Mon, 03 May 2010 04:46:01 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[hacks]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=549</guid>
		<description><![CDATA[Tonight I upgraded to ubuntu 10.04 (lucid lynx) from 9.10 (karmic koala). Install and configuration went well (Dell Latitude D630 dual grub boot Win7). I just ran into a problem starting postgres 8.4 in my development environment (this worked just fine on ubuntu 9.10). dthomas@dthomas-laptop:~$ sudo /etc/init.d/postgresql-8.4 start [sudo] password for dthomas: * Starting PostgreSQL [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=549&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tonight I upgraded to ubuntu 10.04 (lucid lynx) from 9.10 (karmic koala).   Install and configuration went well (Dell Latitude D630 dual grub boot Win7).</p>
<p>I just ran into a problem starting postgres 8.4 in my development environment (this worked just fine on ubuntu 9.10).</p>
<p><code>dthomas@dthomas-laptop:~$ sudo /etc/init.d/postgresql-8.4 start<br />
[sudo] password for dthomas:<br />
 * Starting PostgreSQL 8.4 database server                                       * The PostgreSQL server failed to start. Please check the log output:<br />
2010-05-02 21:30:24 PDT FATAL:  could not create shared memory segment: Invalid argument<br />
2010-05-02 21:30:24 PDT DETAIL:  Failed system call was shmget(key=5432001, size=36880384, 03600).<br />
2010-05-02 21:30:24 PDT HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 36880384 bytes), reduce PostgreSQL's shared_buffers parameter (currently 4096) and/or its max_connections parameter (currently 103).<br />
	If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.<br />
	The PostgreSQL documentation contains more information about shared memory configuration.<br />
                                                                         [fail]<br />
</code></p>
<p>I was able to fix this by changing the following in: /etc/postgresql/8.4/main/postgresql.conf</p>
<p><code><br />
106 #ORIG 10.04 UPGRADE FAILED shared_buffers = 32MB # min 128kB^<br />
107 shared_buffers = 16MB # min 128kB^<br />
</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/549/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=549&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2010/05/03/upgrading-ubuntu-postgres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>
	</item>
		<item>
		<title>But I&#8217;m not TYred!</title>
		<link>http://davidpthomas.wordpress.com/2010/05/02/but-im-not-tyred/</link>
		<comments>http://davidpthomas.wordpress.com/2010/05/02/but-im-not-tyred/#comments</comments>
		<pubDate>Sun, 02 May 2010 05:40:47 +0000</pubDate>
		<dc:creator>David Thomas</dc:creator>
				<category><![CDATA[family]]></category>

		<guid isPermaLink="false">http://davidpthomas.wordpress.com/?p=538</guid>
		<description><![CDATA[Today we purchased and installed Tyler&#8217;s new loft-style bed. As you can see, it has a killer slide on one side. Unseen on the opposite side is the ladder he climbs to go &#8220;one more time?&#8221;   He has a fearless (but not careless) sense of jumping and tumbling off things. Seen in this picture, this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=538&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today we purchased and installed Tyler&#8217;s new loft-style bed.   As you can see, it has a killer slide on one side.  Unseen on the opposite side is the ladder he climbs to go &#8220;one more time?&#8221;   <a href="http://davidpthomas.files.wordpress.com/2010/05/tyler_new_bed.jpg"><img class="alignright size-medium wp-image-539" title="Ty's New Bed" src="http://davidpthomas.files.wordpress.com/2010/05/tyler_new_bed.jpg?w=300&#038;h=224" alt="" width="300" height="224" /></a>  He has a fearless (but not careless) sense of jumping and tumbling off things.  Seen in this picture, this is only his 5th or 6th time going down and he&#8217;s already going <a href="http://en.wikipedia.org/wiki/Skeleton_%28sport%29">skeleton</a>!</p>
<p>Boy would I love to get the adult version of this bed ;)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/davidpthomas.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/davidpthomas.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/davidpthomas.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/davidpthomas.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/davidpthomas.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/davidpthomas.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/davidpthomas.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/davidpthomas.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/davidpthomas.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/davidpthomas.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/davidpthomas.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/davidpthomas.wordpress.com/538/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/davidpthomas.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/davidpthomas.wordpress.com/538/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=davidpthomas.wordpress.com&amp;blog=3435454&amp;post=538&amp;subd=davidpthomas&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://davidpthomas.wordpress.com/2010/05/02/but-im-not-tyred/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a2ac96168578a18921024b30825fa005?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">davidpthomas</media:title>
		</media:content>

		<media:content url="http://davidpthomas.files.wordpress.com/2010/05/tyler_new_bed.jpg?w=300" medium="image">
			<media:title type="html">Ty&#039;s New Bed</media:title>
		</media:content>
	</item>
	</channel>
</rss>
