<?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/"
	>

<channel>
	<title>Adam Christian &#187; Slide</title>
	<atom:link href="http://adamchristian.com/archives/category/slide/feed" rel="self" type="application/rss+xml" />
	<link>http://adamchristian.com</link>
	<description>Writing about Life, Business and Technology - the way I see it.</description>
	<lastBuildDate>Wed, 09 Jun 2010 08:22:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windmill Plugin for Hudson</title>
		<link>http://adamchristian.com/archives/251</link>
		<comments>http://adamchristian.com/archives/251#comments</comments>
		<pubDate>Mon, 11 May 2009 04:42:27 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Windmill-dev]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=251</guid>
		<description><![CDATA[Over the last 6+ months, I have been using Hudson in conjunction with Windmill very heavily for continuous integration. For the most part using the build step specific to whatever the slave OS requires has worked sufficiently well until recently when my needs changed.
I use the &#8216;configuration matrix&#8217; option to build a matrix of browsers [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last 6+ months, I have been using Hudson in conjunction with Windmill very heavily for continuous integration. For the most part using the build step specific to whatever the slave OS requires has worked sufficiently well until recently when my needs changed.</p>
<p>I use the &#8216;configuration matrix&#8217; option to build a matrix of browsers to run the tests, this way I can have one job that represents a test run on multiple boxes and multiple browsers on each box. Drilling down allows me to see the results for each of these test runs within the job. (Configuration Matrix is awesome btw, except for one really annoying bug for, which there is a <a href="http://wiki.hudson-ci.org/display/HUDSON/Aboutncysa">reasonable workaround</a>)</p>
<p>Having many build resources, sometimes I want to move a job from one machine to another in order to equalize load on the different machines or to have a job running in ff2 and ie6 instead of ff3 and ie7. Thus the need for a uniform build step that will run the same way regardless of the machine or installed browsers, became necessary. Additionally the commands for running tests got bigger and less manageable all the time, so the time for a clean user interface finally came. This way I can automatically append arguments like &#8216;exit&#8217; to keep the build step interface simple and clean.</p>
<p>The other simplification is that in the Hudson configuration page for the Windmill Test plug-in you can tell it to automatically call the contrib &#8216;clean_run.py&#8217; script with the correct arguments (assuming clean_run.py can be found in your path).</p>
<p>As I am relatively new to the Java world, I struggled through the development process but thanks to some reasonable plug-in documentation, responses from the hudson dev mailing list and some IRC conversations with Kohsuke (thanks so much) I finally have something that sufficiently addresses my needs.</p>
<p><strong>Screenshots</strong><br />
<img style="width:99%" title="Hudson Configuration UI" src="http://cloud.github.com/downloads/admc/HudsonWindmillPlugin/Picture_4.png" alt="" /><br />
<img title="Adding the Windmill build" src="http://cloud.github.com/downloads/admc/HudsonWindmillPlugin/Picture_5.png" alt="" /><br />
<img style="width:99%" title="Plugin basic UI" src="http://cloud.github.com/downloads/admc/HudsonWindmillPlugin/Picture_2.png" alt="" /><br />
<img style="width:99%" title="Windmill Build Expanded" src="http://cloud.github.com/downloads/admc/HudsonWindmillPlugin/Picture_3.png" alt="" /></p>
<p><strong>Project</strong></p>
<p>The code is all available on <a href="http://github.com/admc/HudsonWindmillPlugin/tree/master">GitHub</a> and I welcome any improvements or input from the community as I know that continuous integration is a very important piece of the utility provided by Windmill and this pieces should be as easy as possible to setup.</p>
<p>The combination of this plug-in, and others like the <a href="http://github.com/dougm/hudson-s3/tree/master">amazon s3 plug-in </a> or the <a href="http://wiki.hudson-ci.org/display/HUDSON/VMware+plugin">hudson VMware plugin</a> bring us that much closer to seamlessly creating test resources, running our functional web tests across all of our supported platforms and then throwing it away until it&#8217;s again needed (or using the CLOUD).I have also done some integration with virtual box that I have found to be very successful.</p>
<p><strong>Download</strong></p>
<ul>
<li><a href="http://cloud.github.com/downloads/admc/HudsonWindmillPlugin/HudsonWindmillPlugin.hpi">Hudson Windmill Plugin 0.4</a></li>
</ul>
<p>Please<a href="http://github.com/admc/HudsonWindmillPlugin/issues"> log bugs</a> and let me know what you think! If you are an avid Java and or Hudson plug-in developer and you are interested in contributing, please jump right in!</p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/251/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyCon 2009 Recap</title>
		<link>http://adamchristian.com/archives/236</link>
		<comments>http://adamchristian.com/archives/236#comments</comments>
		<pubDate>Tue, 14 Apr 2009 00:54:38 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Windmill-dev]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Oscon]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[using windmill]]></category>
		<category><![CDATA[windmill talk]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=236</guid>
		<description><![CDATA[Getting back in the swing of things after conferencing for weeks can be pretty painful, thus the lateness of the post. However I think it&#8217;s important to go over some thoughts still lingering in my brain as a result.
First off, I have to say that for those of you who don&#8217;t know, PyCon is a [...]]]></description>
			<content:encoded><![CDATA[<p>Getting back in the swing of things after conferencing for weeks can be pretty painful, thus the lateness of the post. However I think it&#8217;s important to go over some thoughts still lingering in my brain as a result.</p>
<p>First off, I have to say that for those of you who don&#8217;t know, PyCon is a community organized event, and amazingly well done. I was impressed by the design of the conference, the way they had four talks going on at once and they tried to keep them in a similar interest track. Every talk I attended was at least &#8220;good&#8221;, and many were &#8220;great&#8221;. You could really feel a community vibe, and for a conference that had 800+ attendees in the middle of a major recession they had every right to be excited.</p>
<p>There were two major themes content wise that really impressed me, the first was an amazing amount of web framework focus. <a href="http://www.djangoproject.com/">Django</a> obviously being the twinkle in the eye of the community, but there were smaller communities for each of the other projects, <a href="http://pylonshq.com/">Pylons</a>-<a href="http://turbogears.org/">Turbo Gears</a>, <a href="http://www.web2py.com/">web2py</a> and lots of tools built on top of them. One that struck me with some major promise is the <a href="http://pinaxproject.com/">Pinax Project</a>. Their goal is to make it so that I don&#8217;t ever have to deal with building user registration and in site messaging&#8230; and all the other features expected for any site that has social network functionality.</p>
<p>The other major theme was a mini testing conference going on within PyCon, that I was very comfortable hanging around with. We had a hugely successful Birds Of a Feather, as well as a surprisingly active Open Space talk for Windmill.</p>
<p>The &#8220;Using Windmill&#8221; talk turns out to be pretty successful in every aspect that I really care about. I do wish that I had been able to get a little more sleep the night before, and I have to admit the size of the venue was a bit overwhelming. I now realize watching the footage that I used the word &#8220;UM&#8221; way too much, and the demo videos must have been hard to watch from the very back of the room. But barring those two things, I am quite happy (I shall learn and practice for the next round of shameless PR at <a href="http://en.oreilly.com/oscon2009">OSCON 2009</a>).</p>
<p>The &#8220;Functional Testing Tools in Python&#8221; panel was very successful, and a lot of fun. I always enjoy the friendly banter between the different project owners. Everyone has a different opinion on what they care about, focus on and feel they do the best. Obviously since the only two projects represented that focused on Web Testing were Windmill and Selenium, we got a lot of attention.</p>
<p>Watching that panel footage I definitely think that the introductions were too long, but I still think our Journey themed &#8211; mind blowing &#8211; Windmill demo video was a great intro. At the very least, the audience had a little entertainment before the geek droning began <img src='http://adamchristian.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.slide.com">Slide</a> had an awesome presence this year, a fun booth, huge banners everywhere and 6 attendees. It was fun to see all of the great responses I received about Slide from people out there in Python land.</p>
<p><strong>Here are links to the videos:</strong></p>
<ul>
<li>Using Windmill: <a href="http://pycon.blip.tv/file/1947236/">http://pycon.blip.tv/file/1947236/</a></li>
<li>Functional Testing Tools in Python Panel: <a href="http://pycon.blip.tv/file/1947342/">http://pycon.blip.tv/file/1947342/</a></li>
</ul>
<p><strong>And some pictures:</strong></p>
<p><img class="alignnone size-full wp-image-237" title="Me, with the great Slide backdrop" src="http://www.adamchristian.com/wp-content/uploads/2009/04/1.png" alt="Me, with the great Slide backdrop" width="350" height="233" /></p>
<p><img class="alignnone size-full wp-image-238" title="Mikeal answering Questions" src="http://www.adamchristian.com/wp-content/uploads/2009/04/2.png" alt="Mikeal answering Questions" width="233" height="350" /> <img class="alignnone size-full wp-image-239" title="More me" src="http://www.adamchristian.com/wp-content/uploads/2009/04/3.png" alt="More me" width="350" height="233" /></p>
<p>If you are interested in seeing the new and improved version of the &#8220;Using Windmill&#8221; talk, please make it out to OSCON 2009, &#8220;Scheduled for 16:30 on 22 Jul 2009.&#8221; in San Jose, CA.<br />
<a href="http://conferences.oreilly.com/oscon"><br />
<img class="alignnone" style="border: 0px initial initial;" title="OSCON 2009" src="http://assets.en.oreilly.com/1/event/27/oscon2009_banner_speaking_125x125.gif" border="0" alt="OSCON 2009" width="125" height="125" /></a></p>
<p>We are waiting to hear back from both <a href="http://opensourcebridge.org/">Open Source Bridge</a> and the <a href="http://ajaxexperience.techtarget.com/html/index.html">AJAX Experience</a> as to whether we will be participating in those conferences (fingers crossed)!</p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/236/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Diving into GIT</title>
		<link>http://adamchristian.com/archives/97</link>
		<comments>http://adamchristian.com/archives/97#comments</comments>
		<pubDate>Wed, 26 Nov 2008 00:10:26 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[challenges]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[GIT]]></category>
		<category><![CDATA[msysGIT]]></category>
		<category><![CDATA[puTTY]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=97</guid>
		<description><![CDATA[Over the last year, I have known that the day would come when I could no longer avoid moving from SVN (my comfort zone) to this new beast called GIT that everyone is so excited about. My first hour, which was installing it on my Mac and pulling down a repo to play with was [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last year, I have known that the day would come when I could no longer avoid moving from SVN (my comfort zone) to this new beast called GIT that everyone is so excited about. My first hour, which was installing it on my Mac and pulling down a repo to play with was very pleasant. My ssh keys and ~/.ssh/config was already setup the way I wanted and everything just worked.</p>
<p>The pain began when I started in on moving our build slaves over to GIT. Of course two of the three are running Windows because we have to run the Windmill tests against IE. In an attempt to keep things simple, I wanted to avoid installing cygwin on the machines, so I tried msysGIT. Oh WAIT I have to get ssh to work before I can actually use GIT to pull down the repo. </p>
<p>After trying and failing with openSSH, I finally realized that the <a href="http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe">Windows puTTY Package</a> was the best way to go about this. There was much frustration involved with this process because it requires that you take the ssh key you generated on your mac (and had added on the server) and convert it to a puTTY ppk. Fortunately this turns out not to be that panful using puTTYgen. The next piece to the puzzle was to get pageant to load this key automatically when the machine boots. I went through some rigamarole trying to create a shortcut in the &#8220;Startup&#8221; items and appending a string to it&#8217;s path to get it to load the correct key. This didn&#8217;t work, I&#8217;m sure it was a combination of Windows being terribly un user friendly and my brain expecting things to &#8220;Just Work TM&#8221;. Finally I just created a short cut for the actual key and stuck it in the &#8220;Startup&#8221; folder, and it works! (You still have to enter your pass phrase on boot) but its better than the alternatives. I actually found a post on a puTTY forum where someone was asking to automate this piece too and the response was basically, &#8220;No, never, die. Doing that defeats the purpose of SSH&#8221;. </p>
<p>One step that I forgot to mention is that to get GIT to use the right SSH key you have to set the environment variable: <code>GIT_SSH=path/to/putty/plink.exe</code></p>
<p>Next I went and started my git clone, which kicked off perfectly. That wasn&#8217;t so bad! 46% later at 1.99GB of the retrieval process I received two fatal errors that looked similar to file system errors. I then did some Googling to find that msysGIT only supports repository&#8217;s up to 2GB. The answer on the forums for this problem was, &#8220;have a smaller repo&#8221;. This is a problem, so I head back to the GIT homepage, where I find that the only real lasting option is to use cygwin GIT. </p>
<p>After I get cygwin GIT all installed I finally get the repo fully downloaded I check to see if I can use the msysGIT to pull changes (which should never be 2gb worth), and it absolutely freaks out. So that&#8217;s not an option, and neither is adding cygwin/bin to your path because that complains about &#8216;exec ssh&#8217; not existing.</p>
<p>Your probably wondering, why don&#8217;t you just use cygwin to do your GIT stuff? Well the issue is that we are using hudson to queue up jobs on the machines using the cmd environment to pull changes and run the tests in the repo. And it became very clear that the best way to handle this was to run the slave agent from cygwin, that way the jobs are actually running in cygwin land and this turned out to work &#8212; awesome!</p>
<p>To finish describing my pain, the last problem was that since I am running the tests from c:\main, (you have to be inside a git repo to pull and I want to keep these jobs simple) I am generating the log file in the wrong place, because the job looks in it&#8217;s home directory to find the jUnit Compatible XML results file. Fortunately there are some environment variables that I can use to get the files back where I want; <code>mv *.log %WORKSPACE%</code></p>
<p>Now that life is back to normal and I&#8217;m getting used to living in the new GIT world, I can get back to important things like making Windmill more awesome and increasing test coverage.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/97/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zero to Continuous Integration with Windmill</title>
		<link>http://adamchristian.com/archives/43</link>
		<comments>http://adamchristian.com/archives/43#comments</comments>
		<pubDate>Fri, 19 Sep 2008 06:29:58 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Windmill-dev]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Continuous]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=43</guid>
		<description><![CDATA[Following &#8216;automation&#8217; and &#8216;continuous integration&#8217; in the micro blogging world I have seen a major influx in people being super interested in functionally automating their web apps. I have seen a slew of things about Grid, and Selenium, and people hacking on Watir so I decided to show you from the ground up how incredibly [...]]]></description>
			<content:encoded><![CDATA[<p>Following &#8216;automation&#8217; and &#8216;continuous integration&#8217; in the micro blogging world I have seen a major influx in people being super interested in functionally automating their web apps. I have seen a slew of things about Grid, and Selenium, and people hacking on Watir so I decided to show you from the ground up how incredibly easy it is to get automated test running setup using <a href="http://www.getwindmill.com">Windmill</a> and <a href="http://hudson.gotdns.com/wiki/display/HUDSON/Meet+Hudson#Installation">Hudson</a>. I am not going to walk you through every detail, this is much more high level but I do plan to start a &#8216;continuous integration&#8217; page on getwindmill.com in the near future for those kinds of details.</p>
<p>The first step is to get a couple machines that you want use as slaves and a machine to run Hudson, our setup looks like this:</p>
<p><a href="http://adamchristian.com/wp-content/uploads/2008/09/arch.png"><img class="alignnone size-medium wp-image-44" title="Windmill/Hudson Arch" src="http://adamchristian.com/wp-content/uploads/2008/09/arch.png" alt="" width="291" height="191" /></a></p>
<p>Each of the machines with a different OS has <a href="http://www.getwindmill.com">Windmill</a> installed. To make them slaves you simply bring up the Hudson web page on the machine, and run the launcher.. now it&#8217;s a slave &#8212; crazy easy right?</p>
<p>Now to setup test runs for the machines, in Hudson you click: &#8220;New Job&#8221; on the left hand side and do something like the following:</p>
<p><strong>Tie this job to the slave you want it to run on (we can&#8217;t have IE runs happening on MacOSX):<br />
</strong><span style="color: #0000ee;"><span style="color: #000000;"><img class="alignnone size-full wp-image-55" title="tie_node" src="http://adamchristian.com/wp-content/uploads/2008/09/tie_node.png" alt="" width="500" height="55" /></span></span></p>
<p><strong>Tell this job to run 10 and 30 minutes after the hour:<br />
</strong><a href="http://adamchristian.com/wp-content/uploads/2008/09/build_periodic2.png"><img class="alignnone size-full wp-image-50" title="build_periodic2" src="http://adamchristian.com/wp-content/uploads/2008/09/build_periodic2.png" alt="" width="500" height="69" /></a></p>
<p><strong>The build steps to actually run the tests, the first kills any straggling processes (more details below):<br />
</strong><a href="http://adamchristian.com/wp-content/uploads/2008/09/build_steps1.png"><img class="alignnone size-full wp-image-51" title="build_steps" src="http://adamchristian.com/wp-content/uploads/2008/09/build_steps1.png" alt="" width="353" height="328" /></a></p>
<p>On the Mac for the Safari job, I want to make sure there aren&#8217;t any instances of Safari left hanging, or windmill processes sitting around so we do:<br />
<code>ps -ax | grep windmill | awk '{ print $1 }' | xargs kill  | true<br />
ps -ax | grep Safari | awk '{ print $1 }' | xargs kill | true<br />
</code></p>
<p>Then we want to grab the latest test code from svn and launch the windmill test:<br />
<code>svn up /Users/adam/Documents/main_bt/windmill/<br />
python /usr/local/bin/windmill safari http://www.facebook.com test=/Users/adam/Documents/main_bt/windmill/fb email=username@slide.com password=pass report=true exit<br />
rm /Users/adam/Library/Cookies/Cookies.plist<br />
</code></p>
<p>I am telling windmill to run a test against facebook.com, with the test hierarchy in the windmill/fb directory in Safari, with the provided email and password, then to report it&#8217;s results and exit.</p>
<p>The only thing different on our windows test runs is the way we kill the processes:<br />
Example:<br />
<code>taskkill /F /T /IM windmill.exe<br />
taskkill /F /T /IM firefox.exe<br />
</code></p>
<p>You might be asking how do I use those variables, check it out in my setup module:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> setup_module<span style="color: black;">&#40;</span>module<span style="color: black;">&#41;</span>:
    client = WindmillTestClient<span style="color: black;">&#40;</span>__name__<span style="color: black;">&#41;</span>
    client.<span style="color: #008000;">type</span><span style="color: black;">&#40;</span>text=functest.<span style="color: black;">registry</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'email'</span><span style="color: black;">&#93;</span>, <span style="color: #008000;">id</span>=u<span style="color: #483d8b;">'email'</span><span style="color: black;">&#41;</span>
    client.<span style="color: #008000;">type</span><span style="color: black;">&#40;</span>text=functest.<span style="color: black;">registry</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'password'</span><span style="color: black;">&#93;</span>, <span style="color: #008000;">id</span>=u<span style="color: #483d8b;">'pass'</span><span style="color: black;">&#41;</span>
    client.<span style="color: black;">click</span><span style="color: black;">&#40;</span><span style="color: #008000;">id</span>=u<span style="color: #483d8b;">'doquicklogin'</span><span style="color: black;">&#41;</span>
    client.<span style="color: black;">waits</span>.<span style="color: black;">forPageLoad</span><span style="color: black;">&#40;</span>timeout=u<span style="color: #483d8b;">'100000'</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>You can also read a great entry about adding reporting to your tests on Mikeal Rogers blog, <a href="http://www.mikealrogers.com/archives/46">here.</a></p>
<p>And that last line removing Cookies.plist makes sure that the next test run starts without any cookies set to cause problems.</p>
<p><strong>Have Hudson keep you updated on Jabber:</strong></p>
<p><a href="http://adamchristian.com/wp-content/uploads/2008/09/jabber1.png"><img class="alignnone size-full wp-image-52" title="jabber1" src="http://adamchristian.com/wp-content/uploads/2008/09/jabber1.png" alt="" width="500" height="97" /></a></p>
<p><strong>Grab the generated XML output so you can view the test results in Hudson:</strong></p>
<p><img class="alignnone size-full wp-image-54" title="publish_junit" src="http://adamchristian.com/wp-content/uploads/2008/09/publish_junit.png" alt="" width="500" height="58" /></p>
<p><strong>Do this for each of the test runs you would like to have, and boom &#8212; continuous integration:</strong></p>
<p><a href="http://adamchristian.com/wp-content/uploads/2008/09/jobs_dash1.png"><img class="alignnone size-medium wp-image-53" title="jobs_dash" src="http://adamchristian.com/wp-content/uploads/2008/09/jobs_dash1-300x148.png" alt="" width="300" height="148" /></a></p>
<p>This is obviously a simple scenario, and you can do way, way more customization.. but this should get you off the ground. Happy testing!</p>
<p><span style="text-decoration: underline;"><br />
</span><br />
 </p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/43/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>JUnit Compatible Reporting for Windmill</title>
		<link>http://adamchristian.com/archives/40</link>
		<comments>http://adamchristian.com/archives/40#comments</comments>
		<pubDate>Fri, 29 Aug 2008 19:52:38 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Slide]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Windmill-dev]]></category>
		<category><![CDATA[Continuous]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=40</guid>
		<description><![CDATA[A large part of the utility in a testing framework like Windmill is the ability to interoperate with a continuous integration environment. Much of the work that has gone into Windmill recently has been the result of continuous integration needs. There are many ways to do this with existing software packages out there that include [...]]]></description>
			<content:encoded><![CDATA[<p>A large part of the utility in a testing framework like Windmill is the ability to interoperate with a continuous integration environment. Much of the work that has gone into Windmill recently has been the result of continuous integration needs. There are many ways to do this with existing software packages out there that include <a href="http://www.mozilla.org/projects/tinderbox/">Tinderbox</a>,<a href="http://buildbot.net/trac">Buildbot</a> and <a href="http://cruisecontrol.sourceforge.net/">Cruise Control</a> however we picked <a href="https://hudson.dev.java.net/">Hudson</a> as a result of the super small learning overhead and amazing simplicity required to setup slaves on the network.</p>
<p>One of the requirements of course for parsing results is the need for JUnit compatible XML output from the Windmill test runs. I don&#8217;t claim to be a Python wizard, or a XML/Java wizard for that matter but it wasn&#8217;t that painful to hammer out a function to generate some minimal output to get the process off the ground.</p>
<p>I would love to get a wiki page up on <a href="http://www.getwindmill.com">Get Windmill</a> to start documenting the many ways to use Windmill in a continuous integration environment. So let me know if you have a working setup and would like to contribute.</p>
<p><strong>Example Reporting Excerpt from <em>__init__.py</em>:</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> functest <span style="color: #ff7700;font-weight:bold;">import</span> reports
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">datetime</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">datetime</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> JUnitReport<span style="color: black;">&#40;</span>reports.<span style="color: black;">FunctestReportInterface</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> summary<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, test_list, totals_dict, stdout_capture<span style="color: black;">&#41;</span>:
&nbsp;
        total_sec = <span style="color: #ff4500;">0</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> entry <span style="color: #ff7700;font-weight:bold;">in</span> test_list:
            time_delta = entry.<span style="color: black;">endtime</span> - entry.<span style="color: black;">starttime</span>
            total_sec += time_delta.<span style="color: black;">seconds</span> 
        out = <span style="color: #483d8b;">'&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span>
        out += <span style="color: #483d8b;">'&lt;testsuite errors=&quot;'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>totals_dict<span style="color: black;">&#91;</span><span style="color: #483d8b;">'fail'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'&quot; failures=&quot;'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>totals_dict<span style="color: black;">&#91;</span><span style="color: #483d8b;">'fail'</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'&quot; name=&quot;windmill.functional&quot; tests=&quot;'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #008000;">len</span><span style="color: black;">&#40;</span>test_list<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'&quot; time=&quot;'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>total_sec<span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'&quot;&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">for</span> entry <span style="color: #ff7700;font-weight:bold;">in</span> test_list:
            <span style="color: #ff7700;font-weight:bold;">if</span> entry.<span style="color: black;">result</span> <span style="color: #ff7700;font-weight:bold;">is</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">True</span>:    
                entry_time = entry.<span style="color: black;">endtime</span> - entry.<span style="color: black;">starttime</span>
                out += <span style="color: #483d8b;">'&lt;testcase classname=&quot;'</span>+entry.__name__+<span style="color: #483d8b;">'&quot; name=&quot;'</span>+entry.__name__+<span style="color: #483d8b;">'&quot; time=&quot;'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>entry_time.<span style="color: black;">seconds</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'.'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>entry_time.<span style="color: black;">microseconds</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'&quot;&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span>
                out += <span style="color: #483d8b;">'&lt;failure type=&quot;exceptions.AssertionError&quot;&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span>
                <span style="color: #808080; font-style: italic;">#out += str(stdout_capture)</span>
                <span style="color: #808080; font-style: italic;">#until I can figure out how to get the traceback</span>
                out += <span style="color: #483d8b;">'There was an error in '</span>+ entry.__name__
                out += <span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>&lt;/failure&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span>
                out += <span style="color: #483d8b;">'&lt;/testcase<span style="color: #000099; font-weight: bold;">\n</span>&gt;'</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                entry_time = entry.<span style="color: black;">endtime</span> - entry.<span style="color: black;">starttime</span>
                out += <span style="color: #483d8b;">'&lt;testcase classname=&quot;'</span>+entry.__name__+<span style="color: #483d8b;">'&quot; name=&quot;'</span>+entry.__name__+<span style="color: #483d8b;">'&quot; time=&quot;'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>entry_time.<span style="color: black;">seconds</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'.'</span>+<span style="color: #008000;">str</span><span style="color: black;">&#40;</span>entry_time.<span style="color: black;">microseconds</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">'&quot;&gt;&lt;/testcase&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span> 
&nbsp;
        out += <span style="color: #483d8b;">'&lt;system-out&gt;&lt;![CDATA[]]&gt;&lt;/system-out&gt;<span style="color: #000099; font-weight: bold;">\n</span>&lt;system-err&gt;&lt;![CDATA[]]&gt;&lt;/system-err&gt;<span style="color: #000099; font-weight: bold;">\n</span>'</span>
        out += <span style="color: #483d8b;">'&lt;/testsuite&gt;'</span>
        f=<span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'continuous_test.log'</span>,<span style="color: #483d8b;">'w'</span><span style="color: black;">&#41;</span>
        f.<span style="color: black;">write</span><span style="color: black;">&#40;</span>out<span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
        f.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
reports.<span style="color: black;">register_reporter</span><span style="color: black;">&#40;</span>JUnitReport<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Happy automating!</p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mozilla Summit</title>
		<link>http://adamchristian.com/archives/38</link>
		<comments>http://adamchristian.com/archives/38#comments</comments>
		<pubDate>Thu, 31 Jul 2008 00:18:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[99]]></category>
		<category><![CDATA[History]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Mozmill]]></category>
		<category><![CDATA[Organically]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Rocks]]></category>
		<category><![CDATA[Summit]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[UE]]></category>
		<category><![CDATA[Whistler]]></category>
		<category><![CDATA[XUL]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=38</guid>
		<description><![CDATA[I am currently up here in Whistler BC for the Mozilla Summit. There is about 400 people here staying at the Westin Resort &#38; Spa up here in scenic Canada. 
The schedule for the con can be found here; http://wiki.mozilla.org/Summit2008/Sessions/Schedule
I do have to say that Mozilla is doing a great job at taking care of all their [...]]]></description>
			<content:encoded><![CDATA[<p>I am currently up here in Whistler BC for the Mozilla Summit. There is about 400 people here staying at the Westin Resort &amp; Spa up here in scenic Canada. </p>
<p>The schedule for the con can be found here; http://wiki.mozilla.org/Summit2008/Sessions/Schedule</p>
<p>I do have to say that Mozilla is doing a great job at taking care of all their contributors and employees this week, and I feel like a lot of progress is being made on many levels. It&#8217;s very useful to see details as to how people are going about this, but it&#8217;s even more useful to see things on a bit higher level. It can be easy to get lost in the forest of Open Source, especially the way that Mozilla builds on things organically. </p>
<p>The sessions are ranging from &#8220;The History of the Browser&#8221; to Mobile, QA, UE/UI, Thunderbird, planning etc. As Moz has people all over the world I am getting to hear some very interesting accents and interpretations of things. At the dinner last night I was sitting across from people from Germany, Macedonia and Israel. Amazing how the Moz projects can cross the globe and still keep communication open with each of it&#8217;s appendages. The keynote from Mitchell Baker and John Lilly gave me a very solid impression of what they feel the company values, where it should be going and most importantly their extreme satisfaction with where it currently is.</p>
<p>Tomorrow I will be doing a session with Mikeal Rogers and Clint Talbert to demo and explain the GristMill XUL testing framework. My piece of this project is called Mozmill, which started out as a straight across port of the Windmill source with the addition of XUL support and has turned into a much more advanced tool that will fill some needs that have existed for a very long time.</p>
<p>I found it interesting to find out that the VP of Engineering Mike Schroepfer announced his departure last week during Oscon. Their have been mixed reactions about this, but many speculations were proven correct today when he announced he was going to facebook, http://blog.mozilla.com/schrep/. The idea of an IPO is can be extremely appealing, apparently they made him an offer he couldn&#8217;t refuse.</p>
<p>This morning we were alerted that tons, literally tons of rock had fallen on the highway 99 which turns out is the most convenient of two possible road trips to get back to Vancouver. We are leaving Friday morning, and the new word is that we will all be loaded onto shuttles to embark on the 7 hour trip back to the airport. This will make for an extremely long day and I am not looking forward to it, but the trip was well worth it and I look forward to getting home and picking up where I left off at Slide.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/38/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oscon 2008 Schedule</title>
		<link>http://adamchristian.com/archives/36</link>
		<comments>http://adamchristian.com/archives/36#comments</comments>
		<pubDate>Wed, 23 Jul 2008 09:43:13 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Oscon]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=36</guid>
		<description><![CDATA[Every year I like to make myself a road map of how I will be spending my time during OSCON. As there are so many interesting possible talks, gatherings and social events it&#8217;s tough to get to all the things you care about.
At this point in my career my focus is on Web Development, Test [...]]]></description>
			<content:encoded><![CDATA[<p>Every year I like to make myself a road map of how I will be spending my time during OSCON. As there are so many interesting possible talks, gatherings and social events it&#8217;s tough to get to all the things you care about.</p>
<p>At this point in my career my focus is on Web Development, Test Automation (specifically for the web &amp; browsers), and social networking. Obviously on a moment by moment basis your interests are pulled in varying directions, but that sums up the bulk of my attention.</p>
<p>If you are interested in the full schedule grid, it can be seen here: <a href="http://en.oreilly.com/oscon2008/public/schedule/grid">Oscon 08 Schedule Grid</a>.</p>
<p><strong>Wednesday</strong></p>
<ul>
<li><em>8:45 AM</em>: Welcome</li>
<li><em>9:30 AM</em>: Keynote</li>
<li><em>10:45 AM</em>: <del datetime="2008-07-23T17:14:50+00:00">&#8220;An Introduction to Ruby Web Frameworks&#8221; (It&#8217;s going to be tough to convince me to move away from Django)</del>&#8220;Changing Education&#8230; Open Content, Open Hardware, Open Curricula&#8221; looks more interesting today.</li>
<li><em>11:35 AM</em>: <del datetime="2008-07-23T17:14:50+00:00">This one is tough, either &#8220;Web Graphics and Animations without Flash&#8221;, &#8220;Beautiful Concurrency with Erlang&#8221;, or</del> &#8220;Beyond REST? Building Data Services with XMPP PubSub&#8221;, &#8220;CouchDB from 10,000 ft&#8221; apparently thats the thing see, or &#8220;What Has Ruby Done for You Lately?</li>
<li><em>12:20 PM</em>: Really important, LUNCH!</li>
<li><em>1:45 PM</em>: <span style="text-decoration: line-through;">Probably &#8220;Thunderbird 3&#8243;,</span> maybe &#8220;The Open-Source Identity Revolution&#8221;</li>
<li><em>2:35 PM</em>: &#8220;Caching and Performance Lessons from Facebook&#8221;, never know when this one might come in handy working for Slide inc.</li>
<li><em>4:30 PM</em>: &#8220;Open Source Community Antipatterns&#8221;, I&#8217;m really looking forward to hearing Ted Leung explain how to NOT run an Open Source Project&#8230;</li>
<li><em>5:30 PM</em>: Probably &#8220;Give your Site a Boost with memcached&#8221;, <span style="text-decoration: line-through;">or &#8220;Shell Scripting Craftmanship&#8221;</span></li>
</ul>
<div><strong>Thursday</strong></div>
<div>
<ul>
<li><em>8:45 AM</em>: Keynote</li>
<li><em>9:30 AM</em>: Keynote</li>
<li><em>10:45 AM: &#8220;</em>Open Source Microblogging&#8221;</li>
<li><em>11:35 AM</em>: &#8220;This is Your PostgreSQL on Drugs&#8221;</li>
<li><em>1:45 PM</em>: &#8220;CSS for High Performance JavaScript UI&#8221;</li>
<li><em>2:35 PM</em>: &#8220;Stupid Django Tricks&#8221;</li>
<li><em>4:30 PM</em>: Either &#8220;Fixing Hard Problems Through Iterative QA and Development&#8221; or &#8220;Effective Software Development with Python, C++, and SWIG&#8221;, as I have worked with both speakers (Clint Talbert, Robin Dunn) respectively. OR &#8220;Machine Learning for Knowledge Extraction from Wikipedia &amp; Other Semantically Weak Sources. This is a hard one..</li>
<li><em>5:20 PM</em>: Couple interesting choices jump out at me here: &#8220;Code is Easy, People are Hard: Developing Meebo&#8217;s Interview Process&#8221;, or &#8220;Designing Political Web Apps for MoveOn.org&#8221; both could be really cool.</li>
</ul>
<div><strong>Friday</strong></div>
<div>
<ul>
<li><em>9:30 AM</em>: Plenary</li>
<li><em>10:45 AM</em>: &#8220;Toward a Strong Open Source Ecosystem&#8221; by Sara Ford at Microsoft? Interested to see what she has to say&#8230;</li>
<li><em>11:35 AM</em>: Oh hell yeah, &#8220;Searching for Neutrinos Using Ope Source at the Bottom of the World&#8221;</li>
<li><em>12:30 PM</em>: Plenary</li>
<li><em>1:30 PM</em>: Plenary, Bye Bye&#8217;s</li>
</ul>
</div>
<div>Off to the train to Seattle&#8230;</div>
<p> </p>
<div>I am going to try a new thing using the Word Press app on my new iPhone 3G, to jot down small blog entries of points during the talks, then fill out the rest of the entry with more detail later.</div>
</div>
<div>It&#8217;s 2:41 now, so lets see if I can get to that 8:45 AM.. yowch.</div>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/36/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leaving Rearden Commerce, What&#8217;s Next?</title>
		<link>http://adamchristian.com/archives/20</link>
		<comments>http://adamchristian.com/archives/20#comments</comments>
		<pubDate>Sat, 28 Jun 2008 01:22:39 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Career]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Plans]]></category>
		<category><![CDATA[Slide]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Windmill]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Commerce]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Employ]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[OSAF]]></category>
		<category><![CDATA[Position]]></category>
		<category><![CDATA[Professional]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Rearden]]></category>
		<category><![CDATA[Rearden Commerce]]></category>
		<category><![CDATA[Resign]]></category>
		<category><![CDATA[Slide Inc]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://adamchristian.com/?p=20</guid>
		<description><![CDATA[
What happened?
As some of you may have heard, today I resigned from my position at Rearden Commerce. Leaving a company is never a fun thing, because you know how you feel when you hear that someone else is leaving.. and you can see it in people&#8217;s eyes. I have reminded myself multiple times today that I am [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:right;" src="http://adamchristian.com/wp-content/uploads/2008/06/logo.gif" alt="" width="145" height="38" /><br />
<strong>What happened?</strong></p>
<p>As some of you may have heard, today I resigned from my position at <a href="http://reardencommerce.com">Rearden Commerce</a>. Leaving a company is never a fun thing, because you know how you feel when you hear that someone else is leaving.. and you can see it in people&#8217;s eyes. I have reminded myself multiple times today that I am still going to be 30 mins away, most of my communication with those people has been via email and IM and there is no reason for me not to stay in touch.</p>
<p><strong>Why did I resign? </strong></p>
<p>That&#8217;s a very good question. Let me preface this by saying that I really don&#8217;t have anything about Rearden that I can point at and say &#8216;this thing&#8217; is why I left. Rearden is a great company, they were professional through out my entire experience there. They employ many very talented and driven engineers, and they have a great product. My gut feeling after spending some time there, is that they will do very well. The management team is very skilled and they know their market and niche extremely well. Every day I went to work I heard about a new major deal or a small company Rearden had acquired to contribute to their march toward owning the &#8216;Personal Assistant&#8217; space.</p>
<p>When I first arrived there I struggled with two things, and ultimately wound up being my demise as an employee. I have an extreme passion for Open Source, being part of that community, and giving my time to contribute. So you are probably thinking, &#8216;Why didn&#8217;t I just do that on the side?&#8217; &#8212; well the answer is that I did do it on the side and the results were slow and my sleep schedule paid the price. Rearden has a very business/enterprise specific niche at the moment, and building and deploying new features to those customers is a priority (as it should be), but I couldn&#8217;t stop my Open Source envy. </p>
<p>Secondly, a overwhelming majority of their user base is using IE6. As a web developer &#8212; the last thing I do when building anything in client side JavaScript is to test it in IE6. I basically hold my nose, load the page and pray that things &#8216;mostly work&#8217;. Now I&#8217;m not going to claim that I can ever get away from doing this, but building really cutting edge features based on new technology becomes significantly less probable when you are catering to this crowd. I know that Rearden has some really cool future plans, and is publicly talking about bringing the application to the consumer market &#8212; but I&#8217;m impatient and I just simply didn&#8217;t want to wait.</p>
<p><img style="float:right;" src="http://adamchristian.com/wp-content/uploads/2008/06/slide_logo_sm.gif" alt="" width="108" height="40" /><br />
<strong>What&#8217;s Next?</strong></p>
<p>I am going to jump right into a gig with <a href="http://slide.com">Slide Inc.</a> as a Web Developer. However, before I get to any Web Development tasks I am going to be addressing a pretty serious need they have in their QA department. Slide currently has many applications that are used directly on their site, slide.com and on social networks (primarily facebook.com and myspace.com) and right now they have essentially no functional automation.<br />
<img style="float:right" src="http://adamchristian.com/wp-content/uploads/2008/06/images-1.jpeg" alt="" width="86" height="73" class="alignnone size-thumbnail wp-image-19" /><br />
At <a href="http://osafoundation.org">OSAF</a> I saw what a major difference automated testing can make, and the reason I am so excited about this is because I was a QA Engineer at one point manually testing a pretty complex web application (<a title="Cosmo" href="http://hub.chandlerproject.org">Cosmo</a>) and I have seen how much a difference test automation can make in the release cycle, the development cycle, QA test cycles and simply the daily lives of your poor QA teams.</p>
<p><img style="float:left;" src="http://adamchristian.com/wp-content/uploads/2008/06/wmicon.png" alt="" width="41" height="40" /><br />
How am I going to accomplish this task you might ask? Thats the best part &#8212; I have fixed about 10 bugs in <a href="http://windmill.osafoundation.org">Windmill</a> in the last week, and will be putting whatever effort is required into getting Windmill to a state where we can functionally automate all of Slides application testing. This looks to be a serious win for Slide, and a serious win for Windmill. </p>
<p>At some point in the future, when I feel that this project is to the point where it can be maintained and built on by the Slide QA teams I will move on to Web Development tasks. At that point a smaller amount of time will still be allocated to maintaining Windmill, adding new features that Slide and the community need and working towards the next evolution of Windmill. That is quite a ways off in the future, so I will address all that when the time comes.<br />
<img style="float:right;" src="http://adamchristian.com/wp-content/uploads/2008/06/images.jpeg" alt="" title="images" width="127" height="46" class="alignnone size-medium wp-image-21" /><br />
The rest of my &#8216;free&#8217; development time, will be consumed by a project that I am involved in with the Mozilla Corporation. This project lives in the QA realm as well, and could probably be classified as a distant cousin to Windmill. More details about that will be announced the week of OSCON, so keep your eyes pealed.</p>
<p>Change can be extremely tough, but it is also very exciting. I want to thank all of my former peers at Rearden for a good experience, and I wish them all the absolute best.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamchristian.com/archives/20/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
