<?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>Sönke Rohde &#187; Agile</title>
	<atom:link href="http://soenkerohde.com/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://soenkerohde.com</link>
	<description>Flash Platform (Flash, Flex, AIR) thoughts and examples</description>
	<lastBuildDate>Wed, 18 Apr 2012 22:45:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Running Project Sprouts</title>
		<link>http://soenkerohde.com/2010/03/running-project-sprouts/</link>
		<comments>http://soenkerohde.com/2010/03/running-project-sprouts/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 02:12:16 +0000</pubDate>
		<dc:creator>Sönke</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://soenkerohde.com/?p=907</guid>
		<description><![CDATA[<p>A few weeks ago I attended the SanFlashCisco usergroup meeting which was really great. After the meeting we moved to the Mars bar where I got to know Luke Bayes who founded Project Sprouts. Project Sprouts is a Ruby based open-source, cross-platform project generation and configuration tool for ActionScript 2, ActionScript 3, Adobe AIR and Flex [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I attended the <a href="http://sanflashcisco.com/">SanFlashCisco</a> usergroup meeting which was really great. After the meeting we moved to the Mars bar where I got to know <a href="http://www.lukebayes.com/">Luke Bayes</a> who founded <a href="http://projectsprouts.org/">Project Sprouts</a>. Project Sprouts is a Ruby based open-source, cross-platform project generation and configuration tool for ActionScript 2, ActionScript 3, Adobe AIR and Flex projects. Also be sure to check the the <a href="http://github.com/lukebayes/project-sprouts">GitHub repository</a>.</p>
<p>The following works on a Mac with <a href="http://www.ruby-lang.org/en/downloads/">Ruby</a> and <a href="http://rubyforge.org/frs/?group_id=126">RubyGems</a> installed but should be similar under Windows. Open the Terminal, switch to your working directory where you want to create your new project and:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># installs project sprouts</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> sprout
<span style="color: #666666; font-style: italic;"># creates a new Flex 4 project named SproutsExample</span>
sprout <span style="color: #660033;">-n</span> flex4 SproutsExample
<span style="color: #666666; font-style: italic;"># switch directory</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> SproutsExample
<span style="color: #666666; font-style: italic;"># build the project</span>
rake</pre></div></div>

<p>Now you see all dependencies like SDK and Flash Player being downloaded. So you can run this on a machine without Flex SDK and Flash Player installed because Sprouts handles all dependencies. However, I got this error:</p>
<pre>/Library/Ruby/Gems/1.8/gems/sprout-flashplayer-bundle-10.22.7/lib/clix_wrapper.rb:20:  (RuntimeError)
[ERROR] You must install the rb-appscript gem to use the desktop debug Flash Player, you do this by running: sudo gem install rb-appscript</pre>
<p>As being told I tried to run: <em>sudo gem install rb-appscript</em> which ended up in this error:</p>
<pre>ERROR:  Error installing rb-appscript:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h</pre>
<p>After a little web search I <a href="http://www.ruby-forum.com/topic/191688">found out</a> that I need to install the latest <a href="http://developer.apple.com/tools/xcode/">XCode</a> since I am on Snow Leopard.</p>
<p>Having XCode installed I tried again <em>sudo gem install rb-appscript</em> and it works!</p>
<p>So another try with <em>rake</em> and horray, the project gets compiled and the standalone flash player comes up showing the compiled default project!</p>
<p>So far so good. Now let&#8217;s try to create a class and a unit test for it.<br />
Due to a little bug in the flex 4 gem edit scripts/generate and replace</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"> <span style="color:#9966CC; font-weight:bold;">begin</span>
      <span style="color:#6666ff; font-weight:bold;">Sprout::Sprout</span>.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'flex4'</span>, ARGV.<span style="color:#9900CC;">shift</span>, ARGV, <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#6666ff; font-weight:bold;">RubiGen::GeneratorError</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; e
      <span style="color:#6666ff; font-weight:bold;">Sprout::Sprout</span>.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'as3'</span>, ARGV.<span style="color:#9900CC;">shift</span>, ARGV, <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>with</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">Sprout::Sprout</span>.<span style="color:#9900CC;">generate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'as3'</span>, ARGV.<span style="color:#9900CC;">shift</span>, ARGV, <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>btw: when the fix for this is in place update with</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem update sprout-flex4-bundle</pre></div></div>

<p>So, now you are ready to create a class including test classes:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># creates the class com.soenkerohde.util.MathUtil and test classes</span>
script<span style="color: #000000; font-weight: bold;">/</span>generate com.soenkerohde.util.MathUtil</pre></div></div>

<p>You see the output</p>
<pre>create  src/com/soenkerohde/util
create  src/com/soenkerohde/util/MathUtil.as
create  test/com/soenkerohde/util
create  test/com/soenkerohde/util/MathUtilTest.as
force  test/AllTests.as
</pre>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Run the tests</span>
rake <span style="color: #7a0874; font-weight: bold;">test</span></pre></div></div>

<p>Now you see your tests compiling and they fail for now to remind you that you haven&#8217;t implemented the actual test code yet.</p>
<p>Pretty impressed by Sprouts so far but enough for now. In my next post I will try to go a little bit deeper and check what else Sprouts can do for me to not waste time on what can be automated.</p>
]]></content:encoded>
			<wfw:commentRss>http://soenkerohde.com/2010/03/running-project-sprouts/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Connecting Pivotal Tracker with GitHub</title>
		<link>http://soenkerohde.com/2010/01/connecting-pivotal-tracker-with-github/</link>
		<comments>http://soenkerohde.com/2010/01/connecting-pivotal-tracker-with-github/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 20:56:18 +0000</pubDate>
		<dc:creator>Sönke</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://soenkerohde.com/?p=893</guid>
		<description><![CDATA[<p>GitHub with Pivotal Tracker is the killer agile combination.
With the just release Tracker v3 API update it is now easy to connect them.</p>
<p>You only have to configure GitHub Post-Receive Hooks so you can automatically deliver stories/bugs by providing the Tracker ID in the commit statement like: Fixes #TrackerId</p>
<p>How to set it up:</p>

Create a Pivotal Tracker API [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com">GitHub</a> with <a href="http://www.pivotaltracker.com">Pivotal Tracker</a> is the killer agile combination.<br />
With the <a href="http://pivotallabs.com/users/dan/blog/articles/1143-new-in-pivotal-tracker-api-v3-github-campfire-support-jira-lighthouse-and-satisfaction-integration">just release Tracker v3 API update</a> it is now easy to connect them.</p>
<p>You only have to <a href="http://www.pivotaltracker.com/help/api?version=v3#github_hooks">configure GitHub Post-Receive Hooks</a> so you can automatically deliver stories/bugs by providing the Tracker ID in the commit statement like: Fixes #TrackerId</p>
<p>How to set it up:</p>
<ol>
<li>Create a Pivotal Tracker API token: Login to PT -&gt; My Profile -&gt; Create New Token</li>
<li>GitHub -&gt; Project -&gt; Admin -&gt; Service Hooks -&gt; Post-Receive URLs</li>
<li>Paste <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">https://www.pivotaltracker.com/services/v3/github_commits?token=YOUR_TOKEN_FROM_STEP_1</span></li>
</ol>
<p>Now that was easy!</p>
]]></content:encoded>
			<wfw:commentRss>http://soenkerohde.com/2010/01/connecting-pivotal-tracker-with-github/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GIT Tips and Tools</title>
		<link>http://soenkerohde.com/2009/11/git-tips-and-tools/</link>
		<comments>http://soenkerohde.com/2009/11/git-tips-and-tools/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 11:05:53 +0000</pubDate>
		<dc:creator>Sönke</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://soenkerohde.com/?p=679</guid>
		<description><![CDATA[<p>If you don&#8217;t know GIT yet it is a software version control system like Subversion, CVS or Perforce. It was primary developed by Linus Torvalds for Linux kernel development.  I have started using GIT in the beginning of 2009 and I must say that after a not so small learning curve I really like it and [...]]]></description>
			<content:encoded><![CDATA[<p>If you don&#8217;t know <a href="http://git-scm.com/">GIT</a> yet it is a software version control system like Subversion, CVS or Perforce. It was primary developed by Linus Torvalds for Linux kernel development.  I have started using GIT in the beginning of 2009 and I must say that after a not so small learning curve I really like it and see all the benefits especially when it comes to collaboration.</p>
<p>There are alternatives but <a href="http://github.com">GitHub</a> is currently the best service to use GIT. You can host open source projects for free and the pricing for private projects is not too expensive. Check out <a href="http://github.com/srohde/">my GitHub profile with my open source projects here</a>.</p>
<p>To get started you should first <a href="http://git-scm.com/download">install GIT</a> on your machine and read the <a href="http://git-scm.com/documentation">docs</a>.</p>
<p>The tooling support around GIT is perhaps not as extensive like for other VCS yet, so if you are afraid of using the console GIT might not be right for you. However, there are already great tools around but for many things I am still using the Terminal.</p>
<p><strong>Custom Bash Prompt</strong></p>
<p><strong></strong>I am using a <a href="http://railsdog.com/blog/2009/03/custom-bash-prompt-for-git-branches/">custom bash prompt</a> which indicates on which branch you are and further color highlighting helps to keep track:</p>
<div class="thumbnail"><a href="http://skitch.com/soenkerohde/nf151/terminal-bash-140x50"><img src="http://img.skitch.com/20091101-8cu4cr8cswwnjrmuh6adqg8p1p.preview.jpg" alt="Terminal — bash — 140×50" /></a><br />
<span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080">Uploaded with <a href="http://plasq.com/">plasq</a>&#8216;s <a href="http://skitch.com">Skitch</a>!</span></div>
<p><strong>Eclipse Plugin</strong></p>
<p>My main IDE is Eclipse with Flash Builder or FDT so the <a href="http://www.eclipse.org/egit/">Eclipse EGIT plugin</a> is really a must have:</p>
<div class="thumbnail"><a href="http://skitch.com/soenkerohde/nf1hf/flash-eclipse-users-soenkerohde-documents-workspace-gumbo"><img src="http://img.skitch.com/20091101-xe56qk4niq97kwnfgwisjau1um.preview.jpg" alt="Flash - Eclipse - /Users/soenkerohde/Documents/workspace_gumbo" /></a><br />
<span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080">Uploaded with <a href="http://plasq.com/">plasq</a>&#8216;s <a href="http://skitch.com">Skitch</a>!</span></div>
<p><strong>Merge Tool</strong></p>
<p>Merging is an important task when working in a team. GIT is really flexible and you can configure it to use 3rd party apps for merging. I am not a big Perforce fan but the free <a href="http://www.perforce.com/perforce/products/merge.html">p4merge</a> tool is really great. Check out the <a href="http://www.andymcintosh.com/?p=33">blog post by Andy McIntosh</a> for a detailed explanation how to set it up.</p>
<p><strong>GitX</strong></p>
<p><a href="http://gitx.frim.nl/">GitX</a> is maybe the best tool to visualize the branch history but I must say that I don&#8217;t use it in my daily work. It can also be used to create commits and revert changes etc.</p>
<p><strong>Links</strong></p>
<ul>
<li><a href="http://git.or.cz/course/svn.html">GIT &#8211; SVN</a></li>
<li><a href="http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html">A GIT workflow for agile teams</a></li>
<li><a href="http://blog.hasmanythrough.com/2008/12/18/agile-git-and-the-story-branch-pattern">Agile GIT and the story branch pattern</a></li>
<li><a href="http://www.eecs.harvard.edu/~cduan/technical/git/">Understanding GIT conceptually</a></li>
<li><a href="http://jarrodspillers.com/articles/git-merge-vs-git-rebase-avoiding-rebase-hell">Merge vs. Rebase</a></li>
<li><a href="http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html">Squashing commits with rebase</a></li>
<li><a href="http://github.com/chris/tracker_github_hook">GitHub Post-Receive hook for Pivotal Tracker</a></li>
<li><a href="http://code.google.com/p/tortoisegit/">TortoiseGIT for Windows</a><strong><br />
</strong></li>
</ul>
<p><strong>Commands</strong></p>
<p>If you are new to GIT it is hard to remember all the different commands. Here a list of commands which I use very often also as a reference for me <img src='http://soenkerohde.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Create a local repository</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># clone an existing repository</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #7a0874; font-weight: bold;">&#91;</span>GITHUB_CLONE_URL<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># or do it the long way:</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>PROJECT_DIR<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>PROJECT_DIR<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> init
<span style="color: #c20cb9; font-weight: bold;">touch</span> README
<span style="color: #c20cb9; font-weight: bold;">git</span> add README
<span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">'first commit'</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> remote add origin <span style="color: #7a0874; font-weight: bold;">&#91;</span>GITHUB_CLONE_URL<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> push origin master</pre></div></div>

<p><strong>Changes and Commits</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># To see which files are changed and maybe not added yet to the repository use</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> status
<span style="color: #666666; font-style: italic;"># Add a file to the repository</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> add <span style="color: #7a0874; font-weight: bold;">&#91;</span>FILE<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;"># or to add all untracked files</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> add .
&nbsp;
<span style="color: #666666; font-style: italic;"># revert a change</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #660033;">--</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>FILE<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># when you are ready with a change</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-am</span> <span style="color: #ff0000;">&quot;[CHANGE_DESCRIPTION]&quot;</span>
<span style="color: #666666; font-style: italic;"># a commit is only local so when you want to push it to the server</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> push origin <span style="color: #7a0874; font-weight: bold;">&#91;</span>REMOTE_BRANCH_NAME<span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p><strong>Branches</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Create remote branch</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> push origin master:<span style="color: #7a0874; font-weight: bold;">&#91;</span>REMOTE_BRANCH_NAME<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;"># Checkout and track remote branch</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #660033;">--track</span> <span style="color: #660033;">-b</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>LOCAL_BRANCH_NAME<span style="color: #7a0874; font-weight: bold;">&#93;</span> origin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#91;</span>REMOTE_BRANCH_NAME<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># local branch list</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> branch <span style="color: #660033;">-l</span>
<span style="color: #666666; font-style: italic;"># remote branch list</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> branch <span style="color: #660033;">-r</span></pre></div></div>

<p><strong>Tags</strong>: Every time you make a release or reach a milestone creating a tag is a good idea.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Create tag</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> tag <span style="color: #660033;">-a</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>TAG_NAME<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;[TAG_DESCRIPTION]&quot;</span>
<span style="color: #666666; font-style: italic;"># Push tag</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> push <span style="color: #660033;">--tags</span> origin master</pre></div></div>

<p><strong>Merge</strong>: You should work on a branch when implementing a new feature or story. If you are done you should merge this into the main branch.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Switch to feature/story branch</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #7a0874; font-weight: bold;">&#91;</span>STORY_BRANCH<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;"># make changes and when done</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-am</span> <span style="color: #ff0000;">&quot;[DESCRIPTION]&quot;</span>
<span style="color: #666666; font-style: italic;"># switch to master</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout master
<span style="color: #666666; font-style: italic;"># get all changes from master</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> pull
<span style="color: #666666; font-style: italic;"># switch to story branch</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #7a0874; font-weight: bold;">&#91;</span>STORY_BRANCH<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;"># rebase story branch with master changes</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> rebase master
<span style="color: #666666; font-style: italic;"># maybe solve conflicts</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> mergetool
<span style="color: #666666; font-style: italic;"># switch back to master</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout master
<span style="color: #666666; font-style: italic;"># finally we can merge it in and there should be no conflict</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> merge <span style="color: #7a0874; font-weight: bold;">&#91;</span>STORY_BRANCH<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> push</pre></div></div>

<p><strong>Stash</strong>: When you have changes in your working directory and want to switch to another branch you can stash your changes.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Create stash</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> stash
<span style="color: #666666; font-style: italic;"># Apply</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> stash apply</pre></div></div>

<p>When you migrate a project from SVN to GIT this comes in handy:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">find</span> . <span style="color: #660033;">-name</span> .svn <span style="color: #660033;">-print0</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-0</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span></pre></div></div>

<p>btw: GIT has only one .git directory and not one for every directory like SVN</p>
<p>If you have some commands which are important on a daily base please drop a comment so I can extend this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://soenkerohde.com/2009/11/git-tips-and-tools/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Swiz Unit Tests with FlexUnit 4</title>
		<link>http://soenkerohde.com/2009/05/swiz-unit-tests-with-flexunit-4/</link>
		<comments>http://soenkerohde.com/2009/05/swiz-unit-tests-with-flexunit-4/#comments</comments>
		<pubDate>Tue, 26 May 2009 20:14:02 +0000</pubDate>
		<dc:creator>Sönke</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Swiz]]></category>

		<guid isPermaLink="false">http://soenkerohde.com/?p=478</guid>
		<description><![CDATA[<p>Recently FlexUnit 4 beta 1 was released. To get started I recommend FlexUnit 4 in 360 seconds and the feature overview. If you are using the Swiz framework and want to apply some changes to provide a patch file you could run the unit tests to be sure to break no features.</p>
<p>This is quite easy to [...]]]></description>
			<content:encoded><![CDATA[<p>Recently <a href="http://opensource.adobe.com/wiki/display/flexunit/Downloads">FlexUnit 4 beta 1</a> was released. To get started I recommend <a href="http://blogs.digitalprimates.net/codeSlinger/index.cfm/2009/5/3/FlexUnit-4-in-360-seconds">FlexUnit 4 in 360 seconds</a> and the <a href="http://opensource.adobe.com/wiki/display/flexunit/FlexUnit+4+feature+overview">feature overview</a>. If you are using the <a href="http://swizframework.org/">Swiz framework</a> and want to apply some changes to provide a patch file you could run the unit tests to be sure to break no features.</p>
<p>This is quite easy to do with the following steps:</p>
<ul>
<li>Create a new Flex AIR project: SwizTestRunner</li>
<li><a href="http://opensource.adobe.com/wiki/display/flexunit/Downloads">Download latest FlexUnit 4</a> and copy the SWCs into the SwizTestRunner libs directory</li>
<li>Add the Swiz test class path: /../Swiz/src/test/flex</li>
<li>Add your compiled Swiz.swc as a library</li>
<li>Copy-n-paste the following into the SwizTestRunner.mxml</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?<span style="color: #0066CC;">xml</span> <span style="color: #0066CC;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;</span>mx:WindowedApplication xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span>
	applicationComplete=<span style="color: #ff0000;">&quot;applicationCompleteHandler()&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;1200&quot;</span> <span style="color: #0066CC;">height</span>=<span style="color: #ff0000;">&quot;640&quot;</span>
	xmlns:flexUnitUIRunner=<span style="color: #ff0000;">&quot;http://www.adobe.com/2009/flexUnitUIRunner&quot;</span><span style="color: #66cc66;">&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:Script<span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
			<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">swizframework</span>.<span style="color: #006600;">service</span>.<span style="color: #006600;">ServiceTestSuite</span>;
			<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">swizframework</span>.<span style="color: #006600;">autowire</span>.<span style="color: #006600;">AutowireTestSuite</span>;
			<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">swizframework</span>.<span style="color: #006600;">factory</span>.<span style="color: #006600;">FactoryTestSuite</span>;
			<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">swizframework</span>.<span style="color: #006600;">util</span>.<span style="color: #006600;">ExpressionTestSuite</span>;
			<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">flexunit</span>.<span style="color: #006600;">listeners</span>.<span style="color: #006600;">UIListener</span>;
			<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">flexunit</span>.<span style="color: #006600;">runner</span>.<span style="color: #006600;">FlexUnitCore</span>;
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> core:FlexUnitCore;
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> applicationCompleteHandler<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				core = <span style="color: #000000; font-weight: bold;">new</span> FlexUnitCore<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				core.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> UIListener<span style="color: #66cc66;">&#40;</span>uiListener<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
				core.<span style="color: #006600;">run</span><span style="color: #66cc66;">&#40;</span>AutowireTestSuite, ServiceTestSuite, ExpressionTestSuite, FactoryTestSuite<span style="color: #66cc66;">&#41;</span>;
				move<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span>, <span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>mx:Script<span style="color: #66cc66;">&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:TraceTarget fieldSeparator=<span style="color: #ff0000;">&quot;-&gt;&quot;</span> includeCategory=<span style="color: #ff0000;">&quot;true&quot;</span> includeTime=<span style="color: #ff0000;">&quot;true&quot;</span> includeLevel=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #66cc66;">/&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>flexUnitUIRunner:TestRunnerBase id=<span style="color: #ff0000;">&quot;uiListener&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;100%&quot;</span> <span style="color: #0066CC;">height</span>=<span style="color: #ff0000;">&quot;100%&quot;</span> <span style="color: #66cc66;">/&gt;</span>
&nbsp;
<span style="color: #66cc66;">&lt;/</span>mx:WindowedApplication<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p>Now you can run the application and you should see the unit tests being executed:</p>
<div class="thumbnail"><a href="http://skitch.com/soenkerohde/btaqt/swiztestrunner"><img src="http://img.skitch.com/20090526-ra9xcphjjsj88uy3sca8xpxbrr.preview.jpg" alt="SwizTestRunner" /></a><br /><span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080">Uploaded with <a href="http://plasq.com/">plasq</a>&#8216;s <a href="http://skitch.com">Skitch</a>!</span></div>
<p>To get started just have a look at the Swiz unit tests we have build so far. FlexUnit 4 is metadata driven so you should feel home when you use Swiz. We are continually extending our unit test suites but if you find a bug and can prove it with a failed test case you have provided this would be pretty awesome!</p>
]]></content:encoded>
			<wfw:commentRss>http://soenkerohde.com/2009/05/swiz-unit-tests-with-flexunit-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile with Pivotal Tracker</title>
		<link>http://soenkerohde.com/2009/04/agile-with-pivotal-tracker/</link>
		<comments>http://soenkerohde.com/2009/04/agile-with-pivotal-tracker/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 12:51:24 +0000</pubDate>
		<dc:creator>Sönke</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://soenkerohde.com/?p=346</guid>
		<description><![CDATA[<p>I have used a few project management tools in the past and the one which really convinced me is the award winning Pivotal Tracker (PT). It is hosted in the cloud and is for free so you can start using it right away.</p>
<p>The first thing you and all project members should do is activating the email [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Pivotaltracker" src="http://soenkerohde.com/img/Dashboard_-_Pivotal_Tracker-20090425-130255.png" alt="" width="439" height="51" />I have used a few project management tools in the past and the one which really convinced me is the <a href="http://www.joltawards.com/winners.html">award winning</a> <a href="http://www.pivotaltracker.com">Pivotal Tracker</a> (PT). It is hosted in the cloud and is for free so you can start using it right away.</p>
<p>The first thing you and all project members should do is activating the email notification in your profile settings. I don&#8217;t understand why this is off by default though. Another thing I also change for every project is using the Fibonacci Point Scale Fibonacci to have a more flexible point system. The points of a story have to be set by the story owner during planning or at least when he starts with the story and should represent the difficulty of the task. PT then &#8220;learns&#8221; how much story points you are able to achieve in a week which results in a velocity. According to your velocity the stories are then divided into weeks:</p>
<p><img class="alignnone" title="PT Weeks" src="http://soenkerohde.com/img/My_Demo_Project_-_Pivotal_Tracker-20090426-165717.png" alt="" width="599" height="390" /></p>
<p>So you can already have a schedule without estimating how much hours you&#8217;ll spend on a specific story which is always a pain for a developer. But of course there are deadlines so PT offers two kinds of releases. You can add releases with a fix date or without. To add a release simply add a new story, change the kind to &#8220;Release&#8221; and add a date if you have a fix deadline. Then drag the release under the last story you want to have done for this specific release.</p>
<p><img class="alignnone" title="PT Release 1" src="http://soenkerohde.com/img/My_Demo_Project_-_Pivotal_Tracker-20090426-170456.png" alt="" width="396" height="301" /></p>
<p>So in the screenshot above I defined the release Beta 1 with the fix date May 7th and it should include the stories up to &#8220;User can upload photo&#8221;. &#8220;User can send message&#8221; will already be part of the next release. In this example we see with the blue indicated release that we can achieve the milestone calculated based on our velocity and the points we have given the stories. When the developer for instance says &#8220;User can upload photo&#8221; is far more work and he changes his estimation to 3 it and perhaps also other stories got re-estimated and the system detects that the release can&#8217;t be reached anymore the release shows up in red so you know that you have to react in some kind of way. Bugs and chores don&#8217;t have points by default which can be changed and is <a href="http://www.pivotaltracker.com/help#whycantiestimatemybugsandchores">explained here</a>.</p>
<p>For me the main advantages are that you have a perfect project overview because you never get lost in any detail pages where you have to navigate back and forth. To change the priority of a stories only drag it to the right position. The story details can be edited when you open the story by clicking the arrow:</p>
<p><img class="alignnone" title="PT Detail" src="http://soenkerohde.com/img/My_Demo_Project_-_Pivotal_Tracker-20090426-171701.png" alt="" width="387" height="505" /></p>
<p>You can define the kind of the story which can be Feature, Bug, Chore and Release. The story owner has to estimate points depending on the difficulty. Labels can be added on the fly and so on. The states are Not Yet Started, Started, Finished, Delivered, Accepted and Rejected. When a story is delivered the story requester gets notified to either accept or reject the story meaning doing the quality assurance of the story is implemented correctly.</p>
<p>PT has tons of other features like generating reports etc.. So for further information I would recommend the PT website which has a really comprehensive <a href="http://www.pivotaltracker.com/help">help part</a>. Ah yes, and PT offers a bunch of <a href="http://www.pivotaltracker.com/help/api">RESTful APIs</a> for further integration.</p>
]]></content:encoded>
			<wfw:commentRss>http://soenkerohde.com/2009/04/agile-with-pivotal-tracker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bye, Bye Adobe and Hello Brazil</title>
		<link>http://soenkerohde.com/2009/01/bye-bye-adobe-and-hello-brazil/</link>
		<comments>http://soenkerohde.com/2009/01/bye-bye-adobe-and-hello-brazil/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 13:34:30 +0000</pubDate>
		<dc:creator>Sönke</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Swiz]]></category>

		<guid isPermaLink="false">http://soenkerohde.com/?p=252</guid>
		<description><![CDATA[<p>Happy new year for all of you guys!</p>
<p>2009 already began with a big change for me. I have left Adobe to move over to Brazil. I had this plan in mind for a longer time and it was really hard to leave Adobe and my dear colleagues behind. During the two years I worked in the [...]]]></description>
			<content:encoded><![CDATA[<p>Happy new year for all of you guys!</p>
<p>2009 already began with a big change for me. I have left Adobe to move over to Brazil. I had this plan in mind for a longer time and it was really hard to leave Adobe and my dear colleagues behind. During the two years I worked in the Mobile Device Business Unit and later in the Creative Suite Business Unit on the Device Intelligence Portal:</p>
<blockquote><p><em>&#8220;Device manufacturers can use the web based Adobe Device Intelligence Portal for worldwide publishing of their device information to Adobe authoring tools.</em>&#8220;</p></blockquote>
<p>It is a B2B software and part of the ecosystem of <a href="http://www.adobe.com/products/creativesuite/devicecentral/">Device Central</a> and mobile authoring in general. The software is based on Flex and AIR on the client side and Java/LiveCycle Data Services on the server side. My responsibility was driving the client side so I worked full time with Flex/AIR and the integration of LCDS. I worked with a great team and our agile approach with Scrum was really pleasantly and highly productive. I am so thankful I got to know so friendly and professional people in the Hamburg office where I also made a lot of friends. I also had the opportunity to visit the offices in San Francisco and the headquarter in San Jose and meet my US colleagues there which was such a real nice experience. Adobe is really a great place to work and I wish them best of luck for 2009! The experience to work for Adobe is unique and exceeded my expectations so far. May the RIA be with you!</p>
<p>During my time at Adobe in Hamburg I also helped out the <a href="http://flexughh.de/">Flex Usergroup Hamburg</a> where I meet so kind and talented people from the community. I will miss you guys and the meetings and discussions a lot so please come up with remote access <img src='http://soenkerohde.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> !</p>
<p>So what&#8217;s up in 2009?</p>
<p>I started to work as Sr. Flash Platform freelancer at <a href="http://aupeo.com">AUPEO!</a> and will team up with my dear friend <a href="http://wahlers.com.br/claus/blog/">Claus Wahlers</a> and his company <a href="http://codeazur.com.br/">côdeazur</a> which is located in São Paulo. Aupeo is a new platform to discover music with friends and communities. It is still private beta but be sure to <a href="http://aupeo.com/">sign up</a>!</p>
<p>Besides that I will be contributing to the <a href="http://code.google.com/p/swizframework/">Swiz framework</a> which is a framework for Flex as much as possible. I started working with Swiz about 4 month ago and can say that it really accelerated my dev speed a lot and feels so good to use. Swiz is &#8220;brutally simple&#8221; and I will blog about the new extensions for runtime validation soon. Also be sure to follow <a href="http://cdscott.blogspot.com/">Chris Scott&#8217;s blog</a> who will update on the new changes as well and I just saw <a href="http://www.briankotek.com/blog/index.cfm/2009/1/5/A-New-Series-on-Understanding-and-Using-the-Swiz-Framework-for-Flex">Brian Kotek</a> is preparing a Swiz blog series too.</p>
]]></content:encoded>
			<wfw:commentRss>http://soenkerohde.com/2009/01/bye-bye-adobe-and-hello-brazil/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

