<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Synthesis</title>
    <link>http://synthesis.sbecker.net/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>by Scott Becker</description>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sbecker/synthesis" type="application/rss+xml" /><item>
      <title>Agile JavaScript Testing</title>
      <description>&lt;p&gt;A couple weeks ago, I gave a talk at the &lt;a href="http://opensourcebridge.org/"&gt;Open Source Bridge&lt;/a&gt; conference in Portland Oregon on &lt;a href="http://opensourcebridge.org/sessions/139"&gt;Agile JavaScript Testing.&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;In this presentation, I first gave an overview of Test Driven Development for those front-end JS developers who might not have heard of it yet (!) and then the difference of &lt;span class="caps"&gt;TDD&lt;/span&gt; vs. Behavior Driven Development.&lt;/p&gt;


	&lt;p&gt;I then walked through some tools:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Screw.Unit, a nice &lt;span class="caps"&gt;BDD&lt;/span&gt; framework for JS that is quite similar to RSpec in Ruby land.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Blue Ridge, a plugin for rails that integrates Screw-Unit with Rhino and Env.js and some rake tasks to create a command-line driven headless (no-browser == fast) testing workflow.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;JS Test Driver, a project that mounts one or more browsers as slaves, and a command-line tool which notifies all the listening browsers to run tests and aggregates the results. Very cool!&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;In the actual presentation I even did some live coding examples of Blue Ridge and JS Test Driver, and they worked perfectly. Here are the slides from the talk:&lt;/p&gt;


&lt;div style="width:425px;text-align:left" id="__ss_1640321"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/joydivider/agile-javascript-testing" title="Agile JavaScript Testing"&gt;Agile JavaScript Testing&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jspresentation-090625150011-phpapp02&amp;#38;stripped_title=agile-javascript-testing" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=jspresentation-090625150011-phpapp02&amp;#38;stripped_title=agile-javascript-testing" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/joydivider"&gt;Scott Becker&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 16 Jul 2009 00:55:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:dce54ac8-d564-40ff-bdee-7c08168114cd</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/VB5ySUHC9zA/agile-javascript-testing</link>
      <category>Ruby on Rails</category>
      <category>Web Development</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2009/07/16/agile-javascript-testing</feedburner:origLink></item>
    <item>
      <title>Open Source Bridge</title>
      <description>&lt;p&gt;I submitted a proposal for Open Source Bridge, an ambitious, community-driven conference happening in Portland, Oregon from June 17th to the 19th. The deadline for submissions is today!&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://opensourcebridge.org/?ref=submit240"&gt;&lt;img src="http://opensourcebridge.org/badges/submit240.png" alt="I'm submitting a talk to Open Source Bridge - June 17–19, 2009 - Portland, OR" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 31 Mar 2009 14:56:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:7dceb237-71d1-44a5-988b-fbe9a3f53f1c</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/jaWJRhCiao8/open-source-bridge</link>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2009/03/31/open-source-bridge</feedburner:origLink></item>
    <item>
      <title>SproutCore Slides</title>
      <description>&lt;p&gt;Here are the slides for the presentation I gave the other week at the &lt;a href="http://pdxjs.com"&gt;Portland JavaScript Admirers&lt;/a&gt; meeting: &lt;a href="http://www.slideshare.net/joydivider/sproutcore-a-next-gen-javascript-framework"&gt;SproutCore &amp;#8211; A Next Generation JavaScript Framework.&lt;/a&gt; It is an overview of some of the key features I think make SproutCore unique and very useful. There was also video recorded which should hopefully appear online soon. I plan to do another SproutCore focused talk with a walkthrough of a full backend-connected application.&lt;/p&gt;


&lt;div style="width:425px;text-align:left" id="__ss_985060"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/joydivider/sproutcore-a-next-gen-javascript-framework" title="SproutCore - A Next Gen JavaScript Framework"&gt;SproutCore &amp;#8211; A Next Gen JavaScript Framework&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-1233686890613795-2&amp;#38;stripped_title=sproutcore-a-next-gen-javascript-framework" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation-1233686890613795-2&amp;#38;stripped_title=sproutcore-a-next-gen-javascript-framework" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/joydivider"&gt;Scott Becker&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 09 Feb 2009 09:48:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:af2c68d3-0645-4f7f-88b6-d22c5f483210</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/zaBzRJ9CRT4/sproutcore-slides</link>
      <category>Web Development</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2009/02/09/sproutcore-slides</feedburner:origLink></item>
    <item>
      <title>Starting Fresh, Without the Big Rewrite</title>
      <description>&lt;p&gt;If you&amp;#8217;re working on a project with a couple years of code under it&amp;#8217;s belt, you may have moments of desire to completely throw the whole thing out and start anew. But, if you&amp;#8217;re working for someone else, you know that your boss or client probably won&amp;#8217;t like that. After all,  he&amp;#8217;s paying you to finish feature A! But, you lament, feature A builds on top of feature B that already exists but is written in a terribly unidiomatic, pre-TDD, pre-REST way, way before you or someone else learned the dark arts of coding mastery. Legacy code,  argh!&lt;/p&gt;


	&lt;p&gt;So what should you do? What are your options? A) Ignore the problem and build the new feature on top of the existing badly written code. Watch things get even worse. B) Try to quickly fix the badly written code in-place so you can get on with it. Trigger cascading test failures, and palm your face. C) Start over and rewrite the entire project, get fired for being 6 months late on your estimate. None of these sound any good!&lt;/p&gt;


	&lt;p&gt;I think I may have found a solution that works for me, especially with Rails.&lt;/p&gt;


	&lt;p&gt;Start a fresh Rails project. Boom! It&amp;#8217;s fresh and clean. Now you have room to work. The beauty of Rails is how quick it is to get started. Choose the aspect of the project  you want to work on. Got some legacy code thats bugging you? &lt;span class="caps"&gt;TDD&lt;/span&gt;/BDD it from scratch,  the Right Way. The idiomatic, Rails Way. Once you get it to the point where it&amp;#8217;s working correctly and passing all tests, you can merge the new code into the main project, replacing the older, ugly, what-were-they-thinking legacy code that was getting in the way.&lt;/p&gt;


	&lt;p&gt;Now you can work in a clean environment and just focus on the problem at hand. This allows you to make progress quickly, and get rid of the old crap without having to completely start from scratch.&lt;/p&gt;</description>
      <pubDate>Sun, 11 Jan 2009 23:08:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:78b1769a-abf1-4c18-af3f-ee8fc5d93662</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/2a3iapdPh68/starting-fresh-without-the-big-rewrite</link>
      <category>Ruby on Rails</category>
      <category>Web Development</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2009/01/11/starting-fresh-without-the-big-rewrite</feedburner:origLink></item>
    <item>
      <title>New Years resolutions</title>
      <description>&lt;p&gt;Christmas is over, and I&amp;#8217;m already thinking about New Years resolutions.&lt;/p&gt;


	&lt;p&gt;So, for 2009:&lt;/p&gt;


	&lt;p&gt;take more risks&lt;br&gt;
don&amp;#8217;t play it as safe&lt;br&gt;
there are some limits:&lt;br&gt;
don&amp;#8217;t be stupid&lt;br&gt;
do acts of good&lt;/p&gt;


	&lt;p&gt;talk more, write more, read more&lt;br&gt;
put yourself out there&lt;br&gt;
hold yourself accountable to your goals&lt;br&gt;
by publicly stating them&lt;/p&gt;


	&lt;p&gt;do things in small steps,&lt;br&gt;
incremental goals towards the future&lt;br&gt;
stay focused&lt;br&gt;
be disciplined&lt;/p&gt;


	&lt;p&gt;aim to be early&lt;br&gt;
be consistent&lt;br&gt;
but consistently seek to randomize&lt;br&gt;
live life fuller&lt;/p&gt;


	&lt;p&gt;plan more trips&lt;br&gt;
reach out more often to friends&lt;br&gt;
get in touch with old ones&lt;br&gt;
keep current ones current&lt;/p&gt;


	&lt;p&gt;remember more birthdays&lt;br&gt;
screw going to sleep on time&lt;br&gt;
make more music&lt;br&gt;
try new food&lt;/p&gt;


	&lt;p&gt;get closer to stream of consciousness&lt;br&gt;
self moderate less&lt;br&gt;
edit revise rework&lt;br&gt;
go to bed already&lt;/p&gt;</description>
      <pubDate>Fri, 26 Dec 2008 02:59:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:75978822-1801-4e66-8665-6a79263aa79e</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/DFMEsW4EQow/new-years-resolutions</link>
      <category>life</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2008/12/26/new-years-resolutions</feedburner:origLink></item>
    <item>
      <title>AssetPackager update</title>
      <description>&lt;p&gt;A long overdue update of AssetPackager is finally here:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Rails 2.2 compatibility fixes&lt;/li&gt;
		&lt;li&gt;Packages generated on demand in production mode. Running the asset:packager:build_all rake task no longer necessary.&lt;/li&gt;
		&lt;li&gt;Now compatible with Git, and any other revision control system since revision numbers are no longer used.&lt;/li&gt;
		&lt;li&gt;No more mucking with internal Rails functions, which means:
	&lt;ul&gt;
	&lt;li&gt;Return to use of query-string timestamps. Greatly simplifies things.&lt;/li&gt;
		&lt;li&gt;Multiple asset-hosts supported&lt;/li&gt;
		&lt;li&gt;Filenames with &amp;#8221;.&amp;#8221;&amp;#8217;s in them, such as &amp;#8220;jquery-x.x.x&amp;#8221; are supported.&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Get the latest at &lt;a href="http://github.com/sbecker/asset_packager"&gt;http://github.com/sbecker/asset_packager&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Thanks to the many forkers for ideas and solutions.&lt;/p&gt;</description>
      <pubDate>Sun, 30 Nov 2008 02:11:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:387a98e7-8225-4ce9-bdb8-6f5d1212f1b0</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/5tLpk84NbZA/assetpackager-update</link>
      <category>Ruby on Rails</category>
      <category>Web Development</category>
      <category>asset_packager</category>
      <category>AssetPackager</category>
      <category>javascript</category>
      <category>css</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2008/11/30/assetpackager-update</feedburner:origLink></item>
    <item>
      <title>GitHub Theme for TextMate</title>
      <description>&lt;p&gt;&lt;a href="http://twitter.com/pjhyett/statuses/821940773"&gt;PJ Hyett&lt;/a&gt; asked for it on Twitter, so I created it. Announcing:&lt;/p&gt;


	&lt;p&gt;The &lt;a href="http://github.com/sbecker/github_textmate_theme/tree/master"&gt;&lt;strong&gt;Github Theme for TextMate!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Hosted on, GitHub! (what else?) The basics are defined, but I&amp;#8217;m sure it could be improved. In which case, you know what to do.&lt;/p&gt;</description>
      <pubDate>Wed, 28 May 2008 13:26:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:483ad6b7-7a38-4e8f-9ed0-00e4b4826749</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/wa4C827MoZE/github-theme-for-textmate</link>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2008/05/28/github-theme-for-textmate</feedburner:origLink></item>
    <item>
      <title>AssetPackager Tracker</title>
      <description>&lt;p&gt;Asset Packager now has a tracker where you can submit tickets. You can find it &lt;a href="http://code.electrointeractive.net"&gt;here.&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;If you have a bug to report, and/or a patch for Asset Packager, this is the place.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;:&lt;/strong&gt; The url to the old tracker died and never came back, so the tracker has been moved. The above link has been changed to the &lt;a href="http://code.electrointeractive.net"&gt;new tracker &lt;span class="caps"&gt;URL&lt;/span&gt;.&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 13 Dec 2007 15:26:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:510a8066-3d40-4b1d-abb0-c89846021ded</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/pu5CMiUtX7E/assetpackager-tracker</link>
      <category>Ruby on Rails</category>
      <category>Web Development</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2007/12/13/assetpackager-tracker</feedburner:origLink></item>
    <item>
      <title>WeoGeo - AWS Startup Challenge Finalist</title>
      <description>&lt;p&gt;My company WeoGeo made it to the final round of the Amazon Web Services Startup Challenge. In the top 7 out of around 1000 entrants, not too shabby.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://developer.amazonwebservices.com/connect/amazon_startupchallenge.jsp"&gt;Check out the videos for the finalists, and vote for WeoGeo!&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 02 Dec 2007 17:15:00 -0800</pubDate>
      <guid isPermaLink="false">urn:uuid:67ed8651-2c46-43d2-a416-b7646004d03f</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/KwHczIpSVO4/weogeo-aws-startup-challenge-finalist</link>
      <category>Ruby on Rails</category>
      <category>Web Development</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2007/12/02/weogeo-aws-startup-challenge-finalist</feedburner:origLink></item>
    <item>
      <title>RubyBrigade.org - A Rails Rumble Success</title>
      <description>&lt;p&gt;&lt;a href="http://rubybrigade.org"&gt;&lt;img src="http://synthesis.sbecker.net/files/rb_home.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Just wanted to mention our Rails Rumble project, &lt;a href="http://rubybrigade.org"&gt;RubyBrigade.org&lt;/a&gt;. &lt;a href="http://ambethia.com"&gt;Jason Perry&lt;/a&gt;, &lt;a href="http://dedguy.net/"&gt;James Seaman&lt;/a&gt; and I 
worked through the weekend to build &lt;a href="http://rubybrigade.org"&gt;RubyBrigade.org&lt;/a&gt; &amp;#8211; a geographically aware database of Ruby User groups.&lt;/p&gt;


	&lt;p&gt;Big thanks to James for the killer hand drawn illustrations and interface. Big thanks to Jason &amp;#38; Katie for letting us take over their house for the weekend.&lt;/p&gt;


	&lt;h2&gt;Features:&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;Google Maps Integration&lt;/li&gt;
		&lt;li&gt;Sub-domains for each group  &lt;/li&gt;
		&lt;li&gt;Geocoding: either by the search box or by sub-domain!&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;RSS&lt;/span&gt; and iCal feed parsing&lt;/li&gt;
		&lt;li&gt;Display latest user groups&lt;/li&gt;
		&lt;li&gt;Display upcoming events across all groups&lt;/li&gt;
		&lt;li&gt;Display blog posts &amp;#38; upcoming events for individual groups&lt;/li&gt;
		&lt;li&gt;ReCAPTCHA for spam prevention&lt;/li&gt;
		&lt;li&gt;No authentication required&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;More Screenshots&lt;/h2&gt;


	&lt;h3&gt;View a Brigade&lt;/h3&gt;


	&lt;p&gt;&lt;a href="http://tampa.rubybrigade.org/"&gt;&lt;img src="http://synthesis.sbecker.net/files/rb_show.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;h3&gt;Edit a Brigade&lt;/h3&gt;


	&lt;p&gt;&lt;img src="http://synthesis.sbecker.net/files/rb_edit.png" alt="" /&gt;&lt;/p&gt;


	&lt;h3&gt;Delete a Brigade&lt;/h3&gt;


	&lt;p&gt;&lt;img src="http://synthesis.sbecker.net/files/rb_delete.png" alt="" /&gt;&lt;/p&gt;


	&lt;h3&gt;404 Message&lt;/h3&gt;


	&lt;p&gt;&lt;a href="http://rubybrigade.org/404.html"&gt;&lt;img src="http://synthesis.sbecker.net/files/rb_404.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;If you like what you see, &lt;a href="http://vote.railsrumble.com/teams/65"&gt;vote for us!&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 12 Sep 2007 07:40:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:ef806c64-7a31-4e66-87b9-58c705d174b2</guid>
      <author>sbecker</author>
      <link>http://feedproxy.google.com/~r/sbecker/synthesis/~3/NtVftI6sRTo/rubybrigade</link>
      <category>Ruby on Rails</category>
      <category>Web Development</category>
      <category>railsrumble</category>
      <category>rails</category>
      <category>ruby</category>
    <feedburner:origLink>http://synthesis.sbecker.net/articles/2007/09/12/rubybrigade</feedburner:origLink></item>
  </channel>
</rss>
