<?xml version="1.0"?>
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom">
   <channel>
      <title>Driven Software Rss feed</title>
      <description>Pipes Output</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=2134c5ba861a9835a31ffd9bc8c61f04</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=2134c5ba861a9835a31ffd9bc8c61f04&amp;_render=rss&amp;page=2"/>
      <pubDate>Fri, 02 Mar 2012 09:07:18 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <item>
         <title>Couchdb Internals - The Prequel</title>
         <link>http://garrensmith.github.com/2012/02/27/Couchdb-Internals-Prequel.html</link>
         <description>&lt;h1&gt;Couchdb Internals - The Prequel&lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 27 Feb 2012 - Johannesburg &lt;/p&gt;


&lt;p&gt;I'm currently taking the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://moodle.wohmart.com/course/view.php?id=2&quot;&gt;Introduction to CouchDB Development&lt;/a&gt;. The first part, obviously, was focused on learning Erlang.
This alone has made the course worth it. I still have a long way to go in understanding Erlang but I now at least have a basic knowledge of what it's about.
We have now reached the part where we are digging into the internals of Couchdb and I will be documentating some of my discoveries, assumptions and bad ideas as I grapple with the source code.&lt;/p&gt;

&lt;p&gt;Before I start diving into the internals of Couchdb I want to understand how to get Couchdb up and running, how to run its tests, the layout of the code and how to configure it.&lt;/p&gt;

&lt;h2&gt;Setup&lt;/h2&gt;

&lt;p&gt;To get up and running is pretty straight forward. The Couchdb wiki has all this information it's just a matter of searching through it to find it. The first thing we want to do
is get &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.apache.org/couchdb/Running%20CouchDB%20in%20Dev%20Mode&quot;&gt;Couchdb running in dev mode&lt;/a&gt;. The wiki has a list of dependancies that need to be installed before looking at Couchdb.
Using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mxcl/homebrew&quot;&gt;Homebrew&lt;/a&gt; it was pretty simple.&lt;/p&gt;

&lt;p&gt;We need to checkout the code from its &lt;a rel=&quot;nofollow&quot;&gt;git repository&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git checkout git://git.apache.org/couchdb.git
cd couchdb
./bootstrap &amp;amp;&amp;amp;  ./configure
make dev
make check
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;./bootstrap &amp;amp;&amp;amp; ./configure&lt;/code&gt; sets up the build process. &lt;code&gt;make dev&lt;/code&gt; will create a compiled version of couchdb that can be run by &lt;code&gt;./utils/run&lt;/code&gt;, finally &lt;code&gt;make check&lt;/code&gt; will run the javascript tests located at &lt;code&gt;/test/javasript&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;Project layout&lt;/h2&gt;

&lt;p&gt;The layout of the code is pretty self-explanatory, with the &lt;code&gt;src&lt;/code&gt; directory being the meat of the project.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;couchdb src directory&quot;/&gt;&lt;/p&gt;

&lt;p&gt;This folder breaks Couchdb's code up quite nicely. Any directory prefixed with couchdb is couchdb specific code,
the other directories are all the 3rd party libraries that Couchdb uses. I will be explaining all this code more in the next couple blogs as I dive into it.&lt;/p&gt;

&lt;h2&gt;Running the tests&lt;/h2&gt;

&lt;p&gt;Couchdb is tested in two ways. It has a selection of javascript tests that can be run from the browser by visiting your local &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://localhost:5984/_utils&quot;&gt;Futon&lt;/a&gt; and clicking on &lt;strong&gt;Test Suite&lt;/strong&gt; and &lt;strong&gt;Run All&lt;/strong&gt;.
They can also be run from the command line &lt;code&gt;/test/javascript/run&lt;/code&gt;. There is also a collection of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://github.com/ngerakines/etap&quot;&gt;etap&lt;/a&gt; tests found under, not suprisingly, &lt;code&gt;/test/etap&lt;/code&gt;.
These can be run individually by &lt;code&gt;./test/etap/run&lt;/code&gt; and the file you want to run eg &lt;code&gt;./test/etap/run ./test/etap/001-load.t&lt;/code&gt;. I haven't found a way to run them all at once. Currently I'm not
sure when you would write a javascript test or an etap test. My best guess would be to use etap to test some of the internal api's that you couldn't get at by writing a javascript test. That would possibly
 mean that the etap tests are more like unit tests while the javascript tests are more functional.&lt;/p&gt;

&lt;h2&gt;Configuration files&lt;/h2&gt;

&lt;p&gt;Couchdb has two main configuration files, &lt;code&gt;etc/couchdb/default.ini&lt;/code&gt; is the main configuration file with all the standard defaults and configurations. I recommend reading through it as it gives you a good idea of
how Couchdb is configured. It also lists all the default handlers.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[httpd]
 port = 5984
 bind_address = 127.0.0.1
 authentication_handlers = {couch_httpd_oauth, oauth_authentication_handler}, &amp;#92;
    {couch_httpd_auth, cookie_authentication_handler}, &amp;#92;
    {couch_httpd_auth, default_authentication_handler}
 default_handler = {couch_httpd_db, handle_request}
 secure_rewrites = true
 vhost_global_handlers = _utils, _uuids, _session, _oauth, _users
 allow_jsonp = false
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;[httpd]&lt;/code&gt; section shown above can be found in &lt;code&gt;default.ini&lt;/code&gt;. What is interesting for the &lt;code&gt;default_handler&lt;/code&gt; and &lt;code&gt;authentication_handlers&lt;/code&gt;, if you wanted to, you could write your own handlers. You could
then change the handler config to use your one instead.&lt;/p&gt;

&lt;p&gt;The other important config file is &lt;code&gt;local.ini&lt;/code&gt;, this is used for overriding any settings found in &lt;code&gt;default.ini&lt;/code&gt;. From what I understand of it, you can add your own handlers there for specific requests, set a different port address and a multitude of other options.&lt;/p&gt;

&lt;h1&gt;Going forward&lt;/h1&gt;

&lt;p&gt;I found that before I dive into code I always need to understand how the project works, hence this post. Maybe I need to see the forest before looking at individual trees. Exploring the code and writing this
 post helped me quite a bit. Leave a comment if I have missed anything or have documented something wrong.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2012/02/27/Couchdb-Internals-Prequel</guid>
         <pubDate>Mon, 27 Feb 2012 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Short Note from Code Retreat</title>
         <link>http://garrensmith.github.com/2012/02/10/Code-Retreat-Notes.html</link>
         <description>&lt;h1&gt;Short Note from Code Retreat&lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 10 Feb 2012 - Johannesburg &lt;/p&gt;


&lt;p&gt;Last Saturday I did a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.coderetreat.org&quot;&gt;CodeRetreat&lt;/a&gt; with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://coreyhaines.com/&quot;&gt;Corey Haines&lt;/a&gt; at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.rubyfuza.org&quot;&gt;RubyFuza&lt;/a&gt;. It was a great and humbling experience. It showed how important
it is to continually practise your coding skills. Corey had four important points for better design that I haphazardly wrote down on a scrap of paper. I feel they deserve more respect than that.&lt;/p&gt;

&lt;p&gt;Essentially, in order to design better software, we need to write it so that it is &lt;strong&gt;easier to change&lt;/strong&gt;. These points, listed in order of importance, help to achieve that.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Passing tests&lt;/li&gt;
&lt;li&gt;Your code should reveal intent&lt;/li&gt;
&lt;li&gt;There should be no code duplication&lt;/li&gt;
&lt;li&gt;Write short methods that do one thing.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Read these two great explanations by &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.jbrains.ca/permalink/the-four-elements-of-simple-design&quot;&gt;JBrains&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.coderetreat.com/&quot;&gt;Corey Haines&lt;/a&gt; to follow the path to enlightenment.&lt;/p&gt;

&lt;p&gt;I plan to spend the next couple of weeks trying to achieve this when writing code. Do you think these points are in the correct order? Any points that should be added?&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2012/02/10/Code-Retreat-Notes</guid>
         <pubDate>Fri, 10 Feb 2012 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Announcing Red Comet Labs</title>
         <link>http://garrensmith.github.com/2011/08/01/Announcing-RedComet-labs.html</link>
         <description>&lt;h1&gt;Announcing Red Comet Labs&lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 1 Aug 2011 - Johannesburg &lt;/p&gt;


&lt;p&gt;Today is my first day at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.redcometlabs.com&quot;&gt;Red Comet Labs&lt;/a&gt;. So far so good. The dress code is quite relaxed, work seems interesting and the boss is quite a funny guy. Though I could be biased as I am the boss.&lt;/p&gt;

&lt;p&gt;I've spent the last 18 months working for &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.drivensoftware.net&quot;&gt;Driven Software&lt;/a&gt; and its been a fantastic experience.
I've learnt quite a lot, especially working with developers and helping teams to achieve agile greatness!
However I've reached a point now where I want to spend more time developing. After plenty of thinking and discussing with my wife, I've decided to start my own company.&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.redcometlabs.com&quot;&gt;Red Comet Labs&lt;/a&gt; launches today. I'm going to start small and grow the company organically. I'm going to be focusing on doing contract work and freelance work for a while, though I do have some product ideas I am going to pursue. I'm going to stick to projects involving Ruby on Rails and hopefully a little bit of nodejs. I really love the communities that have formed up around these technologies and the collaboration has been a real breath of fresh air compared to other technology stacks that I have worked on.&lt;/p&gt;

&lt;p&gt;So if you want to discuss any business opportunities or just wish me luck, please &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;mailto:info@redcometlabs.com&quot;&gt; send me a mail&lt;/a&gt;.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2011/08/01/Announcing-RedComet-labs</guid>
         <pubDate>Mon, 01 Aug 2011 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Announcing Jody, another BDD framework for node</title>
         <link>http://garrensmith.github.com/2010/11/01/Jody.html</link>
         <description>&lt;h1&gt;Announcing Jody, another BDD framework for node&lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 1 Nov 2010 - St Helena &lt;/p&gt;


&lt;p&gt;I have been really interested in investigating Nodejs and Javascript. I decided the best way to get to know them would be to write some sort of library for it.&lt;/p&gt;

&lt;p&gt;I followed some &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://neversaw.us/2010/8/26/the-learning-spiral/&quot;&gt;advice&lt;/a&gt; and reinvented the wheel and wrote a BDD framework. I've been reading a beta version of the Rspec book on my kindle so I've tried to use the knowledge I gained from that to help with the api of the framework.&lt;/p&gt;

&lt;p&gt;The main aims of the library is to have a nice fluent api. Have matchers like Rspec using Should and to learn Javascript. Also support async testing of callbacks. I'm really happy how it has turned out. I think I have learnt more about Javascript than Nodejs with it but its a good start.&lt;/p&gt;

&lt;p&gt;To write it I read a lot of code and so kudo's has to go to TJ and his &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://github.com/visionmedia/expresso&quot;&gt;Expresso&lt;/a&gt;, I used that as inspiration for a lot of my implementation.&lt;/p&gt;

&lt;p&gt;To install&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm install Jody
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Please give it a try and let me know what you think. Patches welcome!&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://github.com/garrensmith/Jody&quot;&gt;Here is the source&lt;/a&gt; and a readme to get started&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/11/01/Jody</guid>
         <pubDate>Mon, 01 Nov 2010 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Mongoid and Sinatra duet</title>
         <link>http://garrensmith.github.com/2010/09/11/Mongoid-sinatra.html</link>
         <description>&lt;h1&gt;Mongoid and Sinatra duet&lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 3 Sep 2010 - Johannesburg &lt;/p&gt;


&lt;p&gt;I am slowly catching up with all the latest hotness in the opensource world. I currently am interested in nosql, specifically &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.mongodb.org/&quot;&gt;Mongodb&lt;/a&gt;.
I decided to do a quick demo with it using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://sinatrarb.com&quot;&gt;Sinatra&lt;/a&gt;, my favorite web DSL, to see whats involved with installing it and using a ORD with it. I decided to go with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://http://mongoid.org/&quot;&gt;Mongoid&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://mongomapper.com/&quot;&gt;MongoMapper&lt;/a&gt; is also a very good option if you prefer a more ActiveRecord style.&lt;/p&gt;

&lt;p&gt;To set it up is very easy, first I installed mongodb via homebrew&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    brew install mongodb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This installs mongodb and creates a deamon process so that it is running in the background.
To test that it is working go to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://localhost:28017&quot;&gt;http://localhost:28017&lt;/a&gt;.
You should see page giving a the general information. We are now up and running&lt;/p&gt;

&lt;p&gt;Now to get it working with Mongoid and Sinatra.
Create a Gemfile with the following:&lt;/p&gt;

 


&lt;p&gt;Then install the gems:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    bundle install
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Lets create a document: (I've created the demo from &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://mongoid.org/docs/documents/&quot;&gt;Mongoid Documentation&lt;/a&gt;)]&lt;/p&gt;

 


&lt;p&gt;Now configure Mongoid and run a test route to get it going&lt;/p&gt;

 


&lt;p&gt;We are ready to go! Let me know how it goes.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/09/11/Mongoid-sinatra</guid>
         <pubDate>Sat, 11 Sep 2010 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Git introduction presentation</title>
         <link>http://garrensmith.github.com/2010/09/03/Git-presentation-6degreesofcode.html</link>
         <description>&lt;h1&gt;Git introduction presentation&lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 3 Sep 2010 - Johannesburg &lt;/p&gt;


&lt;p&gt;I did a talk last night at the Six &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.6degreesofcode.org&quot;&gt;degrees user group&lt;/a&gt;, it was great fun. I gave an introduction to git and how to use it in various team situations. It was nice to have contribution from the audience and their experiences with Git or other source controls.&lt;/p&gt;

&lt;p&gt;I have put the slides on the net at gitintro.heroku.com&lt;/p&gt;

&lt;p&gt;We are running a git challenge go to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.github.com/garrensmith&quot;&gt;my github profile&lt;/a&gt; to check it out. The prize is a R400 amazon book voucher.&lt;/p&gt;

&lt;p&gt;Here are some great links to get going, this one is great for &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.lostechies.com/blogs/jason_meridth/archive/2009/06/04/git-for-windows-developers-git-series-part-1.aspx&quot;&gt;windows developers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is an article on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ariejan.net/2009/06/08/best-practice-the-git-development-cycle/&quot;&gt;best practices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The defacto book and reference guides are: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.gitref.org&quot;&gt;gitref&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.progit.org&quot;&gt;progit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheat Sheets:&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://github.com/guides/git-cheat-sheet&quot;&gt;github cheatsheet&lt;/a&gt;
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://cheat.errtheblog.com/s/git&quot;&gt;errtheblog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also see my previous &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://garrensmith.github.com/2010/04/07/Git-Investigation.html&quot;&gt;blog&lt;/a&gt;
If you need any help find me on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://twitter.com/garrensmith&quot;&gt;twitter&lt;/a&gt; or drop me a mail.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/09/03/Git-presentation-6degreesofcode</guid>
         <pubDate>Fri, 03 Sep 2010 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Git Investigation</title>
         <link>http://garrensmith.github.com/2010/04/07/Git-Investigation.html</link>
         <description>&lt;h1&gt;Git Investigation &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 7 Apr 2010 - Johannesburg &lt;/p&gt;

&lt;p&gt;I've been trying to learn git and I've decided that the next way to really get famliar with it is to use it with one of the teams I am on. They are using svn, so I have used git-svn to create the the mapper between the two. I wrote up a cheat sheet for myself with git flow I want to use and the reference links I used. If anyone can recommend any improvements let me know.&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/04/07/Git-Investigation</guid>
         <pubDate>Wed, 07 Apr 2010 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>User Stories Applied by Mike Cohen Book review</title>
         <link>http://garrensmith.github.com/2010/03/26/User-Stories.html</link>
         <description>&lt;h1&gt;User Stories Applied by Mike Cohen Book review &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 26 March 2010 - Johannesburg &lt;/p&gt;

&lt;p&gt;I just finished reading the book &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.loot.co.za/shop/main.jsp?page=detail&amp;amp;id=1985515082928&quot;&gt;User Stories Applied by Mike Cohen&lt;/a&gt;. Its a great introduction to writing user stories and applying them to an agile environment. &lt;br /&gt;&lt;br /&gt;The book is broken into 4 main sections. The first section titles 'Getting started', it introduces the reader to the process of writing stories. I found this really useful. The only thing I did not like was that there was not enough detail of showing how to write a story in the&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog.dannorth.net/whats-in-a-story/&quot;&gt; BDD style&lt;/a&gt; of AS... I WANT TO... SO THAT, as well as writing acceptance tests/scenario's in the GIVEN... WHEN... THEN... The BDD style of writing a story makes it easy for someone new to stories to write good and useful stories very quickly. It also helps with the implementation and testing of the stories.&lt;br /&gt;&lt;br /&gt;The book then goes on to explain 'estimating and planning with stories' and 'frequently discussed topics of stories'. Both of these sections are useful, if not common knowledge to most agilists. &lt;br /&gt;&lt;br /&gt;The The final section is a real gem and puts everything into context, Mike goes through an example of planning a project and iterations with user stories. This nicely details the process of creating user roles and writing stories for them. It also shows the process of prioritizing stories and planning a release. This should help any inexperience reader to get started and give new ideas to any experienced agilist.&lt;br /&gt;&lt;br /&gt;I recommend anyone who wants to improve their user story writing or wants to learn how to write stories. Its a fantastic starting point and will help you get comfortable with writing stories.&lt;br /&gt;&lt;br /&gt;I attached my mindmap of the book. I've only mapped the points I thought were relevant for myself but hopefully they are helpful for you too.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; width=&quot;650&quot; height=&quot;601&quot;/&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/03/26/User-Stories</guid>
         <pubDate>Fri, 26 Mar 2010 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Certified scrum master training day 2</title>
         <link>http://garrensmith.github.com/2010/02/26/Scrum-Training-day2.html</link>
         <description>&lt;h1&gt;Certified scrum master training day 2 &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 26 Feb 2010 - Johannesburg &lt;/p&gt;

&lt;p&gt;Its taken me a couple days or maybe even a week, but here is my mind map from the certified scrum master. I didn't include everything that was spoken about just the key points I found very relevant.&lt;/p&gt;
&lt;p&gt;To Zoom in open image in another tab...&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; width=&quot;650&quot; height=&quot;601&quot;/&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/02/26/Scrum-Training-day2</guid>
         <pubDate>Fri, 26 Feb 2010 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Silverlight Flash whatEva</title>
         <link>http://garrensmith.github.com/2010/02/21/SilverLight-Flash-Whateva.html</link>
         <description>&lt;h1&gt;Silverlight Flash whatEva &lt;/h1&gt;


&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 21 February 2010 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://fc05.deviantart.net/fs50/f/2009/286/c/3/Javascript_vanara_by_Darda.jpg&quot;&gt;&lt;img style=&quot;float:left;margin:0pt 10px 10px 0pt;cursor:pointer;width:400px;height:234px;&quot; src=&quot;http://fc05.deviantart.net/fs50/f/2009/286/c/3/Javascript_vanara_by_Darda.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
I've recently had to do a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.lumeldesign.co.za/&quot;&gt;website&lt;/a&gt; for a client. She had a lot of really creative ideas and wanted some nice effects. Initially I thought to be able to create the effects she wanted I would have to use Silverlight or Flash. Neither of them I am that familiar with.

After some investigation into javascript I was blown away by the sheer power of it and the great plugins people had written for it. I have only done some minor javascript work so I was not that famliar with it. But it was really easy to get going using the powerful plugins written and using jQuery makes it just plain sweet.

Plugins I used:
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; The awesomeness.. need I say more. &lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://developer.yahoo.com/yui/reset/&quot;&gt;Yahoo CSS reset&lt;/a&gt; This is the first time I have used a css reset. I really liked it and I found it helped me with the website design &lt;/li&gt;
&lt;li&gt;The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://css-tricks.com/examples/AnythingSlider/&quot;&gt;anything slider&lt;/a&gt; was used to slide between sections in the website.
&lt;/li&gt;
&lt;li&gt;The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://leandrovieira.com/projects/jquery/lightbox/&quot;&gt;lightBox plugin&lt;/a&gt; was used to display the pictures in the gallery. This had great flexibility to resize the images and had a really classy feel and suited the website perfectly.
&lt;/li&gt;
&lt;/ol&gt;Before starting this I was quite naive and thought to get a website with fades and dynamic effects I needed Silverlight or Flash. I now realize that this is not true. I think that in most cases with web design, css and javascript is the way to go. Its easy to use, it works with most browsers including iphone and uncomplicated.

I have seen some great sites developed with Flash and Silverlight but now I really dont see a reason to learn either technology. After trying to get to learn Silverlight a while back and getting very stuck with XAML, most of it can be replicated in javascript and the learning curve is not as steep.

So moral of the story, javascript combined with the power of jQuery gets my stamp of approval
&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.blendenzo.com/Images/stampOfApproval.jpg&quot;&gt;&lt;img style=&quot;display:block;margin:0px auto 10px;text-align:center;cursor:pointer;width:200px;height:198px;&quot; src=&quot;http://www.blendenzo.com/Images/stampOfApproval.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
&lt;div style=&quot;text-align:center;&quot;&gt;Oh yes, please check out the site and let me know what you think...&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.lumeldesign.co.za/&quot;&gt; link&lt;/a&gt;
&lt;/div&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/02/21/SilverLight-Flash-Whateva</guid>
         <pubDate>Sun, 21 Feb 2010 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Certified scrum master training day 1</title>
         <link>http://garrensmith.github.com/2010/02/17/Scrum-Training-day1.html</link>
         <description>&lt;h1&gt;Certified scrum master training day 1 &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 26 Feb 2010 - Johannesburg &lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;float:left;&quot; alt=&quot;&quot; width=&quot;403&quot; height=&quot;300&quot;/&gt;I'm currently on the certified scrum master training course run by Peter Hundermark of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.scrumsense.com/&quot;&gt;Scrum Sense&lt;/a&gt;. It's a two day training course discussing the basic principles of scrum. It's main focus was on the roles of the key players, specifically the role of the scrum master. Day 1 was very interesting, we started out by listing questions we have about scrum and outcomes we would like to get from the course. This was an interesting section and highlighted many concerns and misconceptions around scrum.   Peter is an excellent instructor and has some great teaching methods. He constantly keeps everyone involved and helps guide people to the solution rather then telling everyone the answer to any of his questions and tasks. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The topics covered for day one where: Agile principles; roles and responsibilities and meetings.   What I have take from the course so far is how important it is to define the roles of the players in the team. Also how important it is to get the team to buy in on the agile principles specifically trust and communication. We also briefly touched on how incentives for individuals don't work when they are in a team. The power of self organizing can never be underestimated.&lt;/p&gt;
&lt;p&gt;On a side note from discussions with the other participants it was a gentle reminder of how many people are trying to implement agile principles but are finding it very difficult. I really think the best way to get a team running properly using scrum or any other agile methodology is with an external coach to help them. This will definitely help them get over the initial hurdles and get the team in the correct habits and disciples.   I'm looking forward to day two tomorrow. I'll blog again on what happens and give my overall thoughts on the next day.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/02/17/Scrum-Training-day1</guid>
         <pubDate>Wed, 17 Feb 2010 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>.Net Coding metric released</title>
         <link>http://garrensmith.github.com/2010/01/26/DrivenMetrics.html</link>
         <description>&lt;h1&gt;.Net Coding metric released &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 26 Jan 2010 - Johannesburg &lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;float:left;&quot; alt=&quot;&quot; width=&quot;403&quot; height=&quot;300&quot;/&gt;&lt;/p&gt;
&lt;p&gt;I've finally started my first open source project. In the Agile team I am currently working with, I found I needed a simple metric tool to analyze our code and give some simple code metrics to help the team. &lt;br /&gt;&lt;br /&gt;The team was using code coverage as our only metric. Code coverage is a very crude tool to determine the quality of our tests. I wanted some more metrics to help us analyze our code to determine the quality of the code being written. We have as a team set certain standards which must be met for each class being written. Two of these is the lines of code per method and the complexity of the method. I initially looked at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.ndepend.com/&quot;&gt;Ndepend&lt;/a&gt; , which is a fantastic tool, to help us measure these, but Ndepend is more complex then what we required.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;From these humble beginning DrivenMetrics was born. DrivenMetrics is a very simple metrics tool that can analyze an assembly to determine the number of lines in a method and the cyclomatic complexity (number of different branches) of a method. &lt;br /&gt;&lt;br /&gt;When I set out to write this library I had some simple goals. I wanted to do TDD, I wanted to use &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.mono-project.com/Cecil&quot;&gt;Mono.Cecil&lt;/a&gt; to learn a bit about it along with ILasm and I wanted to write a console app with some decent commands like any *nix command line tool. I also wanted a good excuse to use github and get a feel for git and then hopefully eventually be cool like all the other cool kids using github :-)&lt;br /&gt;&lt;br /&gt;The library works by using Mono.Cecil to disassemble the a .net assembly and then using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://evain.net/blog/articles/2009/04/27/pdb2mdb-and-mono-cecil-pdb&quot;&gt;Mono.Cecil.Pdb&lt;/a&gt; to load all the debugging symbols. The two metrics are then run to analyze the code, the results are then written to an html report. The tool is still very much in its infancy and any help from the greater community would be appreciated. To build the code use &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://rake.rubyforge.org/&quot;&gt;rake&lt;/a&gt;, I have not used &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://github.com/derickbailey/Albacore&quot;&gt;albacore&lt;/a&gt; or rake.net as my build library but rather the simple BuildUtils.rb from &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://codebetter.com/blogs/jeremy.miller/&quot;&gt;Jeremy Miller's&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://storyteller.tigris.org/&quot;&gt;StoryTeller&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I would appreciate any feedback anyone is willing to give. I have a Todo.txt with things I would later like to add to the project. The source code is available on github at: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://github.com/garrensmith/DrivenMetrics&quot;&gt;www.github.com/garrensmith/Drivenmetric&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2010/01/26/DrivenMetrics</guid>
         <pubDate>Tue, 26 Jan 2010 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Agile board and user story constraints</title>
         <link>http://garrensmith.github.com/2009/12/10/AgileBoard.html</link>
         <description>&lt;h1&gt;Agile board and user story constraints &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 10 Dec 2009 - Johannesburg &lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;float:left;&quot; alt=&quot;&quot; width=&quot;450&quot; height=&quot;291&quot;/&gt;&lt;/p&gt;
&lt;p&gt;One thing that has become more and more important to me since joining my current team is the visibility of the user stories on the board. Its really important to have nice coloured stickies and large visible writing. Sticky colours can represent different things. Our stories are yellow and our tasks are blue. The dreaded pink slip is a bug that has slipped through the unit tests and our tester has found it. This all creates a colour useful board that people want to interact with.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However a very important requirement that often gets neglected is to have big writing on the cards. This does two things. It makes the user stories visible from a distance. And keeps the stories concise.&lt;/p&gt;
&lt;p&gt;Often teams have stories that they are working on but at stand up they cant actually see the writing on the board. This limits any discussions about whats happening in the iteration and that story. It also seems to stop any one from being held accountable for what they are working on. Once a story is visible from any where in the team room the board gets used so much more. It also allows any one that walks into the room to fully see what is happening in the iteration very quickly, without having to analyse the board front a very close distance Nothing startling here but it can get neglected.&lt;/p&gt;
&lt;p&gt;A really nice side effect of writing a user story with a large black marker is, it forces the story to be short and concise. As &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codesqueeze.com/the-easy-way-to-writing-good-user-stories/&quot;&gt;Max Pool&lt;/a&gt; mentions in his blog. Using a black marker or a large pen along with a smallish sticky forces the story to be short and concise.Thereby helping them be aids in further communication rather then all the information required.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/12/10/AgileBoard</guid>
         <pubDate>Thu, 10 Dec 2009 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Post Number 1</title>
         <link>http://garrensmith.github.com/2009/12/07/Post1.html</link>
         <description>&lt;h1&gt;Post Number 1 &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 7 Dec 2009 - Johannesburg &lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;float:left;&quot; alt=&quot;Flower of new beginning&quot; width=&quot;403&quot; height=&quot;300&quot;/&gt;&lt;/p&gt;
&lt;p&gt;Wow, my first post. I think its only polite to introduce myself before I get down to business in the next posts. I've now been working for &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.drivensoftware.net&quot;&gt;Driven Software&lt;/a&gt; for one month.&amp;nbsp; Its been a fantastic journey so far and I've been learning so much. My current role is as a scrummaster in one of the agile teams that Driven Software is coaching and helping. It's a great team to work with - a good code base and a really interesting project with lots of potential.&lt;/p&gt;
&lt;p&gt;This blog will be focused on my experiences learning and implementing agile principles and methodologies. My main aim will be to mention and highlight things that the textbooks leave out, the tips and tricks that come only with experience and putting Agile into practice. The team I'm working on is using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Scrum_%28development%29&quot;&gt;Scrum&lt;/a&gt; with some &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Extreme_Programming&quot;&gt;XP methodologies&lt;/a&gt;. I am also really interested in &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Kanban&quot;&gt;Kanban&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Lean_software_development&quot;&gt;Lean&lt;/a&gt;. I hope to find a way to combine them in an effective way for the teams I work with.&lt;/p&gt;
&lt;p&gt;So stay tuned, the fun is about to begin!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;*picture courtesty of &lt;a rel=&quot;nofollow&quot;&gt;Deviantart&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/12/07/Post1</guid>
         <pubDate>Mon, 07 Dec 2009 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Start of a new job</title>
         <link>http://garrensmith.github.com/2009/10/28/New-Job.html</link>
         <description>&lt;h1&gt;Start of a new job &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 28 Oct 2009 - Johannesburg &lt;/p&gt;


&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://drivensoftware.net/Data/Assets/Header/Logo.png&quot;&gt;&lt;img style=&quot;display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:255px;height:101px;&quot; src=&quot;http://drivensoftware.net/Data/Assets/Header/Logo.png&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/a&gt;With much excitement and a little trepidation, I leave my &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.dmem.co.za/&quot;&gt;current company&lt;/a&gt; and I will start work on Monday at &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://drivensoftware.net/home.aspx&quot;&gt;Driven Software&lt;/a&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://kevint.drivensoftware.com/&quot;&gt;Kevin&lt;/a&gt; asked me about two months ago to come join him at Driven Software and I couldn't resist. The work looks to be really interesting and to get some proper experience in a Agile/Scrum environment is exactly what I want.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Will be changing my blog profile &lt;/div&gt;&lt;div&gt;soon to reflect this.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Oh and some added extra news is I have managed to convince myself that the only possible laptop that could make me successful in my new role with Driven Software is a Macbook Pro... Cant wait :-)&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/10/28/New-Job</guid>
         <pubDate>Wed, 28 Oct 2009 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Getting to know the .net build tools</title>
         <link>http://garrensmith.github.com/2009/09/17/net-build-tools.html</link>
         <description>&lt;h1&gt;Getting to know the .net build tools &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 17 Sep 2009 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://th00.deviantart.net/fs35/300W/f/2008/293/3/c/Ant_by_Tamyl91.jpg&quot;&gt;&lt;img style=&quot;display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:300px;height:210px;&quot; src=&quot;http://th00.deviantart.net/fs35/300W/f/2008/293/3/c/Ant_by_Tamyl91.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/a&gt;

I've recently been looking into using a build script to make building/testing my code easier. I've also wanted to implement a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;https://hudson.dev.java.net/&quot;&gt;CI build server&lt;/a&gt; and using a build script makes it a lot easier to implement.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;Small steps with Nant &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I decided to first look at the tried and tested &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://nant.sourceforge.net/&quot;&gt;Nant&lt;/a&gt; build tool. Nant is a free build tool based on the Java &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ant.apache.org/&quot;&gt;Ant&lt;/a&gt;. The build script is a xml script that Nant then uses to build your project. I used the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codeplex.com/AutoMapper&quot;&gt;AutoMapper&lt;/a&gt; build script as an example. This along with the Nant wiki helped me to write a basic script that could compile my code, check some sql scripts out of SVN and rename a file for me. The script below is what I wrote.&lt;/div&gt;&lt;div&gt; 
&lt;/div&gt;&lt;div&gt;Its not perfect and I'm not sure if I got all the naming of the tasks correct, however it did the job and I was quite happy with it as my first attempt.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://th08.deviantart.net/fs16/300W/i/2007/165/6/0/Rake_by_PenguBadger.jpg&quot;&gt;&lt;img style=&quot;display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:300px;height:199px;&quot; src=&quot;http://th08.deviantart.net/fs16/300W/i/2007/165/6/0/Rake_by_PenguBadger.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/a&gt;&lt;div&gt;&lt;b&gt;Sharpening my Rake&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I've been reading plenty of good reviews on using Rake as a build tool for .net projects, so I decided to try this as well. Rake is a build program written in Ruby. With a bit of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.tobinharris.com/past/2009/8/17/automating-net-development-and-nhibernate-with-ironruby-rake/&quot;&gt;help&lt;/a&gt; I downloaded IronRuby and installed Rake with it. I then read a nice intro on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://railsenvy.com/2007/6/11/ruby-on-rails-rake-tutorial&quot;&gt;rake&lt;/a&gt;, I then used &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://codebetter.com/blogs/david_laribee/archive/2008/08/25/omg-rake.aspx&quot;&gt;this&lt;/a&gt; example to copy my Nant script. This is what I ended up with:&lt;/div&gt;&lt;div&gt; 
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;b&gt;The Analysis&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Nant has been used a lot in .net projects and is definitely worth learning. I will definitley spend some more time and get a better understanding of it. However Rake is just so cool. Its really nice to use something that is easy to read, and very powerful as you can use Ruby to write custom methods and objects. Using IronRuby gives you the power to access all you .net code which definitely has its benefits. Its also just plain fun using a dynamic language.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;I recommend all .net developers to give Rake a bash. &lt;/div&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/09/17/net-build-tools</guid>
         <pubDate>Thu, 17 Sep 2009 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Curriculum Vitae Retrospective</title>
         <link>http://garrensmith.github.com/2009/09/13/cv-retrospective.html</link>
         <description>&lt;h1&gt;Curriculum Vitae Retrospective &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 13 Sep 2009 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://fc02.deviantart.com/fs40/i/2009/054/9/a/A_Corkboard_Retrospective_by_smashmethod.jpg&quot;&gt;&lt;img style=&quot;display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:600px;height:375px;&quot; src=&quot;http://fc02.deviantart.com/fs40/i/2009/054/9/a/A_Corkboard_Retrospective_by_smashmethod.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;/&gt;&lt;/a&gt;
I recently had to update my CV or for my American readers, my resume. Initially I had writers block so I avoided it for a couple days. However after some research I eventually stopped procrastinating and got down to it.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;A CV is always tricky business as you don't want to come across as a bragger or worse under sell yourself. Finding the correct balance is always tricky. Trying to keep it brief and insightful is important, along with making it appeal to your audience. &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;div&gt;I founds some really useful blogs on writing a good, eye catching CV. I certainly think they will appeal to managers as well as fellow developers. If you're in the process of writing your own CV, I'd suggest checking them out:&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codesqueeze.com/category/3-days-building-a-perfect-resume/&quot;&gt;Max Pool, on his blog Codequeeze&lt;/a&gt; has written a nice couple of articles covering some useful topics and he also supplies a nice template to get you started&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.randsinrepose.com/archives/2007/02/25/a_glimpse_and_a_hook.html&quot;&gt;Rands, on his blog RandinRepose&lt;/a&gt; writes about a few key items that need to be included in your CV, in order to catch a manager's eye. I assure you that all of them are absolutely legal! In fact they are incredible gems that will make your CV stand out from all the others in pile.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Writing a CV is also a great &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Retrospective&quot;&gt;retrospective&lt;/a&gt; to see what you have achieved since you last updated it. I realised that I am a bit of a Jack of all Trades and probably should look at focusing a bit more. &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;I strongly recommend updating your CV every 6 months even if its just a way at reflecting on your progress as a developer. Why not just hand it out to friends and family to determine if its a good reflection of you and you never know what contacts will emerge.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/09/13/cv-retrospective</guid>
         <pubDate>Sun, 13 Sep 2009 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>The Perfect Kiss</title>
         <link>http://garrensmith.github.com/2009/09/09/Perfect-Kiss.html</link>
         <description>&lt;h1&gt;The Perfect Kiss &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 9 Sep 2009 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://img.timeinc.net/time/potw/20010907/kiss.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:303px;height:371px;&quot; src=&quot;http://img.timeinc.net/time/potw/20010907/kiss.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;The acronym KISS (Keep It Simple Stupid) is used a lot when talking about code. What does it actually mean and how do we actually adhere to this principle?

&lt;div&gt;Programmers justify many evil things in the name of KISS. Things like adding unnecessary complexity, procedural code and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/God_object&quot;&gt;god objects&lt;/a&gt; spring to mind... And don't think that bundling code up in comments suddenly makes it all simpler.
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;But what does it actually mean to keep your code simple?&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;In Lean Software Development the elimination of waste by removing &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Lean_software_development&quot;&gt;unnecessary code and functionality&lt;/a&gt; would be keeping it simple.  &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.c2.com/cgi/wiki?XpSimplicityRules&quot;&gt;Extreme Programming&lt;/a&gt; says that s&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family:'Times New Roman';&quot;&gt;imple code:&lt;ol&gt;&lt;li&gt;Runs all the tests.&lt;/li&gt;&lt;li&gt;Expresses every idea that we need to express.&lt;/li&gt;&lt;li&gt;Says everything &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.c2.com/cgi/wiki?OnceAndOnlyOnce&quot;&gt;OnceAndOnlyOnce&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Has no superfluous parts.
&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Sounds good to me, and this is how I find it fits into practice.

&lt;span style=&quot;font-weight:bold;&quot;&gt;Maintainable code&lt;/span&gt;

Maintainable Code is code that after a nice long summer holiday on the beach is still easy to add to or change. That means good code coverage, so that if I make a change the tests will tell me if I have broken anything. The code's tests must be self documenting, if I want to know how to use the code I can look through the tests for a explanation.

&lt;span style=&quot;font-weight:bold;font-size:100%;&quot;&gt;Readable code&lt;/span&gt;

This follows on from maintainable code - code must be easy to read.  Having to stare at a for loop for hours to understand what it is doing is quite tedious.  Comments don't necessarily make code more readable. As Kent Beck said through &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.amazon.com/Extreme-Programming-Adventures-DV-Microsoft-Professional/dp/0735619492&quot;&gt;Ron Jeffries&lt;/a&gt;  &quot;&lt;span style=&quot;font-style:italic;&quot;&gt;comment is the code's way of telling us that it wants to be more clear&lt;/span&gt;&quot;. Making code modular and keeping methods short, with loosely coupled code and good level of extraction all help contribute to making code more readable.
&lt;span style=&quot;font-weight:bold;&quot;&gt;Simplest possible&lt;/span&gt;

An extreme principle that is very valid here is &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.extremeprogramming.org/rules/simple.html&quot;&gt;Doing the simplest thing that could possible work&lt;/a&gt;. This is by far the hardest thing to do and requires dedication and focus. Refactoring is helpful here to remove complex code. Making code simpler will make the code more maintainable and easier to read and ultimately cleaner.

&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:300px;height:400px;&quot; src=&quot;http://www.aolcdn.com/channels/05/02/45c27ded-000f8-03cc5-400cb8e1&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;
&lt;span style=&quot;font-weight:bold;&quot;&gt;Short Kiss Goodbye&lt;/span&gt;

&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;/span&gt;From my short experience in software development these principles have proved invaluable, however if I have left anything out or there are other things to consider, please add them in the comments and if they are really good, I will update them in the blog.


&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/09/09/Perfect-Kiss</guid>
         <pubDate>Wed, 09 Sep 2009 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Twitter</title>
         <link>http://garrensmith.github.com/2009/09/05/Twitter.html</link>
         <description>&lt;h1&gt;Twitter &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 8 Aug 2009 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.laurenceborel.com/wp-content/uploads/2009/09/twitter_bird_follow_me__Small__bigger.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:367px;height:263px;&quot; src=&quot;http://www.laurenceborel.com/wp-content/uploads/2009/09/twitter_bird_follow_me__Small__bigger.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
&lt;div style=&quot;text-align:center;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt; &lt;/span&gt;I've decided to join all the cool kids, I'm now on &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre;&quot;&gt; &lt;/span&gt;twitter: &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.twitter.com/garrensmith&quot;&gt;http://www.twitter.com/garrensmith&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align:center;&quot;&gt;:-)&lt;/div&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/09/05/Twitter</guid>
         <pubDate>Sat, 05 Sep 2009 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Unit Testing beginners feedback</title>
         <link>http://garrensmith.github.com/2009/09/03/Unit-Testing.html</link>
         <description>&lt;h1&gt;Unit Testing beginners feedback &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 9 Sep 2009 - Johannesburg &lt;/p&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog-well.com/wp-content/uploads/2008/02/testing.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;cursor:pointer;width:400px;height:300px;&quot; src=&quot;http://blog-well.com/wp-content/uploads/2008/02/testing.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;The company I work for does not practice automated unit testing or any other form of automated testing.Testing has always been the practice of manually testing. This is incredibly tedious, frustrating and way to much elbow grease for a lazy developer. Ofter reading about my 100th blog that said &quot;&lt;span style=&quot;font-style:italic;&quot;&gt;If you not testing you are an Idiot&lt;/span&gt;&quot;, I decided to be brave and swim against the stream and start implementing unit testing.

I bought &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.pragprog.com/titles/utc2/pragmatic-unit-testing-in-c-with-nunit&quot;&gt;Pragmatic Unit Testing in C# with NUnit&lt;/a&gt;, which is a great book and is gives an excellent introduction into Unit Testing. After reading a fair bit about Test Driven Development I decided while I was still finding my feet to following the wise words of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://codebetter.com/blogs/karlseguin/&quot;&gt;Karl Seguin &lt;/a&gt;in his free&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://codebetter.com/media/p/179694.aspx&quot;&gt; ebook&lt;/a&gt; (definitely worth a read)
&lt;div style=&quot;text-align:center;&quot;&gt;
&quot;I recommend that you familiarize yourself with unit testing in general before
adopting TDD.&quot;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;span style=&quot;font-weight:bold;font-size:180%;&quot;&gt;Tools of the Trade&lt;/span&gt;
&lt;/div&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://blog-well.com/wp-content/uploads/2008/02/onlinetools.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;width:400px;height:400px;&quot; src=&quot;http://blog-well.com/wp-content/uploads/2008/02/onlinetools.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;

&lt;div style=&quot;text-align:left;&quot;&gt;Every good craftsman needs useful tools to be effective, I &quot;tooled up&quot; using &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.nunit.org/index.php&quot;&gt;Nunit&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://ayende.com/projects/rhino-mocks.aspx&quot;&gt;RhinoMocks&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.gallio.org/Screenshots.aspx&quot;&gt;Gallio&lt;/a&gt;. These tools really helped the process and made my life a lot easier. Gallio is a fantastic test runner and more, Nunit and RhinoMocks should need no introduction.

Now to the actual meat of this post, my actual experience. All I can say is it was like the rain had come after a dusty hot day and cleared the sky. Everything made sense and I was forced to write better code that was testable, maintable and easier to understand. Ok not straight away...

Initially I found myself producing code at a slower rate , fighting off the critics at the office I perserved. I then started realising that the amount of time spent debugging was minimal. I was spending more time coding and less time entering data in textboxed on our forms, trying to replicate the bug and then hoping the debugger would break at the right spot so I can fix the error. Then repeating the manual test until it worked.

About 2 months of unit testing I am finding that I am producing code at a better rate and feel more confident in the quality of it. I would like to investigate TDD more now as well as writing more effective tests .

Unit testing definitely makes you more aware of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod&quot;&gt;SOLID principles&lt;/a&gt; and I found that my code was a lot more decoupled - so that I can mock each object. I was also more aware of the law of Demeter and consciencly making sure that all my objects obeyed the Single Responsiblilty Principle.  I definitley have lots to learn still and am still getting to grips with mocking. I can really say that the biggest acheivement in my short programming career has been to unit test!

&lt;/div&gt;&lt;/div&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/09/03/Unit-Testing</guid>
         <pubDate>Thu, 03 Sep 2009 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Development Resources</title>
         <link>http://garrensmith.github.com/2009/05/30/DevelopmentResources.html</link>
         <description>&lt;h1&gt;Development Resources &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 5 July 2009 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://diditwith.net/content_images/BlogBooks.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:500px;height:350px;&quot; src=&quot;http://diditwith.net/content_images/BlogBooks.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
Since I started work a year ago, I've been reading as many software books as I could get my hands on to improve my programming chops. I've recently come across some really nice free resources that are both very useful and quite short and sweet.

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.infoq.com/minibooks/domain-driven-design-quickly&quot;&gt;Domain Driven Design Quickly&lt;/a&gt; is a really good summary of writing software using the Domain Driven methodology. Its only about 80 pages and really useful. It explains some useful patterns eg Repository, aggregates and others.

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://codebetter.com/blogs/karlseguin/archive/2008/06/24/foundations-of-programming-ebook.aspx&quot;&gt;Foundations of Programming&lt;/a&gt; is more .net orientated but a really good read. It discusses some of the good frameworks out there like NHibernate and has a nice intro into unit testing. It also has a really useful chapter on memory with .net.

My next free ebook that I will read is &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.lostechies.com/content/pablo_ebook.aspx&quot;&gt;Pablo's SOLID Software Development&lt;/a&gt; which to be a great intro into using the SOLID principles while developing.

While researching this post I came across this link from &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://stackoverflow.com/questions/4705/free-programming-ebooks&quot;&gt;StackOverFlow&lt;/a&gt; which gives a really good list of Free ebooks. So hopefully everyones favorite language is covered.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/05/30/DevelopmentResources</guid>
         <pubDate>Sat, 30 May 2009 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Google Android</title>
         <link>http://garrensmith.github.com/2009/02/17/GoogleAndroid.html</link>
         <description>&lt;h1&gt;Google Android &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 17 Feb 2009 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://scherle.com/wp-content/uploads/2009/03/500px-android-logosvg.png&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:176px;height:220px;&quot; src=&quot;http://scherle.com/wp-content/uploads/2009/03/500px-android-logosvg.png&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
After reading an&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.iphonesavior.com/2009/02/iphone-developer-one-month-half-a-million-dollars-richer.html&quot;&gt; article&lt;/a&gt; about a programmer who wrote a app for the iPhone and made half a million dollars in a month, I decided to setup the Google Android SDK on my PC. The advantage of using the Android SDK is that its free to download and develop on with teh added bonus of running on my favorite OS Ubuntu.  While Apple being the dominating, control freaks they are charge for their SDK.

It was really easy to do setup. These &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.androidforums.com/showthread.php?t=2321&quot;&gt;instructions&lt;/a&gt; guided me through the process. This &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/android/intro/hello-android.html&quot;&gt;link&lt;/a&gt; shows you how to run a Hello World with explanations. Once the setup is done running my Hello World app loads up the emulator. The emulator is really impressive with a fully functional Android OS. It was really interesting to try it all out. It should make development of an application a lot easier. I tried out some of the sample applications, this can be done by creating a new Android project in eclipse and including existing code.

Now all is required is a phone which runs Android thats available locally. I know there is plenty of work on running Google Android on the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://labs.embinux.org/index.php/Android_Porting_Guide_to_Beagle_Board&quot;&gt;beagleboard&lt;/a&gt;. So no a bad substitute until one of our Mobile Operators are nice enough to bring in a Android Phone.

I've been using WPF, I'm finding it a very powerful UI framework however its also very frustatrating as it is so complex and flexible. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Windows_Presentation_Foundation&quot;&gt;WPF&lt;/a&gt; uses XAML code which is XML based code for the UI design, its a very powerful way to create UI layouts without having to hard code the UI. It was interesting to see the Android SDK uses a similar approach with their own UI xml layout code. In the next Ubuntu release I'm hoping for the latest MonoDevelop as it includes moonlight which is a OpenSource implementation of Silverlight (WPF/E). Really would like to do some Mono development. See how it compares to developing using Visual Studio on WinXP.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/02/17/GoogleAndroid</guid>
         <pubDate>Tue, 17 Feb 2009 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Django and Embedded Linux</title>
         <link>http://garrensmith.github.com/2009/01/28/DjangoEmbeddedLinux.html</link>
         <description>&lt;h1&gt;Django and Embedded Linux &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 28 Jan 2009 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_-1lN25IwqMs/SYC_-WpZ9tI/AAAAAAAAABk/uJaRACATx0s/s1600-h/Pop2008cover.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:252px;height:320px;&quot; src=&quot;http://1.bp.blogspot.com/_-1lN25IwqMs/SYC_-WpZ9tI/AAAAAAAAABk/uJaRACATx0s/s320/Pop2008cover.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5296444239739746002&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
Slowly getting into the swing of things for another year. Crazy that the first month is almost over. I've been pretty busy. I bought an excellent &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.loot.co.za/shop/main.jsp?page=detail&amp;amp;id=1160104082928&quot;&gt;embedded Linux book,&lt;/a&gt; number one in the Embedded Section on Amazon. Its been really useful on explaining the intricacies of how Linux works. I've also been trying to read some of the Kernel code. But that is quite hard so pretty slow progress there.

I've also been doing some &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.djangoproject.com/&quot;&gt;Django  dev&lt;/a&gt; work. I'm rewriting a website I did in Asp.net a year ago using Django. The documentation on the website is fantastic on explaining how to use it. I really like the MVC design. Its very logical and I think fits quite appropriatly to designing a website.

The only thing now is to find a nice Linux based IDE. I'm so use to Visual Studio from work and I havn't found anything that compares to it yet. Eclipse with &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://pydev.sourceforge.net/&quot;&gt;PyDev&lt;/a&gt; is ok but I'm not quite sold on it. I've so far settled on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.geany.org/&quot;&gt;Geany&lt;/a&gt;. If anyone can recommend a good IDE I would really appreciate it. Specially something with good code completion (I'm a little lazy)

And finally I've been playing the latest installment of the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://prince-of-persia.uk.ubi.com/index.php?page=home&quot;&gt;Prince of Persia&lt;/a&gt; series. Really fun, a little repetitive but as good as Assassins Creed.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/01/28/DjangoEmbeddedLinux</guid>
         <pubDate>Wed, 28 Jan 2009 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Book Review Freakonomics</title>
         <link>http://garrensmith.github.com/2009/01/01/Book-Review-Freakonomics.html</link>
         <description>&lt;h1&gt;Book Review Freakonomics &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 01 Jan 2009 - Johannesburg &lt;/p&gt;

&lt;div style=&quot;text-align:left;&quot;&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jeanxbookreviews.files.wordpress.com/2007/11/freakonomics.gif?w=600&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:407px;height:407px;&quot; src=&quot;http://jeanxbookreviews.files.wordpress.com/2007/11/freakonomics.gif?w=600&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;First off, seasons greetings to everyone and I hope that 2009 will be a great year. It will certainly be an exciting year for South Africans with the Elections, Confederates Cup and our readiness for the Soccer World Cup. I also have to say well done to the Proteas for beating the Aussies. Waking up in the wee hours of the morning have never been so cool.
&lt;/div&gt;
With Christmas comes presents and one of my favorite presents is a book. So I cant resist talking about Freakonomics which was one of the books stashed in my Christmas loot.

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.kalahari.net/books/Freakonomics-A-Rogue-Economist-Explores-the-Hidden-Side-of-Everything/632/28956442.aspx&quot;&gt;Freakonomics&lt;/a&gt; is a book written by a journalist and a forward thinking economist. As the authors state this book has no real theme other than taking economic principles and applying them to different situations in life. Each chapter is quite different, the first chapter compares real estate agents to the Klu Klux Klan. This was quite interesting, as I'm in the process of house hunting. The next chapters look at what actually affected the crime rate decrease in America compared to what was stated; the relationship between a crack cocaine gang business model is to Macdonalds; how parents influence their children; and some other interesting and wacky comparisons.

Its not a particularly heavy book weighing in at 300 pages. It is well written and quite easy to get through. What I found a bit annoying is that the preface gives away some of what the chapters will talk about and kind of spoils the surprise. So maybe for a first read leave the preface till the end :-)

This book is a definite read for people that enjoy intelligent books that are a little left of centre. I would recommend looking for the revised version (same as the picture above) it has some extra content that is worth reading.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2009/01/01/Book-Review-Freakonomics</guid>
         <pubDate>Thu, 01 Jan 2009 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Hello Planet Ubuntu-ZA</title>
         <link>http://garrensmith.github.com/2008/12/23/hello-Ubuntu-za.html</link>
         <description>&lt;h1&gt;Hello Planet Ubuntu-ZA &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 23 Dec 2008 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://johnnyyanok.com/hello.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:324px;height:317px;&quot; src=&quot;http://johnnyyanok.com/hello.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;Thanks to &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://jonathancarter.co.za/&quot;&gt;High Voltage&lt;/a&gt; my blog has been added to the Ubuntu-ZA planet. So it is only polite to give a quick hello and introduce myself.

I'm an embedded software developer. I've been using Linux for about 2 years now since edgy eft.

Lately, with what spare time I have, I've been getting into Embedded Linux. I bought a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.beagleboard.org/&quot;&gt;Beagleboard&lt;/a&gt; while in the UK recently. So a lot of my posts will probably be on that. And other development tools that I tinker with.

I've only recently joined the Ubuntu-ZA community and I look forward to contributing as best as I can.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2008/12/23/hello-Ubuntu-za</guid>
         <pubDate>Tue, 23 Dec 2008 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>OpenEmbedded Beginnings</title>
         <link>http://garrensmith.github.com/2008/12/20/OpenEmbedded.html</link>
         <description>&lt;h1&gt;OpenEmbedded Beginnings &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 20 Dec 2008 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://i.iinfo.cz/urs/logo-112625974331241.png&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:215px;height:142px;&quot; src=&quot;http://i.iinfo.cz/urs/logo-112625974331241.png&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
I've been quite bad and been neglecting this blog. One of the reason is that Gears of War 2 has been distracting me, I've also been busying reading and tinkering on &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt;, and of course this time of year is quite crazy.

I've finally gotten down to reading up and using OpenEmbedded with my Beagleboard. OpenEmbedded is fantastic as it does a lot of the work for you when it comes to compiling packages and building an image and rootfs for you embedded device.

The best way to start using OpenEmbedded is to read the&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoardAndOpenEmbeddedGit&quot;&gt; wiki page&lt;/a&gt; at the beagleboard wiki.
For extra information and to really explain what OpenEmbedded is I recommend reading the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoardAndOpenEmbeddedGit&quot;&gt;user manual&lt;/a&gt;. It is a little out dated and incomplete but still very useful.

I built the basic &lt;span style=&quot;font-style:italic;&quot;&gt;console-image &lt;/span&gt;first. I came across a slight problem when it came to building the u-boot package. This will be fixed pretty soon but if you try and build one of the images and get the same problem I posted a solution &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://groups.google.com/group/beagleboard/browse_thread/thread/a27968d030dcf57a/f2ea240b049054a0?lnk=gst&amp;amp;q=oe+u-boot#f2ea240b049054a0&quot;&gt;here&lt;/a&gt;, that needs to be applied to your &lt;span style=&quot;font-style:italic;&quot;&gt;$OE_HOME/openembedded/packages/u-boot/u-boot_git.bb &lt;/span&gt;file

Now I'm hoping to push on and setup a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoardOpenEmbeddedDevelopment&quot;&gt;OpenEmbedded development enviroment&lt;/a&gt; and start tinkering with the packages.

Finally a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoard/contest&quot;&gt;beagleboard contes&lt;/a&gt;t is being setup, I would love to enter. Not sure if I know enough but will try.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2008/12/20/OpenEmbedded</guid>
         <pubDate>Sat, 20 Dec 2008 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Gears of War 2</title>
         <link>http://garrensmith.github.com/2008/11/09/GoW2.html</link>
         <description>&lt;h1&gt;Gears of War 2 &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 9 Nov 2008 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.gameguru.in/images/gears-of-war-2-coming-1.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:430px;height:320px;&quot; src=&quot;http://www.gameguru.in/images/gears-of-war-2-coming-1.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
I haven't had much chance to do much Beagleboarding, but that is my fault. As my &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.360voice.com/tag/J1mmaZA&quot;&gt;xbo306 blog&lt;/a&gt; will say I've been busy... I just bought the new &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://gearsofwar.xbox.com/&quot;&gt;Gears of War 2&lt;/a&gt; and its awesome. Been playing a lot of Horde mode with some friends. Its a lot of fun and totally my type of game play.... lots and lots of killing of bad guys with big gun.

Only into the second act of the single player but so far really enjoying it.

I have in the meantime also been looking at&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://wiki.openembedded.net/index.php/Main_Page&quot;&gt; OpenEmbedded&lt;/a&gt; and trying to build images with that. Its a little difficult with the Bandwidth limits we have in South Africa. The &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoardAndOpenEmbeddedGit&quot;&gt;tutorial&lt;/a&gt; for setting up OE is very complete and useful. Will report back on this when I've learnt more...</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2008/11/09/GoW2</guid>
         <pubDate>Sun, 09 Nov 2008 08:00:00 +0000</pubDate>
      </item>
      <item>
         <title>New Ubuntu Installed</title>
         <link>http://garrensmith.github.com/2008/11/02/New-Ubunut.html</link>
         <description>&lt;h1&gt;New Ubuntu Installed &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 2 Nov 2008 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://1.bp.blogspot.com/_-1lN25IwqMs/SQ3GiRVoZwI/AAAAAAAAABc/eb6x20iXASk/s1600-h/Desktop&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:320px;height:200px;&quot; src=&quot;http://1.bp.blogspot.com/_-1lN25IwqMs/SQ3GiRVoZwI/AAAAAAAAABc/eb6x20iXASk/s320/Desktop&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5264081831537960706&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;I Just &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.ubuntu.com/getubuntu/download&quot;&gt;upgraded&lt;/a&gt; to the new Ubuntu - Intrepid Ibex - so far so good. I did a complete re-install, its a good way to force me to remove all the crap data that collects on my computer. It looks great and the Network manager seems to work slightly better.For a full list of new features go &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.ubuntu.com/testing/intrepid/beta&quot;&gt;here&lt;/a&gt;.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2008/11/02/New-Ubunut</guid>
         <pubDate>Sun, 02 Nov 2008 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Adventures in Beagleboard Land - Compiler</title>
         <link>http://garrensmith.github.com/2008/10/18/BeagleBoard.html</link>
         <description>&lt;h1&gt;Adventures in Beagleboard Land - Compiler &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 18 Oct 2008 - Johannesburg &lt;/p&gt;

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_-1lN25IwqMs/SQMyW2QagzI/AAAAAAAAABU/qnztnYsRkw8/s1600-h/Linux_has_you_by_My_dynig_soul.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:320px;height:207px;&quot; src=&quot;http://3.bp.blogspot.com/_-1lN25IwqMs/SQMyW2QagzI/AAAAAAAAABU/qnztnYsRkw8/s320/Linux_has_you_by_My_dynig_soul.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5261104157801743154&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
Welcome back to another installment of my adventures in Embedded Linux and everything Beagleboard. I'm going to walk through getting the compiler up and running and building the Linux Kernel.

&lt;span style=&quot;font-weight:bold;&quot;&gt;About Compilers

&lt;/span&gt;In most Embedded Linux development, a developer will develop Software for his/her board on their host machine i.e Desktop computer, Laptop or 30x PS3 - Mega Server. They will write the code and then compile and build the code using a cross-platform toolchain or compiler. This will then allow the code now in an executable format to run on the target board (in our case the Beagleboard) .

The compiler used with the Beagleboard is the one from &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.codesourcery.com/gnu_toolchains/arm/portal/release313&quot;&gt;Codesourcery&lt;/a&gt;. I downloaded the Linux tar version, I initially tried the installer version but it didn't work for me - no idea why. Once the tar file is downloaded; unzip to a directory (I used &quot;/opt&quot;).  To test that is is working do this:
&lt;pre&gt;   /opt/arm-2007q3/bin/arm-none-linux-gnueabi-gcc
&lt;/pre&gt;You should get a &lt;span style=&quot;font-style:italic;&quot;&gt;no input file&lt;/span&gt; response in your terminal. The path to your compiler can be saved in your environment setting  (/.profile) for ease of use. Our compiler is up and running. And now to compile something cool!
&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;
Building the Kernel with Compiler&lt;/span&gt;

Its now time to get down to the alpha male of compiling... Compiling and building the Kernel. This is not as daunting as it initially feels like. &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoard#Linux_kernel&quot;&gt;Download&lt;/a&gt; the Kernel for the OMAP:
&lt;pre&gt;   git clone git://source.mvista.com/git/linux-omap-2.6.git
&lt;/pre&gt;Now these three basic/magic commands will get the compiler to build the Kernel according to the default beagle board setup:
&lt;pre&gt;   make CROSS_COMPILE=/opt/arm-2007q3/bin/arm-none-linux-gnueabi- distclean
  make CROSS_COMPILE=/opt/arm-2007q3/bin/arm-none-linux-gnueabi- omap3_beagle_defconfig
  make CROSS_COMPILE=/opt/arm-2007q3/bin/arm-none-linux-gnueabi- uImage &lt;/pre&gt;  The first line will return the source code to its original unconfigured state, removing all compiled code. The second line unsurprisingly sets the configurations for the Beagleboard. The final line is the money maker as it compiles the code creating a architecture-specific ELF file of the whole Linux Kernel, this file can be downloaded to the board and will be loaded by the bootloader. This file is our Linux Kernel  and root filesystem.

The Kernel build system uses a config file, &quot;.config&quot;, in the base directory of your kernel source code. This file, parsed through the Kernel build system, will build the Kernel according to the configuration file. How the Linux Build system works is quite complex - will have to be for another blog... Maybe...

Ok now suppose you want to make some changes to the default configuration to customise the Kernel for your required needs, you can do this by typing:
&lt;pre&gt;make CROSS_COMPILE=/opt/arm-2007q3/bin/arm-none-linux-gnueabi  menuconfig&lt;/pre&gt;If menuconfig won't load, install ncurses-dev (&lt;span style=&quot;font-style:italic;&quot;&gt;sudo apt-get install ncurses-dev&lt;/span&gt;).
This loads up a program to make changes and generate your own config file. There are a truckload of options and it requires some research before changing them, however if you make a change and then the system doesn't run, the above 3 magic commands will get the system back to default and up and running, as long as it was running beforehand of course.
*Warning: changing some of the CPU specific configurations could damage the CPU - so research any changes you want to make.

Once your new image is built, all you have to do is put it on the SD card and load it up - the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoard&quot;&gt;Beagle Wiki&lt;/a&gt; will help you with that.

Over the next couple weeks I will be looking at using OpenEmbedded and Angstrom, it looks really cool and very powerful. Hopefully report back when I have learned something interesting.</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2008/10/18/BeagleBoard</guid>
         <pubDate>Sat, 18 Oct 2008 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Beagleboard day 1</title>
         <link>http://garrensmith.github.com/2008/10/15/BeagleBoard-Day1.html</link>
         <description>&lt;h1&gt;Beagleboard day 1 &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 15 Oct 2008 - Johannesburg &lt;/p&gt;



When I was holidaying in the UK last month I bought myself a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://beagleboard.org/&quot;&gt;Beagleboard&lt;/a&gt; from Digi-key. I have been dying to find a cost effective board to investigate&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/Embedded_linux&quot;&gt; Embedded Linux&lt;/a&gt; and this board is ideal for this.

I have decided to try out two experiments at once. I always enjoy reading blogs specially programming blogs and have always wanted to start a blog but have had no reason too. This is where the Beagleboard comes in. Since I have a memory like a sieve I will be documenting my experience in using the Beagleboard to learn about Embedded Linux as well as hopefully help any other &quot;n00bs&quot; like myself.


&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://farm4.static.flickr.com/3142/2420765852_063c30160b.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:320px;&quot; src=&quot;http://farm4.static.flickr.com/3142/2420765852_063c30160b.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Hardware And Demo Setup&lt;/span&gt;

This board is no puppy with a processor capable of running up to 600 Mhz, 256MB of Flash and 128MB of Sdram, this boards bark is definitely not as menacing as its bite...

Now that I have the lame-can't-resist jokes out the way, this first post will cover getting it up and running with the demo build. When I ordered the board I was stupid enough not to read any further and did not realize it would be wise to get the other recommended kit. Like all embedded enginneers I should have known not to leave home without a valid serial port...

The Serial port is a &quot;&lt;span style=&quot;font-style:italic;&quot;&gt;AT/Everex&lt;/span&gt;&quot; or &quot;&lt;span style=&quot;font-style:italic;&quot;&gt;IDC10&lt;/span&gt;&quot; pinout. You can purchase a serial cable that will connect the boards serial port to the computer's port from &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://www.pccables.com/07120.htm&quot;&gt;PC Cables&lt;/a&gt;.  If you are like me and forgot there are ways around this. Using this &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/upload/2/2c/Flyswatter-ti-uart.pdf&quot;&gt;diagram&lt;/a&gt; (pdf)  or the previous link, get a IDC10 connector or solder directly onto the pin-out on the board. If you use a male RS-232 connector then follow the diagram exactly, if you use a female connector don't like me spend an hour trying to figure out why your serial port is faulty, rather just switch the RX and TX pins around.

For Revision B of the Beagleboard - which is the current revision - no USB Host is available, however &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://en.wikipedia.org/wiki/USB_OTG&quot;&gt;USB OTG &lt;/a&gt;is available, allowing for the board to act as a device or a Host. For the Linux kernel to act as a host it needs to be informed. As twittering the Kernel is out, we need a &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://trisoft.de/pics/ZHost.JPG&quot;&gt;5 - pin mini USB cable&lt;/a&gt;. If you are like me and still kicking yourself for not ordering one, a quick hack is available. If you solder pin 4 and 5 together on the board this will &lt;span style=&quot;font-weight:bold;&quot;&gt;permanently &lt;/span&gt;&lt;span&gt;put the Kernel&lt;/span&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; &lt;/span&gt;in USB host mode (please don't  mail me if this destroys your board, it worked fine for me). And then you can run the demo and use a keyboard and mouse with it as long as you have an externally powered USB hub. I have heard urban myths of doing this in software but so far no one has been able to tell me how.

Digi-key are planning to offer the adaptors for the serial port, however they are having supplier issues at the moment. If you have not yet bought your board or are looking for a list of recommended peripherals these links should help you, check &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://code.google.com/p/beagleboard/wiki/BeagleBoardShoppingList&quot;&gt;this&lt;/a&gt; and &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://beagleboard.org/hardware&quot;&gt;this&lt;/a&gt; out. They also supply links on continuing further once you have a Beagleboard.

&lt;span style=&quot;font-weight:bold;&quot;&gt;...And finally the demo running.&lt;/span&gt;&lt;span&gt;

To get the Demo running is very straight forward. In fact, I'm not really going to add in anything extra to what the &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://elinux.org/BeagleBoardBeginners&quot;&gt;Beginner wiki page&lt;/a&gt; said as it explained it perfectly. Run through the process of testing the board, then download all the demo files and format the SD card correctly. It should then just work.

&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://3.bp.blogspot.com/_-1lN25IwqMs/SPZVsRnRpDI/AAAAAAAAABM/mt-BxmpxdRs/s1600-h/2535894759_297dbfff80.jpg&quot;&gt;&lt;img style=&quot;margin:0px auto 10px;display:block;text-align:center;cursor:pointer;&quot; src=&quot;http://3.bp.blogspot.com/_-1lN25IwqMs/SPZVsRnRpDI/AAAAAAAAABM/mt-BxmpxdRs/s320/2535894759_297dbfff80.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5257483834132374578&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;

[1] Photo's courtesy of &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dominion.thruhere.net/koen/cms/&quot;&gt;Koen Kooi&lt;/a&gt;&lt;/span&gt;&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://dominion.thruhere.net/koen/cms/&quot;&gt; flckr acoount&lt;/a&gt;&lt;span&gt;
&lt;/span&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2008/10/15/BeagleBoard-Day1</guid>
         <pubDate>Wed, 15 Oct 2008 07:00:00 +0000</pubDate>
      </item>
      <item>
         <title>Enter the blogging world</title>
         <link>http://garrensmith.github.com/2008/10/11/Blogging-World.html</link>
         <description>&lt;h1&gt;Enter the blogging world &lt;/h1&gt;

&lt;p id=&quot;meta&quot; class=&quot;meta&quot;&gt; . 11 Oct 2008 - Johannesburg &lt;/p&gt;



&lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://media.compendiumblog.com/images/blog_images/e7c690e8-6ff9-102a-ac6d-e4aebca50425/cee7a25b-0fde-489d-a470-8a6c75f96c79/Blogging-727509.jpg&quot;&gt;&lt;img style=&quot;margin:0pt 10px 10px 0pt;float:left;cursor:pointer;width:320px;&quot; src=&quot;http://media.compendiumblog.com/images/blog_images/e7c690e8-6ff9-102a-ac6d-e4aebca50425/cee7a25b-0fde-489d-a470-8a6c75f96c79/Blogging-727509.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;
Wow, I've finally done it - somewhat belated I'm sure you will say - I've joined the blogging community. Now to write something worth reading...</description>
         <guid isPermaLink="false">http://garrensmith.github.com/2008/10/11/Blogging-World</guid>
         <pubDate>Sat, 11 Oct 2008 07:00:00 +0000</pubDate>
      </item>
   </channel>
</rss>
<!-- fe2.yql.bf1.yahoo.com compressed/chunked Fri Mar  2 09:07:18 UTC 2012 -->
