<?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>Shaun Smith &#187; Tutorials</title>
	<atom:link href="http://shaun.boyblack.co.za/blog/category/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://shaun.boyblack.co.za/blog</link>
	<description>Flex, Ruby, Mongo - London, UK</description>
	<lastBuildDate>Sun, 05 Feb 2012 04:20:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Readme</title>
		<link>http://shaun.boyblack.co.za/blog/2012/02/04/readme/</link>
		<comments>http://shaun.boyblack.co.za/blog/2012/02/04/readme/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 17:04:25 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Banter]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Robotlegs]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[readme]]></category>

		<guid isPermaLink="false">http://shaun.boyblack.co.za/blog/?p=1069</guid>
		<description><![CDATA[Have I mentioned that I love GitHub? When you put a readme file into a folder that file is formatted and presented nicely through GitHub&#8217;s file browser. For example: https://github.com/visionmedia/uikit Scrolling down a little we can see a nicely formatted readme file. GitHub strongly recommends adding a readme file to the root of your repository, but what I didn&#8217;t realise until recently was that it works for any folder in your repo. GitHub already has the best online file browser &#8230; <a href="http://shaun.boyblack.co.za/blog/2012/02/04/readme/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Have I mentioned that I love <a href="https://github.com/">GitHub</a>?</p>
<p>When you put a readme file into a folder that file is formatted and presented nicely through GitHub&#8217;s file browser. For example:</p>
<p><a href="https://github.com/visionmedia/uikit">https://github.com/visionmedia/uikit</a></p>
<p>Scrolling down a little we can see a nicely formatted readme file.<span id="more-1069"></span></p>
<p>GitHub strongly recommends adding a readme file to the root of your repository, but what I didn&#8217;t realise until recently was that it works for any folder in your repo. GitHub already has the best online file browser out there, but this specific feature can turn your source tree into your documentation.</p>
<p>For <a href="https://github.com/robotlegs/robotlegs-framework">Robotlegs 2</a> I decided to try it out:</p>
<p><a href="https://github.com/darscan/robotlegs-framework/tree/version2/src/robotlegs/bender/core/async">Async</a><br />
<a href="https://github.com/darscan/robotlegs-framework/tree/version2/src/robotlegs/bender/core/messaging">MessageDispatcher</a><br />
<a href="https://github.com/darscan/robotlegs-framework/tree/version2/src/robotlegs/bender/extensions">Extensions</a></p>
<p>Almost every package in the entire repo has a readme file. The best way to learn about Robotlegs 2 is to browse the <a href="https://github.com/robotlegs/robotlegs-framework">source and readme files</a> on GitHub.</p>
<p><img class="alignnone size-full wp-image-1075" title="github-logo" src="http://shaun.boyblack.co.za/blog/wp-content/uploads/2012/02/github-logo.png" alt="" width="512" height="512" /></p>
]]></content:encoded>
			<wfw:commentRss>http://shaun.boyblack.co.za/blog/2012/02/04/readme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OS X Git Prompt</title>
		<link>http://shaun.boyblack.co.za/blog/2009/11/15/os-x-git-prompt/</link>
		<comments>http://shaun.boyblack.co.za/blog/2009/11/15/os-x-git-prompt/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 01:26:37 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://shaun.boyblack.co.za/blog/?p=879</guid>
		<description><![CDATA[I&#8217;m currently using a modified version of git-prompt that looks something like this: If you want to try it out, you can download this zip-ball: git-prompt.zip Unpack that into your User folder, and add this to your bash .profile: # Git Prompt - Modified from: http://volnitsky.com/project/git-prompt/ [[ $- == *i* ]] &#38;&#38; . ~/git-prompt/git-prompt.sh Tip: You can open your .profile from your terminal like so: open ~/.profile Note: You will need to start a new shell session after editing that &#8230; <a href="http://shaun.boyblack.co.za/blog/2009/11/15/os-x-git-prompt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently using a modified version of <a title="Git-prompt" href="http://volnitsky.com/project/git-prompt/">git-prompt</a> that looks something like this:</p>
<p><img class="alignnone size-full wp-image-885" title="Git-prompt" src="http://shaun.boyblack.co.za/blog/wp-content/uploads/2009/11/Git-prompt1.png" alt="Git-prompt" width="499" height="558" /><br />
<span id="more-879"></span></p>
<p>If you want to try it out, you can download this zip-ball:</p>
<p><a href="http://shaun.boyblack.co.za/blog/wp-content/uploads/2009/11/git-prompt.zip">git-prompt.zip</a></p>
<p>Unpack that into your User folder, and add this to your bash .profile:</p>
<pre># Git Prompt - Modified from: http://volnitsky.com/project/git-prompt/
[[ $- == *i* ]] &amp;&amp; . ~/git-prompt/git-prompt.sh</pre>
<p>Tip: You can open your .profile from your terminal like so:</p>
<pre>open ~/.profile</pre>
<p>Note: You will need to start a new shell session after editing that file in order to see the changes.</p>
<p>I use Nano as my default bash text editor. If you want that, add this to your .profile:</p>
<pre># Use the nano text editor
export EDITOR="nano"</pre>
<p>And for the Terminal.app style:</p>
<p><img class="alignnone size-full wp-image-883" title="Terminal-prefs" src="http://shaun.boyblack.co.za/blog/wp-content/uploads/2009/11/Terminal-prefs.png" alt="Terminal-prefs" width="500" height="386" /></p>
<p><a href="http://shaun.boyblack.co.za/blog/wp-content/uploads/2009/11/Power-User-Pro.terminal.zip">Power-User-Pro.terminal.zip</a></p>
<p>The shell commands (copy-paste):</p>
<pre>mkdir Test
cd Test/
git init
touch somefile
git add somefile
git commit -m "commit message"
echo "hi" &gt; somefile
git add somefile
git commit -m "second commit"
git checkout -b temp
echo "hello" &gt; somefile
git add .
git commit -m "3rd commit"</pre>
]]></content:encoded>
			<wfw:commentRss>http://shaun.boyblack.co.za/blog/2009/11/15/os-x-git-prompt/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>RobotLegs Updates, Demos and Unit Testing</title>
		<link>http://shaun.boyblack.co.za/blog/2009/08/01/robotlegs-updates-demos-and-unit-testing/</link>
		<comments>http://shaun.boyblack.co.za/blog/2009/08/01/robotlegs-updates-demos-and-unit-testing/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 14:17:51 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[Robotlegs]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[crybaby]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://shaun.boyblack.co.za/blog/?p=737</guid>
		<description><![CDATA[Things have been rolling along quite nicely on the RobotLegs front lately. Joel Hooks put together two useful examples, check &#8216;em out: RobotLegs Image Gallery Demo RobotLegs and FlexUnit 4 I&#8217;ve also pushed out quite a couple of framework updates (currently at v0.6): Mediator onRegisterComplete hook -&#62; onRegister (for those coming from PureMVC) Spring ActionScript adapters (as an alternative to SmartyPants-IOC) Namespace changed to org.robotlegs.* Logging now uses as3commons-logging That last change means that RobotLegs is now dependent on the &#8230; <a href="http://shaun.boyblack.co.za/blog/2009/08/01/robotlegs-updates-demos-and-unit-testing/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Things have been rolling along quite nicely on the <a title="RobotLegs AS3" href="http://shaun.boyblack.co.za/blog/robotlegs-as3/">RobotLegs</a> front lately. <a title="Joel Hooks | Building Blocks" href="http://joelhooks.com/">Joel Hooks</a> put together two useful examples, check &#8216;em out:</p>
<ul>
<li><a href="http://joelhooks.com/2009/07/17/robotlegs-as3-a-dependency-injection-driven-mvcs-framework-for-flashflex-%E2%80%93-inspired-by-puremvc/">RobotLegs Image Gallery Demo</a></li>
<li><a href="http://joelhooks.com/2009/07/21/unit-testing-with-inversion-of-control-ioc-and-dependency-injection-di-with-the-robotlegs-framework-and-flexunit-4/">RobotLegs and FlexUnit 4</a></li>
</ul>
<p><span id="more-737"></span>I&#8217;ve also pushed out quite a couple of <a title="RobotLegs Commits" href="http://github.com/darscan/robotlegs/commits/master">framework updates</a> (currently at v0.6):</p>
<ul>
<li>Mediator onRegisterComplete hook -&gt; onRegister (for those coming from <a title="PureMVC" href="http://puremvc.org">PureMVC</a>)</li>
<li><a title="Spring ActionScript" href="http://www.springactionscript.org/">Spring ActionScript</a> adapters (as an alternative to <a title="SmartyPants IoC" href="http://code.google.com/p/smartypants-ioc/">SmartyPants-IOC</a>)</li>
<li>Namespace changed to org.robotlegs.*</li>
<li>Logging now uses <a title="AS3 Commons Logging" href="http://www.as3commons.org/as3-commons-logging/index.html">as3commons-logging</a></li>
</ul>
<p>That last change means that RobotLegs is now dependent on the <a title="AS3 Commons" href="http://www.as3commons.org/">AS3 Commons</a> logging library. It also means that RobotLegs logging is now standard, and can be easily configured or turned off. Try it out with the <a href="http://solutions.powerflasher.com/products/sosmax/">PowerFlasher SOS Max tool</a>.</p>
<h3>Module Demo</h3>
<p>I&#8217;ve started putting together another Flex example, called the Acme Widget Factory, which can be found here:</p>
<p><a title="RobotLegs Demos" href="http://github.com/darscan/robotlegsdemos/tree/master">RobotLegs Demos on GitHub</a></p>
<p>The demo is a little convoluted, but exists to illustrate a couple of things:</p>
<ul>
<li>Working with Flex Modules</li>
<li>Communicating between Contexts via Interfaces and Events</li>
<li>An alternative to Named Proxies</li>
</ul>
<p>The demo only works with the <a title="Spring ActionScript" href="http://www.springactionscript.org/">Spring ActionScript</a> adapters for now &#8211; due to what I believe to be a bug in SmartyPants (but I haven&#8217;t had time to build isolated tests to prove this).</p>
<p>The Module side of things needs a little more thought, but I think it is fairly clean and usable for the time being.</p>
<h3>Review</h3>
<p>As Joel mentions in one of his posts, RobotLegs hasn&#8217;t had much peer review. This is very true, and needs to be remedied (besides, I&#8217;m DYING for some technical feedback!). I have some theories as to why this is:</p>
<ol>
<li>Some developers <a href="http://www.techper.net/2008/10/05/4-things-to-hate-about-puremvc/">really dislike</a> PureMVC (probably for many of the same <a href="http://shaun.boyblack.co.za/blog/2009/04/29/another-architectural-framework-but-why/">reasons that I started RobotLegs</a> in the <a href="http://shaun.boyblack.co.za/blog/2009/04/16/robotlegs-an-as3-mvcs-framework-for-flash-and-flex-applications-inspired-by-puremvc/">first place</a>) and so have disregarded RobotLegs because it can be viewed as a rebuild of PureMVC.</li>
<li>Many Flex developers who work on large enterprise applications seem to dislike the idea of using 3rd party Architectural Frameworks, preferring to hand-roll their own solutions on a per-project basis.</li>
<li>Dependency Injection sounds complicated to developers who are new to the pattern.</li>
<li>Many intermediate Flash developers have only just started getting into PureMVC. It will take some time for them to fully understand it&#8217;s strengths and weaknesses.</li>
<li>Experienced developers, on the other hand, are probably bored of the whole &#8220;Architectural Framework&#8221; trip, and are tired of trying out new frameworks. By now they&#8217;ve picked their favorite, learned how to be really productive with it, and have built code-generators and other such tools to work around the bad/boring parts of their chosen framework.</li>
<li>Setter injection turns some people off.. <a href="http://shaun.boyblack.co.za/blog/2009/05/01/constructor-injection-vs-setter-injection/">which it shouldn&#8217;t</a>.</li>
<li>I&#8217;m not very &#8220;connected&#8221; in the developer circles. RobotLegs is my first Open Source project, and is the first time I&#8217;ve really put myself &#8220;out there&#8221;. I don&#8217;t have a very impressive online portfolio &#8211; the portfolio pieces on my blog are mostly just the small things (often built for friends) that I&#8217;m allowed to list publicly.</li>
</ol>
<p>If you are an experienced Flash/Flex developer, and can bring yourself to review yet another framework, I would love to get some technical feedback on RobotLegs as a framework. Harsh criticism welcome.</p>
<p>And remember, <a href="http://github.com/darscan/robotlegs/tree/master">RobotLegs is on GitHub</a> &#8211; if you like some of it, but want to change other bits, all you have to do is click that little &#8220;fork&#8221; button and go crazy. <a href="http://git-scm.com/">Git</a> For The Win!</p>
]]></content:encoded>
			<wfw:commentRss>http://shaun.boyblack.co.za/blog/2009/08/01/robotlegs-updates-demos-and-unit-testing/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Parsley: Your Favourite Herb?</title>
		<link>http://shaun.boyblack.co.za/blog/2009/07/12/parsley-your-favourite-herb/</link>
		<comments>http://shaun.boyblack.co.za/blog/2009/07/12/parsley-your-favourite-herb/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 15:05:15 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Banter]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Robotlegs]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[parsley]]></category>

		<guid isPermaLink="false">http://shaun.boyblack.co.za/blog/?p=711</guid>
		<description><![CDATA[I&#8217;ve just started looking into Parsley: http://www.spicefactory.org/parsley/ First thought: version 2 is exactly what I&#8217;ve been trying to build with RobotLegs. I&#8217;ve only briefly skimmed through the manual, but it really looks promising. I have some initial concerns (the use of Static methods for example; see: http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/), but need more time to play around properly. The forum pointed me to these two handy example projects: http://www.sitronnier.com/blog/parsley-2-basic-flex-example http://www.sitronnier.com/blog/parsley-2-basic-flash-example Find them on the forum here: http://www.spicefactory.org/forum/viewtopic.php?t=247 All the Spice: http://www.spicefactory.org/]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just started looking into Parsley:<a title="Parsley Flash/Flex Framework" href="http://www.spicefactory.org/parsley/"> http://www.spicefactory.org/parsley/</a></p>
<p>First thought: version 2 is exactly what I&#8217;ve been trying to build with <a title="RobotLegs AS3: a DI driven MVCS framework for Flash and Flex inspired by PureMVC" href="http://shaun.boyblack.co.za/blog/robotlegs-as3/">RobotLegs</a>.<span id="more-711"></span></p>
<p>I&#8217;ve only briefly skimmed through the manual, but it really looks promising. I have some initial concerns (the use of Static methods for example; see: <a title="Static Methods are Death to Testability" href="http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/">http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/</a>), but need more time to play around properly.</p>
<p>The <a title="Spicefactory Forum" href="http://www.spicefactory.org/forum/">forum</a> pointed me to these two handy example projects:</p>
<p><a title="Parsley 2: Basic Flex Example" href="http://www.sitronnier.com/blog/parsley-2-basic-flex-example">http://www.sitronnier.com/blog/parsley-2-basic-flex-example</a><br />
<a title="Parsley 2: Basic Flash Example" href="http://www.sitronnier.com/blog/parsley-2-basic-flash-example">http://www.sitronnier.com/blog/parsley-2-basic-flash-example</a></p>
<p>Find them on the forum here:</p>
<p><a title="Spicefactory Forum Post: 2 examples" href="http://www.spicefactory.org/forum/viewtopic.php?t=247">http://www.spicefactory.org/forum/viewtopic.php?t=247</a></p>
<p>All the Spice:</p>
<p><a title="Spicefactory" href="http://www.spicefactory.org/">http://www.spicefactory.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shaun.boyblack.co.za/blog/2009/07/12/parsley-your-favourite-herb/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>RobotLegs AS3: Introductory Screencast</title>
		<link>http://shaun.boyblack.co.za/blog/2009/06/17/robotlegs-as3-introductory-screencast/</link>
		<comments>http://shaun.boyblack.co.za/blog/2009/06/17/robotlegs-as3-introductory-screencast/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 11:50:22 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Robotlegs]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[puremvc]]></category>

		<guid isPermaLink="false">http://shaun.boyblack.co.za/blog/?p=676</guid>
		<description><![CDATA[RobotLegs AS3 is a Dependency Injection Driven MVCS Framework for Flash and Flex inspired by PureMVC. I&#8217;ve been meaning to do this for a while, but only got the chance to sit down and give it a bash this morning. It was pretty rushed, so I&#8217;ll probably redo these when I get a chance. NOTE: If you don&#8217;t know PureMVC you should watch these first: PureMVC.TV Update: The vids were pretty crap, so I removed them. Besides, they&#8217;re a bit &#8230; <a href="http://shaun.boyblack.co.za/blog/2009/06/17/robotlegs-as3-introductory-screencast/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em><a title="RobotLegs AS3 - DI Driven MVCS Framework for Flash and Flex" href="http://wiki.github.com/darscan/robotlegs">RobotLegs AS3</a> is a Dependency Injection Driven MVCS Framework for Flash and Flex inspired by <a title="PureMVC" href="http://puremvc.org/">PureMVC</a>.</em></p>
<p>I&#8217;ve been meaning to do this for a while, but only got the chance to sit down and give it a bash this morning. It was pretty rushed, so I&#8217;ll probably redo these when I get a chance.</p>
<p><strong>NOTE: If you don&#8217;t know PureMVC you should watch <a title="PureMVC" href="http://www.puremvc.tv/">these</a> first: <a title="PureMVC" href="http://www.puremvc.tv/">PureMVC.TV</a></strong></p>
<p>Update: The vids were pretty crap, so I removed them. Besides, they&#8217;re a bit dated now anyway (the framework&#8217;s API has tightened up quite a bit since this post). Have a look:</p>
<p><a title="Robotlegs Framework" href="http://wiki.github.com/robotlegs/robotlegs-framework">http://wiki.github.com/robotlegs/robotlegs-framework</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shaun.boyblack.co.za/blog/2009/06/17/robotlegs-as3-introductory-screencast/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Getting Started with Git on Mac OS X</title>
		<link>http://shaun.boyblack.co.za/blog/2009/03/14/getting-started-with-git-on-mac-os-x/</link>
		<comments>http://shaun.boyblack.co.za/blog/2009/03/14/getting-started-with-git-on-mac-os-x/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 18:42:32 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://shaun.boyblack.co.za/blog/?p=224</guid>
		<description><![CDATA[Some Background I&#8217;ve recently switched from using SVN to using Git as my source control management tool of choice. It took a little while to get to grips with, but it rocks! Git is not an evolution of SVN. It is entirely different. Git is a distributed revision control system &#8211; everybody working on a project has their own full copy of the repository and its entire history. Git does not require the presence of a network connection: most commands &#8230; <a href="http://shaun.boyblack.co.za/blog/2009/03/14/getting-started-with-git-on-mac-os-x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Some Background</strong></p>
<p>I&#8217;ve recently switched from using SVN to using <a title="Git SCM" href="http://git-scm.com/" target="_blank">Git</a> as my source control management tool of choice. It took a little while to get to grips with, but it rocks!</p>
<p>Git is not an evolution of SVN. It is entirely different. Git is a distributed revision control system &#8211; everybody working on a project has their own full copy of the repository and its entire history.<span id="more-224"></span></p>
<p>Git does not require the presence of a network connection: most commands in Git operate locally, allowing you to review your project history, make branches and tags, merge changes, but most importantly, allowing you to commit while offline.</p>
<p>If you&#8217;ve used SVN you&#8217;ve probably noticed the littering of .svn folders across your entire project tree, requiring the need for an export tool to retrieve clean copies of your code, and introducing problems when you delete, rename or move files or folders in your project. Git takes a slightly more sensible approach: it creates one folder (named .git) in the root folder of your project.<strong></strong></p>
<p><strong>Git Concepts</strong></p>
<p>With Git there are 3 important things to be aware of: the Git object database, the &#8220;index&#8221;, and your working area.</p>
<p>The Git object database contains a bunch of stuff that you typically don&#8217;t need to worry about. Essentially it&#8217;s the repository.</p>
<p>Your working area is the collection of files currently sitting in your project folder. You should treat these files as if they are temporary &#8211; because they are! Things you want to keep should be committed to the repository.</p>
<p>The Index is sometimes referred to as the Staging Area. It&#8217;s a list of what will get stored on your next commit. Conceptually it sits between your working files and the Git object database. Files that haven&#8217;t been staged to the index will be ignored when doing a commit. This gives you great control over what gets committed when.</p>
<p>A branch is a cheap copy of a particular state of the Git object database. Branches are easy to create and switch between, giving you a safe way to try out ideas quickly and easily. Switching to another branch updates your working area to reflect the state of that branch &#8211; this is why you should consider your working area temporary.</p>
<p><strong>Installing Git on Mac OS X</strong></p>
<p>Grab and install the latest OS-X Installer from:</p>
<p><a title="Git OSX Installer" href="http://code.google.com/p/git-osx-installer/" target="_blank">http://code.google.com/p/git-osx-installer/</a></p>
<p><strong>Configuring Git</strong></p>
<p>You need to tell Git who you are &#8211; it uses this information for your commits etc.</p>
<p>Fire up your terminal, and type:</p>
<pre>git config --global user.name "Your Name"
git config --global user.email your@email.com</pre>
<p><strong>Using Git</strong></p>
<p>Once Git is installed on your system, creating a Git repository is easy: open your terminal, cd into the root folder of your project, and type: git init</p>
<p>That&#8217;s pretty much it!</p>
<p>After initialising your Git repository, it will most likely be empty. In order to commit files to the repository you first need to &#8220;stage&#8221; them by adding them to the index. To add all the files in your current project to the index type:</p>
<pre>git add .</pre>
<p>To commit these files type:</p>
<pre>git commit -m "your commit message"</pre>
<p>To view the status of your repository type:</p>
<pre>git status</pre>
<p><strong>To Summarise</strong></p>
<p>[<a title="Git OSX Installer" href="http://code.google.com/p/git-osx-installer/" target="_blank">Download and install Git</a>]<br />
[cd into the root of your project]</p>
<pre>
git init
ls -la
git status
git add .
git status
git commit -m "a useful commit message"
git status
</pre>
<p>[change some files in your working area]</p>
<pre>
git status
git diff
git commit -a -m "commit message. -a adds all files from your working area to the index"
git status
</pre>
<p>[delete some files from your local working area]</p>
<pre>
git status
git add -u
git commit -m "commit message. -u adds deleted files to the index"
git status
</pre>
<p><strong>Ignoring Files</strong></p>
<p>You will probably want to ensure than certain files don&#8217;t ever get committed to the repo:</p>
<p><a title="Git Ignore" href="http://www.kernel.org/pub/software/scm/git/docs/gitignore.html" target="_blank">http://www.kernel.org/pub/software/scm/git/docs/gitignore.html</a></p>
<p><strong>Extra Configuration</strong></p>
<p>You can enabled colorful output:</p>
<pre>
git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
</pre>
<p><strong>Some Bundled Visual Tools</strong></p>
<pre>
gitk
git gui
</pre>
<p><strong>Git Screencasts</strong></p>
<p><a title="Git Screencasts" href="http://gitcasts.com/" target="_blank">http://gitcasts.com/</a></p>
<p><strong>Installing Git on Windows</strong></p>
<p><a title="Installing Git on Windows" href="http://gitcasts.com/posts/git-on-windows" target="_blank">http://gitcasts.com/posts/git-on-windows</a></p>
<p><strong>Some Other Git Links</strong></p>
<ul>
<li><a title="Git Source Control Management" href="http://git-scm.com/" target="_blank">http://git-scm.com/</a></li>
<li><a title="Understanding Git Conceptually" href="http://www.eecs.harvard.edu/~cduan/technical/git/" target="_blank">http://www.eecs.harvard.edu/~cduan/technical/git/</a></li>
<li> <a href="http://git.or.cz/index.html" target="_blank">http://git.or.cz/index.html</a></li>
<li><a href="http://git.or.cz/course/svn.html" target="_blank">http://git.or.cz/course/svn.html</a></li>
<li><a title="Git FAQ" href="http://git.or.cz/gitwiki/GitFaq" target="_blank">http://git.or.cz/gitwiki/GitFaq</a></li>
<li><a title="Github Learning Resource" href="http://learn.github.com/" target="_blank">http://learn.github.com/</a></li>
<li><a title="Git OSX Installer" href="http://code.google.com/p/git-osx-installer/" target="_blank">http://code.google.com/p/git-osx-installer/</a></li>
<li><a title="Git User Manual" href="http://www.kernel.org/pub/software/scm/git/docs/user-manual.html" target="_blank">http://www.kernel.org/pub/software/scm/git/docs/user-manual.html</a></li>
<li><a title="The Thing About Git" href="http://tomayko.com/writings/the-thing-about-git" target="_blank">http://tomayko.com/writings/the-thing-about-git</a></li>
<li><a title="Git Talk" href="http://video.google.com/videoplay?docid=-3999952944619245780" target="_blank">http://video.google.com/videoplay?docid=-3999952944619245780</a></li>
</ul>
<p><strong>Eclipse Integration</strong></p>
<p>Point your eclipse update manager to: <a title="EGit" href="http://www.jgit.org/update-site" target="_blank">http://www.jgit.org/update-site</a></p>
<p>More info: <a title="JGit" href="http://www.jgit.org/" target="_blank">http://www.jgit.org/</a></p>
<p><strong>Some Commands</strong></p>
<p><em>Add all working files to the index:</em></p>
<pre>git add .</pre>
<p><em>Add deleted files to the index:</em></p>
<pre>git add -u</pre>
<p><em>Create and switch to a new branch:</em></p>
<pre>git checkout -b newbranchname</pre>
<p><em>Review last commit:</em></p>
<pre>
git show
git show --stat
git show --name -status
git show HEAD
</pre>
<p><em>Review commit history:</em></p>
<pre>
git log
git log tag..branch
git log -10
git log --since="May 1" --until="June 1"
git log --author=fred
git log -- some/file
</pre>
<p><em>Creating branches:</em></p>
<pre>
git branch name
git branch name commit
</pre>
<p><em>Switching branches:</em></p>
<pre>
git checkout name
git checkout -f name
</pre>
]]></content:encoded>
			<wfw:commentRss>http://shaun.boyblack.co.za/blog/2009/03/14/getting-started-with-git-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Getting Started with FlashDevelop3 and AS3</title>
		<link>http://shaun.boyblack.co.za/blog/2008/03/08/getting-started-with-flashdevelop3-and-as3/</link>
		<comments>http://shaun.boyblack.co.za/blog/2008/03/08/getting-started-with-flashdevelop3-and-as3/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 00:53:24 +0000</pubDate>
		<dc:creator>shaun</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flashdevelop]]></category>
		<category><![CDATA[flexsdk]]></category>
		<category><![CDATA[swc]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://shaun.boyblack.co.za/blog/2008/03/08/getting-started-with-flashdevelop3-and-as3/</guid>
		<description><![CDATA[Aha! Finally. Time for my first tutorial: Getting up and running with FlashDevelop3. Firstly, FlashDevelop 3 only runs on Windows XP/Vista, and requires the .NET 2 runtime. Additionally, to compile AS3 code you will need the Java 1.6 runtime and the Adobe Flex SDK. Ok, let&#8217;s go! Part 1 &#8211; Downloading, Installing, and Compiling a SWF Let&#8217;s begin by setting things up and compiling our first SWF. Download the Adobe Flex SDK (just the Flex 3 SDK, not Flex Builder), &#8230; <a href="http://shaun.boyblack.co.za/blog/2008/03/08/getting-started-with-flashdevelop3-and-as3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aha! Finally. Time for my first tutorial: Getting up and running with <a title="FlashDevelop" href="http://www.flashdevelop.org/" target="_blank">FlashDevelop3</a>.</p>
<p>Firstly, FlashDevelop 3 only runs on Windows XP/Vista, and requires the .NET 2 runtime. Additionally, to compile AS3 code you will need the Java 1.6 runtime and the <a title="Adobe Flex SDK" href="http://www.adobe.com/go/flex3_sdk" target="_blank">Adobe Flex SDK</a>. Ok, let&#8217;s go!</p>
<p><span id="more-49"></span></p>
<p><strong>Part 1 &#8211; Downloading, Installing, and Compiling a SWF</strong></p>
<p>Let&#8217;s begin by setting things up and compiling our first SWF.</p>
<ol>
<li>Download the <a title="Adobe Flex SDK" href="http://www.adobe.com/go/flex3_sdk" target="_blank">Adobe Flex SDK</a> (just the Flex 3 SDK, not Flex Builder), and unpack it somewhere easy to find (C:FlexSDKFlex3).</li>
<li>Download the latest version of <a title="FlashDevelop" href="http://www.flashdevelop.org/community/viewforum.php?f=11" target="_blank">FlashDevelop</a>, install it and run it.</li>
<li>Create a New Project, under ActionScript 3 choose Default Project, and give it a name (&#8220;hello&#8221;).</li>
<li>In the Project Panel expand the &#8220;src&#8221; folder and open up &#8220;Main.as&#8221;</li>
<li>In the constructor add the code: trace(&#8220;hello world!&#8221;);</li>
<li>Hit Ctrl-Enter (or F5). A dialog should pop up asking if you&#8217;d like to open the AS3 context settings. Click &#8220;OK&#8221;.</li>
<li>In the &#8220;Flex SDK Location&#8221; input field enter the path from step 1 (or browse to it).</li>
<li>Hit Ctrl-Enter again. This should compile your code into a SWF and launch it in a tab. The Flex 3 compiler does incremental compiling, so the first compile might take a while, but subsequent compiles should be much faster.</li>
<li>Make a &#8220;whooping&#8221; noise! &#8220;hello world!&#8221; should be displayed in the Output panel. You&#8217;ll find the SWF sitting in the &#8220;bin&#8221; folder. Notice that the project panel let&#8217;s you look into the guts of your SWF.. pretty damn sweet!</li>
</ol>
<p><strong>Part 2 &#8211; Some Adjustments</strong></p>
<p>By default, FlashDevelop launches SWFs in it&#8217;s own version of the Flash Player. At the time of this writing, the player doesn&#8217;t perform quite as well as the <a title="Adobe Flash Player" href="http://www.adobe.com/support/flashplayer/downloads.html" target="_blank">official debug version of the Adobe Flash Player</a> (besides, we want all the goodness of the very latest Flash Player!). Also, I find the tabbed view weird. So let&#8217;s change our setup a bit.</p>
<ol>
<li>Head on over to <a title="Adobe Flash Player" href="http://www.adobe.com/support/flashplayer/downloads.html" target="_blank">Adobe downloads</a>, &#8220;Download the Windows Flash Player 9 Projector content debugger&#8221; and put it somewhere easy to find (C:FlexSDKFlashPlayer)</li>
<li>Back in FlashDevelop, go to the main menu, click &#8220;Tools&#8221; and select &#8220;Program Settings&#8221; (or hit F10)</li>
<li>In the left panel, under &#8220;Plugins&#8221; select FlashViewer, and point the &#8220;External Play Path&#8221; to the debug player executable from step 1.</li>
<li>While you&#8217;re there, change the &#8220;Movie Display Style&#8221; to &#8220;External&#8221;. Click &#8220;Close&#8221;.</li>
<li>At the top of the Project Panel click the &#8220;Project Properties&#8221; button (third from the left).</li>
<li>Under &#8220;Test Movie&#8221; change the selection to &#8220;Play in external player&#8221;, and click &#8220;OK&#8221;.</li>
<li>Hit Ctrl-Enter. Make the universal &#8220;Whazzamm&#8221; sound!</li>
</ol>
<p><strong>Part 3 &#8211; Attaching Assets to the Stage</strong></p>
<p>Perhaps &#8220;hello world!&#8221; is not that thrilling for you. Fine.</p>
<ol>
<li>Create a folder called &#8220;lib&#8221; inside your project folder (alongside &#8220;bin&#8221; and &#8220;src&#8221;).</li>
<li>Fire up Adobe Flash CS3 and create a new Flash File (Action Script 3.0).</li>
<li>Save it inside the &#8220;lib&#8221; folder from step 1 and call it &#8220;assets.fla&#8221;.</li>
<li>In the Flash IDE grab the Oval tool and draw a circle.</li>
<li>Select the circle and convert it to a symbol by hitting F8 (or right-click and select &#8220;Convert to Symbol&#8230;&#8221;).</li>
<li>Give it the name &#8220;Circle&#8221; and expand the Linkage panel by clicking &#8220;Advanced&#8221;.</li>
<li>Under &#8220;Linkage&#8221; tick &#8220;Export for ActionScript&#8221; and click &#8220;OK&#8221;.</li>
<li>Open up your Publish Settings (Ctrl-Shift-F12), deselect &#8220;HTML&#8221;, and flip to the &#8220;Flash&#8221; tab</li>
<li>Tick &#8220;Export SWC&#8221;, click &#8220;Publish&#8221; and click &#8220;OK&#8221;.</li>
<li>Save the file and close the Flash IDE.</li>
<li>Flip back to FlashDevelop, and expand the &#8220;lib&#8221; folder in the Project Panel.</li>
<li>Right-click &#8220;assets.swc&#8221; and select &#8220;Add To Library&#8221;.</li>
<li>Replace our &#8220;trace&#8221; statement with the following code:<br />
var circle:Circle = new Circle();<br />
addChild( circle );</li>
<li>Hit Ctrl-Enter. Loudly exclaim &#8220;Golly, this is the biznis!&#8221;.</li>
</ol>
<p><strong>Part 4 &#8211; Extending Assets, Adding Interactivity</strong></p>
<p>Perhaps a plain old circle on the stage doesn&#8217;t really do it for you. You want some motion. You want some interactivity. Some filters. Fine then. Let&#8217;s do it..</p>
<ol>
<li>In the Project Panel, right click the &#8220;src&#8221; folder, select &#8220;New&#8221; &#8220;Class&#8221;, name it &#8220;ReactiveCircle&#8221; and click &#8220;OK&#8221;.</li>
<li>Head to the end of the line &#8220;public class ReactiveCircle&#8221;, type &#8220;extends&#8221;, hit Space and select &#8220;Circle&#8221;.</li>
<li>In the constructor type &#8220;filters = [new DropShadowFilter()];&#8221;</li>
<li>On the next line type &#8220;addEventListener(&#8221; and press Ctrl-Alt-Space (this enables autocompletion for all available classes, not just the imported ones). Start typing &#8220;MouseEvent&#8221; but hit Enter as soon as you see it selected. Complete the statement with &#8220;.CLICK, onClick);&#8221;</li>
<li>Move your cursor back onto the word &#8220;onClick&#8221;, press Ctrl-Shift-1 and hit Enter.</li>
<li>Inside the generated event handler add the code: x += 10;</li>
<li>Flip back to the Main class and change:<br />
var circle:Circle = new Circle();<br />
to<br />
var circle:ReactiveCircle = new ReactiveCircle();</li>
<li>Hit Ctrl-Enter. Click the circle. Shout &#8220;Kapoww!&#8221;</li>
</ol>
<p>Ok, it&#8217;s not a fully fledged RIA, but it should be enough to get you started.</p>
<p>Happy Flashing!</p>
<p><a title="FlashDevelop hello project" href="http://shaun.boyblack.co.za/blog/wp-content/uploads/2008/03/hello.zip">FlashDevelop hello project</a></p>
]]></content:encoded>
			<wfw:commentRss>http://shaun.boyblack.co.za/blog/2008/03/08/getting-started-with-flashdevelop3-and-as3/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

