<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[dalts.net]]></title>
  <link href="http://dalts.net/atom.xml" rel="self"/>
  <link href="http://dalts.net/"/>
  <updated>2012-12-31T07:13:40+10:00</updated>
  <id>http://dalts.net/</id>
  <author>
    <name><![CDATA[Steve Dalton]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Arduino controlled Raspberry PI Pandora Radio]]></title>
    <link href="http://dalts.net/blog/2012/10/15/arduino-controlled-raspberry-pi-pandora-radio/"/>
    <updated>2012-10-15T15:57:00+10:00</updated>
    <id>http://dalts.net/blog/2012/10/15/arduino-controlled-raspberry-pi-pandora-radio</id>
    <content type="html"><![CDATA[<p><img class="right" src="http://dalts.net/images/jukebox1.jpg"></p>

<p>We have a nicely running little Raspberry PI that we use as a Pandora radio at the Gold Coast TechSpace.
It&#8217;s a great setup and people have enjoyed upping and downing tracks on the playlists to get a good mix of tunes that we all like.
We run the pianobar application which gives a really simple command line interface that works beautifully with us.</p>

<p>I wanted to make it even better by having some big buttons that people could hit to like/dislike a track or just move on to the next (don&#8217;t want to ban it - just tired of it).</p>

<p>How could I do this simply? Well - I realised that by replacing the DFU bootloader you can turn any Arduino into a HID device to control keyboard and mouse (imagine the prank opportunities here people!)</p>

<p>Anyway - here is my MVP (Minimum Viable Product) that is now being used at the space and getting me early feedback.</p>

<p>I don&#8217;t have the big buttons yet, I&#8217;ve just hooked up some simple little push buttons to a breadboard and an Arduino (Freetronics Eleven). Once I get it more finished I might move it to a Leostick.</p>

<p>Here is my initial arduino sketch, I realise now there are better ways to handle multiple presses in hardware using interupt lines or capacitors, but for my initial release this seemed to work:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
<span class='line-number'>27</span>
<span class='line-number'>28</span>
<span class='line-number'>29</span>
<span class='line-number'>30</span>
<span class='line-number'>31</span>
<span class='line-number'>32</span>
<span class='line-number'>33</span>
<span class='line-number'>34</span>
<span class='line-number'>35</span>
<span class='line-number'>36</span>
<span class='line-number'>37</span>
<span class='line-number'>38</span>
<span class='line-number'>39</span>
<span class='line-number'>40</span>
<span class='line-number'>41</span>
<span class='line-number'>42</span>
<span class='line-number'>43</span>
<span class='line-number'>44</span>
<span class='line-number'>45</span>
<span class='line-number'>46</span>
<span class='line-number'>47</span>
<span class='line-number'>48</span>
<span class='line-number'>49</span>
<span class='line-number'>50</span>
<span class='line-number'>51</span>
<span class='line-number'>52</span>
<span class='line-number'>53</span>
<span class='line-number'>54</span>
<span class='line-number'>55</span>
<span class='line-number'>56</span>
<span class='line-number'>57</span>
<span class='line-number'>58</span>
<span class='line-number'>59</span>
<span class='line-number'>60</span>
<span class='line-number'>61</span>
</pre></td><td class='code'><pre><code class='c'><span class='line'><span class="kt">uint8_t</span> <span class="n">buf</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
</span><span class='line'>  <span class="mi">0</span> <span class="p">};</span>     <span class="cm">/* Keyboard report buffer */</span>
</span><span class='line'>
</span><span class='line'><span class="cp">#define PIN_LOVE 5</span>
</span><span class='line'><span class="cp">#define PIN_HATE 6</span>
</span><span class='line'><span class="cp">#define PIN_NEXT 7</span>
</span><span class='line'><span class="cp">#define LED 13</span>
</span><span class='line'>
</span><span class='line'><span class="kt">int</span> <span class="n">love</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="kt">int</span> <span class="n">hate</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="kt">int</span> <span class="n">next</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'><span class="kt">int</span> <span class="n">state</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>  <span class="n">Serial</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">9600</span><span class="p">);</span>
</span><span class='line'>  <span class="n">pinMode</span><span class="p">(</span><span class="n">PIN_LOVE</span><span class="p">,</span> <span class="n">INPUT</span><span class="p">);</span>
</span><span class='line'>  <span class="n">pinMode</span><span class="p">(</span><span class="n">PIN_HATE</span><span class="p">,</span> <span class="n">INPUT</span><span class="p">);</span>
</span><span class='line'>  <span class="n">pinMode</span><span class="p">(</span><span class="n">PIN_NEXT</span><span class="p">,</span> <span class="n">INPUT</span><span class="p">);</span>
</span><span class='line'>  <span class="c1">// enable internal pull-ups</span>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">PIN_LOVE</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">PIN_HATE</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
</span><span class='line'>  <span class="n">digitalWrite</span><span class="p">(</span><span class="n">PIN_NEXT</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">delay</span><span class="p">(</span><span class="mi">200</span><span class="p">);</span>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>  <span class="n">state</span> <span class="o">=</span> <span class="n">digitalRead</span><span class="p">(</span><span class="n">PIN_LOVE</span><span class="p">);</span>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">!=</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">love</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">buf</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">87</span><span class="p">;</span>     <span class="c1">// + key</span>
</span><span class='line'>    <span class="n">Serial</span><span class="p">.</span><span class="n">write</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>    <span class="c1">// Send keypress</span>
</span><span class='line'>    <span class="n">releaseKey</span><span class="p">();</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="n">love</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">state</span> <span class="o">=</span> <span class="n">digitalRead</span><span class="p">(</span><span class="n">PIN_HATE</span><span class="p">);</span>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">!=</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">hate</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">buf</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">86</span><span class="p">;</span>     <span class="c1">// - key</span>
</span><span class='line'>    <span class="n">Serial</span><span class="p">.</span><span class="n">write</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>    <span class="c1">// Send keypress</span>
</span><span class='line'>    <span class="n">releaseKey</span><span class="p">();</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="n">hate</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'>  <span class="n">state</span> <span class="o">=</span> <span class="n">digitalRead</span><span class="p">(</span><span class="n">PIN_NEXT</span><span class="p">);</span>
</span><span class='line'>  <span class="k">if</span> <span class="p">(</span><span class="n">state</span> <span class="o">!=</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">next</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">buf</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">17</span><span class="p">;</span>     <span class="c1">// n key</span>
</span><span class='line'>    <span class="n">Serial</span><span class="p">.</span><span class="n">write</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>    <span class="c1">// Send keypress</span>
</span><span class='line'>    <span class="n">releaseKey</span><span class="p">();</span>
</span><span class='line'>  <span class="p">}</span>
</span><span class='line'>  <span class="n">next</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
</span><span class='line'>
</span><span class='line'><span class="p">}</span>
</span><span class='line'>
</span><span class='line'><span class="kt">void</span> <span class="nf">releaseKey</span><span class="p">()</span>
</span><span class='line'><span class="p">{</span>
</span><span class='line'>  <span class="n">buf</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>  <span class="n">buf</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span><span class='line'>  <span class="n">Serial</span><span class="p">.</span><span class="n">write</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>  <span class="c1">// Release key  </span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Note: The numbers you see for the keypresses are not ASCII codes - you need to refer to the HID spec to get the correct codes for your keyboard.</p>

<p>Upload the sketch to the Arduino, the board will be doing nothing until you load the keyboard firmware. To do this you have to use the dfu_programmer utility that is in the standard ubuntu repos.</p>

<p>However for it to work, you need to reset the DFU so it can take commands, to find out all about this have a look at the <a href="http://arduino.cc/en/Hacking/DFUProgramming8U2">DFU programming guide</a> - the key section is &#8220;Reset the 8u2&#8221;.</p>

<p>This is what I did:</p>

<ul>
<li>jumper the reset pin with the ground (near the USB connector)</li>
<li>Whilst the pins are jumpered, press and hold the reset pushbutton</li>
<li>remove the jumper, then release the reset pushbutton. Usually D13, will blink a few times quickly after releasing the jumper.</li>
</ul>


<p>Now you should be able to run the dfu-programmer utility:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>sudo dfu-programmer at90usb82 erase
</span><span class='line'>sudo dfu-programmer at90usb82 flash Arduino-keyboard-0.3.hex
</span><span class='line'>sudo dfu-programmer at90usb82 reset</span></code></pre></td></tr></table></div></figure>


<p>When you need to put the old bootloader firmware on (ie. to load a new sketch) do this:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>sudo dfu-programmer at90usb82 erase
</span><span class='line'>sudo dfu-programmer at90usb82 flash Arduino-usbserial.hex
</span><span class='line'>sudo dfu-programmer at90usb82 reset</span></code></pre></td></tr></table></div></figure>


<p>Remember you will have to do the reset trick every time. There are quicker ways using dedicated programmers - but this worked for me.</p>

<p>Once the keyboard DFU bootloader is in place, when I hit the keys on my arduino it will now send the keys +, - and &#8220;n&#8221; to the Raspberry PI. Simple but effective.</p>

<p>My next step for version 0.2 is to put some proper coloured buttons on it, put it in a better case (probably an extension of my lego case) and tidy up the code a bit.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Lego Mindstorms on Ubuntu 12.04 Part 1]]></title>
    <link href="http://dalts.net/blog/2012/10/14/lego-mindstorms-on-ubuntu-12-dot-04/"/>
    <updated>2012-10-14T09:49:00+10:00</updated>
    <id>http://dalts.net/blog/2012/10/14/lego-mindstorms-on-ubuntu-12-dot-04</id>
    <content type="html"><![CDATA[<p><img class="right" src="http://dalts.net/images/nxt.jpg"></p>

<p>We&#8217;ve been doing some Lego workshops at <a href="http://gctechspace.org">Gold Coast TechSpace</a> lately and with the older kids we&#8217;ve been spending a lot of time on Lego Mindstorms.</p>

<p>I quite like the Lego NXT software that comes with the kits for a simple introduction, it&#8217;s easy to teach and there are plenty of resources available to help.</p>

<p>However 2 things really irk me a bit about it:</p>

<ul>
<li>It&#8217;s a bit limiting at times, I start the workshop talking about programming and what I and others do for a job - but when students ask me about how to do more advanced things I&#8217;m sometimes stumped on how to do it in the GUI - even sometimes quite simple things that would be ridiculously easy in REAL code.</li>
<li>It only runs on Windows (and Mac). I purged my machines of Windows a long time ago to take a <a href="http://fsf.org">free software</a> path and it really pains me to have to dual boot perfectly good Linux machines to run the Lego software. I could run it in wine but that makes bluetooth connectivity a little difficult.</li>
</ul>


<p>So I am embarking on a bit of discovery mission on how to work with Lego on a platform of my choice - GNU Linux, and for the sake of keeping things simple and accessible - Ubuntu 12.04 LTS (in my case Lubuntu - but it doesn&#8217;t matter for the purposes of this). I&#8217;ll blog my discoveries here as I go along.</p>

<p>There&#8217;s many alternative programming paradigms on Lego LXT, and as a Java programmer for many years you would think I might jump for something like <a href="http://lejos.sourceforge.net">LeJOS</a> which runs a JVM on the NXT brick, but I did want to keep the NXT bricks with clean firmware so that they could be used with the stock software if necessary. I was a C programmer before Java and a lot of the kids seem to like Python so I feel myself searching for something different.</p>

<h1>Your first NXC program</h1>

<p>I&#8217;ll start by installing the <a href="http://bricxcc.sourceforge.net/nbc">NBC NXC</a> compiler from <a href="http://bricxcc.sourceforge.net">Bricx Command Center</a>. The project is a little old and hasn&#8217;t had an update in a while, but appears stable and well used. NBC is a simple byte code like language similar to assembly language, NXC stands for Not Exactly C and is a C like like language that we will use on our way to Python.</p>

<p>If you want to go to the exact version I downloaded - try <a href="http://sourceforge.net/projects/bricxcc/files/NBC_NXC/NBC%20release%201.2.1%20r4/nbc-1.2.1.r4.tgz/download">here</a>, just extract it to a directory somewhere and put the NXT/nbc executable in the path. You can also have a look at the <a href="http://sourceforge.net/projects/bricxcc/files/NBC_NXC/NBC%20release%201.2.1%20r4/nbc-1.2.1.r4.src.tgz/download">source code</a>. It&#8217;s a shame the code isn&#8217;t in a source repository - if someone reading this knows of the source of truth, it would be good to know.</p>

<p>Now that you have the compiler you can write little C programs that you can run on the NXT. Here is the classic Hello World example:</p>

<figure class='code'><figcaption><span>HelloWorld.nxc </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='c'><span class='line'><span class="n">task</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'>    <span class="n">TextOut</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s">&quot;HelloWorld!&quot;</span><span class="p">);</span>
</span><span class='line'>    <span class="n">Wait</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
</span><span class='line'><span class="p">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>You can then compile this up using</p>

<pre>
nbc -O=HelloWorld HelloWorld.nxc
</pre>


<p>Note: If you are curious to see what the intermediate NBC code looks like you can also use the -nbc flag to write it to a file.</p>

<p>Now you need to copy your program to the NXT brick, but to do this you&#8217;ll first need to do a couple more steps.</p>

<h1>Connecting your NXT Brick</h1>

<p>To test your NXT connectivity I use the rather excellent <a href="http://bricxcc.sourceforge.net/nexttools_linux.zip">Next Tools</a>. Even if you don&#8217;t want to program the NXT like this Next Tools is still a lot of fun, you can see all sorts of information about your NXT brick and even test all the sensors and motors in a more flexible way than the &#8220;Try&#8221; built in feature on NXT. I usually go straight to the music section to test I can connect to my brick.</p>

<p>Running this tool would normally be a no-brainer, just plug it into the USB port and use it, and it is if you run as root via sudo, but to do it properly you should add udev rules to allow your user to access the USB port properly.</p>

<p>If you want a script that will do all of this, feel free to check out <a href="http://ubuntuforums.org/showthread.php?t=1926022">this thread</a>, but I like to keep it simple and do the bare minimum of changes, so this is what I did:</p>

<p>First run &#8220;lsusb&#8221; to see what the id of the NXT is, you should see a line of text something like this:</p>

<pre>
Bus 002 Device 006: ID 0694:0002 Lego Group Mindstorms NXT
</pre>


<p>Now create a file in the /etc/udev/rules.d directory with rules like this:</p>

<figure class='code'><figcaption><span>/etc/udev/rules.d/45-legonxt.rules </span></figcaption>
 <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="c"># Lego NXT brick in normal mode</span>
</span><span class='line'><span class="nv">SUBSYSTEM</span><span class="o">==</span><span class="s2">&quot;usb&quot;</span>, <span class="nv">DRIVER</span><span class="o">==</span><span class="s2">&quot;usb&quot;</span>, ATTRS<span class="o">{</span>idVendor<span class="o">}==</span><span class="s2">&quot;0694&quot;</span>, ATTRS<span class="o">{</span>idProduct<span class="o">}==</span><span class="s2">&quot;0002&quot;</span>, <span class="nv">MODE</span><span class="o">=</span><span class="s2">&quot;0660&quot;</span>, <span class="nv">OWNER</span><span class="o">=</span><span class="s2">&quot;dalts&quot;</span>
</span><span class='line'><span class="c"># Lego NXT brick in firmware update mode (Atmel SAM-BA mode)</span>
</span><span class='line'><span class="nv">SUBSYSTEM</span><span class="o">==</span><span class="s2">&quot;usb&quot;</span>, <span class="nv">DRIVER</span><span class="o">==</span><span class="s2">&quot;usb&quot;</span>, ATTRS<span class="o">{</span>idVendor<span class="o">}==</span><span class="s2">&quot;03eb&quot;</span>, ATTRS<span class="o">{</span>idProduct<span class="o">}==</span><span class="s2">&quot;6124&quot;</span>, <span class="nv">MODE</span><span class="o">=</span><span class="s2">&quot;0660&quot;</span>, <span class="nv">OWNER</span><span class="o">=</span><span class="s2">&quot;dalts&quot;</span>
</span></code></pre></td></tr></table></div></figure>


<p>You don&#8217;t need the 2nd line - but it&#8217;s useful for firmware updates, replace &#8220;dalts&#8221; with your own user id. Some of the examples on the web create groups and add your user to the group but I like to keep things simple and just add my regular user.</p>

<p>Now restart udev</p>

<pre>
service udev restart
</pre>


<p>You should now be able to run Next Tools from your own user id!</p>

<h1>Uploading your Program</h1>

<p>Now you are ready to upload your program that you created at start. You have a few choices here. One is to use the file browser in Next Tools - there is an upload feature. Another is to use the nxt_push command that is found in the python-nxt package. To run it just install using</p>

<pre>
sudo apt-get install python-nxt
</pre>


<p>then upload your HelloWorld program</p>

<pre>
nxt_push HelloWorld
</pre>


<p>You can then run the program using the buttons on the NXT</p>

<p>Another final option is to use the the built in download feature of nbc, you can do something like this when you compile:</p>

<pre>
nbc -d -S=usb HelloWorld.nxc
</pre>


<p>This will automatically download a successful build to the NXT brick, there is also a -r option to download and run.</p>

<p>In the next section, we&#8217;ll learn how to write NXT programs in Python - see you then!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[How to Build a Startup - Steve Blank]]></title>
    <link href="http://dalts.net/blog/2012/09/17/how-to-build-a-startup-steve-blank/"/>
    <updated>2012-09-17T09:40:00+10:00</updated>
    <id>http://dalts.net/blog/2012/09/17/how-to-build-a-startup-steve-blank</id>
    <content type="html"><![CDATA[<p><img class="right" src="http://dalts.net/images/steveblank.jpg"></p>

<p>Our first lecture in the Steve Blank Lean Startups Course is this Wednesday at 8am. Please be on time and be prepared for an awesome course. <a href="http://www.meetup.com/gctechspace/events/81500232">Please RSVP</a></p>

<p>I&#8217;ve watched ahead on the first lecture to get a feel for it - and it looks excellent.</p>

<p>Would be great if all those attending watch Lecture 0 in their own time. You can get to it via <a href="http://www.udacity.com/view#Course/ep245/CourseRev/1">the Classroom page</a>, the video links are on the right-hand-side. It&#8217;s very short and just gives you an intro to what the course is about.</p>

<p>I will print off some Business Model templates in A3 in preparation for our first exercise. I also have plenty of post-its.</p>

<p>Following the first lecture I&#8217;ll probably set up a separate google group so we can all discuss the course without disturbing the others on this mailing list. I have it all setup on the big TV and we&#8217;ll probably just sit informally on the couches to watch.</p>

<p>If anyone has any ideas for startups that they would like to form a team on, please bring along to the meeting to put forward. It&#8217;s ok for people to not do startups and just watch the lectures, and also to work on your own solo - but Steve advises starting a team to get the most of the course, so if there are enough people who want this, it would be good to have some ideas to kick around.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Lego workshops are back]]></title>
    <link href="http://dalts.net/blog/2012/09/14/lego-workshops-are-back/"/>
    <updated>2012-09-14T07:46:00+10:00</updated>
    <id>http://dalts.net/blog/2012/09/14/lego-workshops-are-back</id>
    <content type="html"><![CDATA[<p><img class="right" src="http://dalts.net/images/legorubberbands.jpg">
I am running the Lego workshops again at <a href="http://gctechspace.org">Gold Coast TechSpace</a> during the school holidays. They were a huge success last time and I am following through on my promise to Parents to continue with them.</p>

<p>There&#8217;s a more details post on the <a href="http://gctechspace.org/2012/09/school-holiday-learning-lego-programme-announced">Gold Coast TechSpace Blog</a></p>

<p>So, if you&#8217;re a Gold Coast parent with a Lego obsessed child like mine - send them my way!</p>

<p>I&#8217;ve now introduced an additional &#8220;Machines&#8221; class for younger kids that doesn&#8217;t involve the programming or mindstorms, but does teach them a thing or 2 about Physics and Mechanics in a fun way. More advanced kids can even hook their creations up to the electric motors if they want.</p>

<p>You can RSVP for the workshops at the links in the blog post above or go straight to our <a href="http://meetup.com/gctechspace">meetup</a> and scroll down to the Lego events.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Building Pianobar On (L)Ubuntu]]></title>
    <link href="http://dalts.net/blog/2012/07/17/building-pianobar-on-ubuntu/"/>
    <updated>2012-07-17T20:00:00+10:00</updated>
    <id>http://dalts.net/blog/2012/07/17/building-pianobar-on-ubuntu</id>
    <content type="html"><![CDATA[<p>I&#8217;ve been using Linux since slackware 0.9 and I&#8217;m quite used to compiling software
and kernels from source, but in recent years it&#8217;s very rare that I have to do this
anymore. I run <a href="http://lubuntu.net">Lubuntu</a> on my desktop as I just like things things to be clean, simple and
just work - I often sacrifice the latest and greatest for stability.</p>

<p>One of the tools I just can&#8217;t do without is <a href="http://6xq.net/projects/pianobar">pianobar</a>
which is a command line tool for listening to music on <a href="http://www.pandora.com">Pandora</a>, which incidentally is now available
in Australia without the use of proxies! However, Pandora don&#8217;t particularly like people using
standalone clients as it cuts out their advertising so they change the protocol often which
makes the version pianobar in the Ubuntu repositories quickly get out of date.</p>

<p>So I had to compile it from source. There&#8217;s a few dependencies and people who aren&#8217;t familiar
with the various development packages might get stuck, so I thought I&#8217;d document what I did
here for posterity.</p>

<p>From somewhere in your home directory, do the following:</p>

<pre>
sudo apt-get install git
git clone https://github.com/PromyLOPh/pianobar.git
cd pianobar
sudo apt-get install libao-dev libgcrypt11-dev libgnutls-dev libfaad-dev libmad0-dev libjson0-dev make pkg-config
make
sudo make install
</pre>


<p>To keep pianobar up-to-date, just run &#8220;git pull&#8221; in the pianobar directory, then make and sudo make install.</p>

<p>You can then run pianobar but just typing &#8220;pianobar&#8221;. You&#8217;ll be prompted for your pandora
username and password and you can then just follow the simple menus.</p>

<p>If you want to avoid typing in user/password every time, create a file ~/.config/pianobar/config
with something like the following in it:</p>

<pre>
user = user@myfunkydomain.com
password = cleartextpasswordthatidontuseanywhereelse
</pre>


<p>The password is stored in cleartext, so obviously don&#8217;t use a password that is used elsewhere</p>

<p>If you like Pandora and want to help them continue to run (without having to look at adverts) I&#8217;d
 encourage you to upgrade to <a href="http://www.pandora.com/one">Pandora One</a>. It&#8217;s $36/year
and gives you higher quality audio and fewer interuptions.</p>

<p>Now this blog post took me 10 times longer to write than install pianobar!, hopefully it&#8217;s useful to someone.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Gold Coast TechSpace Storage Funded!]]></title>
    <link href="http://dalts.net/blog/2012/07/04/gctechspace-storage-funding/"/>
    <updated>2012-07-04T16:57:00+10:00</updated>
    <id>http://dalts.net/blog/2012/07/04/gctechspace-storage-funding</id>
    <content type="html"><![CDATA[<p><img class="right" src="http://dalts.net/images/racking.png"/>I am very happy to announce that Gold Coast TechSpace managed to raise $1709
for our shelving and storage project. Our target was $1500 and we will use the extra
to go towards storage boxes &amp; lockers.</p>

<p>We purchased the first of the racking on Monday and have already installed a couple to
get some stored items out of the way. Additional money will be used towards storage
boxes and lockers and once everything is in place I will make sure I post plenty of
pictures for you.</p>

<p>A big thankyou goes to all our pledgers, a boast board (see draft below) will be attached to the wall next
to the shelves and all those that pledged over $50 are clearly mentioned. I have also
included smaller pledges at the bottom in smaller text right at the bottom as every dollar
is greatly appreciated. Those that pledged $100 or more will be getting their personalised
trophy once our 3D printers are all back on line in a couple of weeks, so please bear with us
there.</p>

<p><img class="center" src="http://dalts.net/images/BoastBoard.png"/></p>

<p>A special thankyou to those from other hackerspaces around Australia that helped us, I am really
proud of the way that the hackerspace community has come together recently and it is a great community.
Please come and visit us at Gold Coast Techspace - we hope to have a Hackerspace passport stamp soon too.</p>

<p>Despite a few issues with the UI and in particular the payments system I
would also like to thank Andy and Bryan at iPledg for giving us the platform
to raise these funds. The project was a big learning opportunity for all of
us. We were able to find quite a few bugs in the system and I learnt a thing
or to about promotions - Andy was a great help here, calling me almost
every week with words of encouragement and advice.</p>

<p>Now we are looking a bit tidier we are going to concentrate on getting our
space up to full speed - so many things are happening now, so please drop in
and see us. We are usually there Wednesday nights and Sunday afternoons for
casual drop-in, but check out <a href="http://meetup.com/gctechspace">meetup site</a>
for full details of all our events.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Gold Coast TechSpace Storage]]></title>
    <link href="http://dalts.net/blog/2012/06/12/gold-coast-techspace-storage/"/>
    <updated>2012-06-12T06:52:00+10:00</updated>
    <id>http://dalts.net/blog/2012/06/12/gold-coast-techspace-storage</id>
    <content type="html"><![CDATA[<p><img class="right" src="http://dalts.net/images/gctechspace.png"crowd/>One of my big projects over the last year outside of my day job has been helping to
setup the <a href="http://gctechspace.org">Gold Coast TechSpace</a>. It&#8217;s been a really
rocky ride; things like this are <strong>really</strong> difficult to setup in a place like the
Gold Coast and it&#8217;s been a huge learning experience for myself and the founding committee.</p>

<p>However, it does feel like we are over the hump now with people starting to <em>get</em> what
we are trying to achieve and a handful of loyal members paying a membership fee of $40/month
($20 for students) to help cover our rent. Some interested projects are on the go including Reprap,
Raspberry PI, Open Source Lab and a whole range of Arduino based projects and we regularly run the
Open Source Gold Coast meetups and Barcamps at the Space.</p>

<p>We meet regularly mostly on evenings and weekends, with a regular
open evening on Wednesdays, educational sessions on Saturdays (including some for kids) and Sunday
afternoon hangout - see our <a href="http://meetup.com/gctechspace">meetup group</a> to see what&#8217;s happening
and don&#8217;t forget to <a href="http://meetup.com/gctechspace/join">join the group</a> to be kept informed of what
is going on.</p>

<p>One thing we are really lacking is storage space for all of our gear, we need shelving to the ceiling
(our unit is tall and a lot of vertical space is being wasted) but also storage boxes and lockers for
members. As an aside I have also been hunting for a snack vending machine to sell snacks from and also
Arduino and other electronics kits - if you know of any for sale I&#8217;m all ears!.</p>

<p>We couldn&#8217;t afford any of these things from our regular budget and this is why I
started the <a href="http://ipledg.com/projects/gc-techspace-storage1/347">GCTechSpace Storage project</a> on the
iPledg crowdfunding site. We are going really well and I thank those that have pledged from the bottom
of my heart. We managed to raise over $800 of the $1500 target so far in quite a short time - those that
have pledged over $50 will get their names on the boast board and over $100 will also receive a little
3D printed trophy.</p>

<p>However, the way that iPledg and these crowd funding sites works is this - if you don&#8217;t get your targetted
amount by the expiry date you get <em>zilch!</em>, <em>nothing!</em>, <em>$0</em>. We have less than 2 weeks to go, so I&#8217;m basically
writing to see if anyone out there reading this blog might be able to help us. I don&#8217;t mind how much, you can
pledg as little as $1, it all adds to the target - I&#8217;d just really appreciate the help if you can spare a little
for a great project. There is a little video of the space below if you want to see for yourself.</p>

<p>You can pledge <a href="http://ipledg.com/reward/347">right here</a>, it&#8217;s a pretty simple and painless procedure,
you just need a paypal account.</p>

<p>Thankyou!</p>

<iframe width="420" height="315" src="http://www.youtube.com/embed/UuKYD-twI6I" frameborder="0" allowfullscreen></iframe>



]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Noteboard OLPC Project at Griffith Uni]]></title>
    <link href="http://dalts.net/blog/2012/06/01/noteboard-olpc-project-at-griffith-uni/"/>
    <updated>2012-06-01T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2012/06/01/noteboard-olpc-project-at-griffith-uni</id>
    <content type="html"><![CDATA[<p><img class="left" src="https://lh4.googleusercontent.com/-UMMUU8TuxLA/T8dCjYkXwOI/AAAAAAAAAxA/MewYcl2Bmc4/s640/12%2520-%25201.jpg" width="400"/>Last night I had the pleasure of attending the presentation of 4 Griffith University Gold Coast Students Yukito Tsunoda, Harold Haigh, Ben Cowley &amp; Maryam Nemati. They have been working on an <a href="http://laptop.org">OLPC</a> Activity &#8220;NoteBoard&#8221; as part of their Industry project.</p>

<p>The students developed the activity based on specs supplied by Sridhar at OLPC Australia. This approach differs from some of the other OLPC Activities in that it was  based on a real customer need rather than the meandering evolution that we sometimes see with some of these projects.</p>

<p>They did a great job and I was impressed to see how quickly they picked up Python and the Sugar environment and came up with a really nice little application that I believe kids will love. <img class="right" src=" https://lh4.googleusercontent.com/-ba47epmgfu0/T8c54TlTJlI/AAAAAAAAAwo/dChvqMFlu1Q/s512/12%2520-%25201.jpg" width="300"/></p>

<p>There are some bugs, but I am sure these will be ironed out and some of the team have expressed an interest in continuing on with the application after it is given back to the OLPC community.</p>

<p>My only feedback for the team was that they had no automated testing, this is a definite weakness amongst a lot of the OLPC activities and I am hoping future projects will take this on board to improve quality but also create a legacy for the next set of developers that take on activities as they evolve.</p>

<p>I&#8217;d be interested to hear from other Sugar developer on any good techniques for automated testing - I presume unit tests can be just standard <a href="http://docs.python.org/library/unittest.html">PyUnit</a>, BDD with something like <a href="https://github.com/rlisagor/freshen">freshen</a>, but not sure how you go about automated Functional testing of the UI part of a Sugar activity&#8230; is this just standard GTK automation?</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Barcamp Gold Coast this Sunday]]></title>
    <link href="http://dalts.net/blog/2012/06/01/barcamp-gold-coast-this-sunday/"/>
    <updated>2012-06-01T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2012/06/01/barcamp-gold-coast-this-sunday</id>
    <content type="html"><![CDATA[<p><img class="left" src="http://photos4.meetupstatic.com/photos/event/c/b/4/d/global_8632045.jpeg" width="120" />Just a quick reminder that Barcamp Gold Coast is on again this weekend. A few people couldn&#8217;t make Saturday so we are trialling running it on a Sunday this time. The day will take place at the Gold Coast TechSpace again which is at 3b/51 Johnston St, Southport just behind the Johnston St Cafe (map <a href="http://goo.gl/XYQug">here</a>)</p>

<p>To RSVP please go <a href="http://www.meetup.com/barcampqld/events/62602222">here</a></p>

<p>Our sponsors are again:</p>

<ul>
<li><a href="http://dundaslawyers.com.au">Dundas Lawyers</a> (Coffee)</li>
<li><a href="http://ninefold.com.au">Ninefold</a> (Lunch)</li>
<li><a href="http://freetronics.com">Freetronics</a> (Prizes and giveaways).</li>
</ul>


<p><img class="right" height="200" src="http://photos4.meetupstatic.com/photos/event/1/b/b/4/global_71287092.jpeg" />Half of the space will be set aside for short presentations as usual and the other half will be show-and-tell. We have a number of TechSpace projects and technology that we can show people, but feel free to bring along any other appropriate things to show off. Some projects we have are:</p>

<ul>
<li>3D Printers. Reprap (our printer is now working pretty well) and the new Printrbot. We might also even have the Ultimaker here.</li>
<li>Various Arduino electronics projects. Door openers, DMD displays, RFID.</li>
<li>Raspberry PI - the $25 PC. We have a couple of these - one will be a setup as Media centre the other a general purpose PC</li>
<li>One Laptop Per Child - I might do a demo of how to do basic repairs or just have a general mess around with them</li>
<li>Lego Mindstorms. We have a Rubik&#8217;s cube solver and ball sorter that the kids built a few weeks ago at our workshop. Feel free to play&#8230; probably won&#8217;t have space to build anything on the day though.</li>
</ul>


<p>Everyone welcome, whatever your skill level. Please try and present something if you can&#8230;. your talk can be anything from a 1 minute lightning talk up to a 20 minute presentation. If you don&#8217;t want to talk, then please be an active participant by asking questions or just help us out with the logistics on the day. This is a grassroots, participant-led event and not your traditional conference.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Happy Geek Pride Day!]]></title>
    <link href="http://dalts.net/blog/2012/05/25/happy-geek-pride-day/"/>
    <updated>2012-05-25T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2012/05/25/happy-geek-pride-day</id>
    <content type="html"><![CDATA[<p>Happy Geek Pride Day everyone! Today is a perfect day to:</p>
<ol><li>Tell people all about Gold Coast Tech Space&#8230;. spread the word, point them at <a href="http://gctechspace.org/" target="_blank">http://gctechspace.org</a> or better still get them to join our meetup group <a href="http://meetup.com/gctechspace" target="_blank">http://meetup.com/gctechspace</a></li>
<li>Join Gold Coast TechSpace - all the info you need is at <a href="http://gctechspace.org/membership/" target="_blank">http://gctechspace.org/membership/</a> - membership is just $40/month or $20/month for Students/Concessions</li>
<li>Support our crowdsourced shelving project at <a href="http://ipledg.com/projects/gc-techspace-storage1/347" target="_blank">http://ipledg.com/projects/gc-techspace-storage1/347</a>, we are now half way through our funding application and every little bit helps. Shelving is going to make a big difference to our space as we gain more and more equipment and have more projects on the go.</li>
</ol>
<p>Other updates from me - We are now sistered with <a href="http://xinchejian.com/">Xinchejian</a> hackerspace in Shanghai. We will be shortly starting some interesting projects here on the Gold Coast that they are currently working on over there, the first will probably be the swarm robots project. Join the <a href="http://meetup.com/gctechspace">gctechspace meetup group</a> if you want to be part of this!</p>
<p>Lots more to tell you about but don&#8217;t want to overload this post, so please consider doing any of the steps above (preferably all of them!).</p>
<p>To find out more about Geek Pride day have a look at <a href="https://en.wikipedia.org/wiki/Geek_Pride_Day" target="_blank">https://en.wikipedia.org/wiki/Geek_Pride_Day</a> - being on the 25th has nothing to do with my birthday - it was the day that the first Star War film &#8220;A new Hope&#8221; was released in 1977 which makes it 35 years old! Today is also Towel Day for all the Douglas Adams/HHGTG fans out there <a href="http://en.wikipedia.org/wiki/Towel_Day" target="_blank">http://en.wikipedia.org/wiki/Towel_Day</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Podcasting at Conferences]]></title>
    <link href="http://dalts.net/blog/2012/01/11/podcasting-at-conferences/"/>
    <updated>2012-01-11T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2012/01/11/podcasting-at-conferences</id>
    <content type="html"><![CDATA[<p>For podcast hosts out there that attend conferences, especially those that only do Face-to-Face interviews like us, I&#8217;d so recommend making the most of these moments.</p>&#13;
<p>You get to speak to people you wouldn&#8217;t normally come in contact with, plus you get to ride on the coat-tails of the buzz that the conference creates. </p>&#13;
<p>Craig and I have experienced this recently attending <a href="http://osdc.com.au">Open Source Developers Conference</a> and <a href="yowaustralia.com.au">YOW</a>, recording for our podcast <a href="codingbynumbers.com">Coding By Numbers</a>. We recorded 3 at OSDC and 2 at YOW, and so far they are own highest downloaded episodes. </p>&#13;
<p>The 3 from OSDC are:</p>&#13;
<ul><li><a href="http://www.codingbynumbers.com/2011/12/coding-by-numbers-episode-31-perl.html" target="_blank">http://www.codingbynumbers.com/2011/12/coding-by-numbers-episode-31-perl.html</a></li>&#13;
<li><a href="http://www.codingbynumbers.com/2011/12/coding-by-numbers-episode-32-open.html" target="_blank">http://www.codingbynumbers.com/2011/12/coding-by-numbers-episode-32-open.html</a></li>&#13;
<li><a href="http://www.codingbynumbers.com/2011/12/coding-by-numbers-episode-33-michael.html" target="_blank">http://www.codingbynumbers.com/2011/12/coding-by-numbers-episode-33-michael.html</a></li>&#13;
</ul><p>Just a few tips from me:</p>&#13;
<ol><li>Get the organiser&#8217;s permission. You probably don&#8217;t need it, but it&#8217;s always polite to do so. It also helps with number 2</li>&#13;
<li>Ask the organisers if there is a quiet room you can use, they usually have a breakout rooms or unused conference rooms that you can loan for an hour</li>&#13;
<li>Make contact with your interviewees early in the conference and try and do the interview <em>after</em> their talk so they are in that euphoric post talk mood!</li>&#13;
<li>Make sure your interviewees understand when the podcast will go out and what the licence on it is. Also tell them if you are going to edit or not (we don&#8217;t)</li>&#13;
<li>Most importantly - use social media and buzz to your advantage. If people are raving about a particular speaker that you are going to interview (in our case this was Mike Lee at Yow) then make sure people know about it and give them the link. When you finally post the show, make sure you use the conference hashtag and follow up with the people that you originally talked about. They will be your evangelists.</li>&#13;
</ol>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[gr8confau call for presentations now open]]></title>
    <link href="http://dalts.net/blog/2011/09/02/gr8confau-call-for-presentations-now-open/"/>
    <updated>2011-09-02T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/09/02/gr8confau-call-for-presentations-now-open</id>
    <content type="html"><![CDATA[<p><img height="48" width="48" align="right" src="https://si3.twimg.com/profile_images/1222444969/logo_dark_100_reasonably_small.png" /><img height="48" width="48" src="http://a0.twimg.com/profile_images/766560733/gr8conf-icon_normal.png" align="right" />We are pleased to announce that the CFP for <a href="http://www.gr8conf.org/">gr8confau</a> is now open. Gr8 Conference Australia will be held on 15th November 2011 at ANU (Australian National University), Canberra</p>&#13;
<p>As this is our first time running the conference in Australia, it will be run as a mini-conf of <a href="http://osdc.com.au">Open Source Developers Conference</a> (OSDC) 2011 which runs for the entire week from 14th -18th November. To attend the <a href="http://www.gr8conf.org/">gr8 conference</a> you will need to have a ticket for OSDC (which is very reasonably priced) or pay a small fee (expected to be around $50) for a miniconf ticket. We&#8217;d strongly encourage you to buy a full ticket for OSDC though - it&#8217;s a great conference and very good value.</p>&#13;
<p>We&#8217;ll have a proper landing page on the <a href="gr8conf.org">gr8conf</a> website soon, but for the moment this blog post should suffice to get things rolling.</p>&#13;
<p>So, if you have a presentation you would like to make on <a href="http://groovy.codehaus.org/">Groovy</a>, <a href="grails.org">Grails</a>, <a href="http://griffon.codehaus.org/">Griffon</a>, <a href="http://gradle.org/">Gradle</a>, <a href="gaelyk.appspot.com">Gaelyk</a>, <a href="http://gpars.codehaus.org/">Gpars</a> or any other technology based on Groovy - please forward your submission to:</p>&#13;
<p><a href="mailto:australia@gr8conf.org">australia@gr8conf.org</a></p>&#13;
<p>This part is <strong>very important</strong>, please include in your email:</p>&#13;
<ul><li>Your Name</li>&#13;
<li>Bio (a bit about yourself)</li>&#13;
<li>Twitter name (if you have one)</li>&#13;
<li>Title of Talk</li>&#13;
<li>Talk Abstract</li>&#13;
<li>Length of talk: 20min + 5 min Q&amp;A, 45min + 10min Q&amp;A or feel free to suggest another format (eg. longer tutorial)</li>&#13;
</ul><p>Look forward to hearing from you. </p>&#13;
<p>Your gr8confau organisers,</p>&#13;
<ul><li>Craig Aspinall</li>&#13;
<li>Glen Smith</li>&#13;
<li>Paul King</li>&#13;
<li>Steve Dalton</li>&#13;
</ul>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[The Lean Lego Game at Exite]]></title>
    <link href="http://dalts.net/blog/2011/07/21/the-lean-lego-game-at-exite/"/>
    <updated>2011-07-21T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/07/21/the-lean-lego-game-at-exite</id>
    <content type="html"><![CDATA[<p><br /><img height="180" width="240" src="http://farm3.static.flickr.com/2069/2432400623_9081e8433d_m.jpg" align="right" />Yesterday I had the pleasure of speaking at the E.X.I.T.E camp for girls at <a href="http://bond.edu.au">Bond University</a>. Exite is a programme organised by IBM and has the aim of encouraging girls to pursue careers in engineering and technology. Our local event is organised by Carol Woodhouse at the Gold Coast <a href="http://ibm.com">IBM</a> Lab.</p>
<p>I was going to do a programming exercise, but in the end I chose something more hands on a did &#8221;<a href="http://www.dtsato.com/blog/work/lean-lego-game/">The Lean Lego Game</a>&#8221; which is a practical game for learning about Agile/Lean developed by <a href="http://www.dtsato.com/blog/about/">Danilo Sato</a> &amp; <a href="http://blog.franktrindade.com/">Francisco Trindade</a> at <a href="http://thoughtworks.com">Thoughtworks</a>.</p>
<p>I was a little apprehensive about running for the game for an audience so junior with no Agile experience - but the activity brought many surprises for me.</p>
<p>After a short intro where I explained a bit about Agile and how it helps us to deliver software (whilst also having a lot of fun), the girls got straight into the first &#8220;push&#8221; exercise. Very quickly all the usual things happened ie, panic, inventory build up, over production. The line kept producing red houses and I refused to buy them as I said it was an angry colour and very out of fashion in the lego house market!</p>
<p>I was fairly hands-off when asked questions - referring them to the written process, this allowed me to demonstrate some key points about the production line during the retrospective (ie. the need for process, orchestration, managers, timekeepers etc in the traditional production line). </p>
<p>On the first retrospective I half expected stunned silence but the feedback from the girls was excellent and they picked up pretty much all the points I had expected them to.</p>
<p>The 2nd exercise &#8220;Pull&#8221; was very interesting. As expected there was a lot less chaos, particularly in the later teams, but team 1 completely lost the point about slack and sorted all the lego pieces into 4 big piles (they were getting good at it by now). This then started to ripple through to team 2 so half way through I reminded them about inventory and that maybe slack was ok, so they eased off and I think a few of them even went outside and mucked about for a while. The group size was quite large (6 or 7 in each team - too big probably) so this probably had something to do with this tendency.</p>
<p>Team 4 showed some interesting behavior, for similar reasons to above some of them were slack one of the team members started making a white house &#8220;on the side&#8221; as this was the colour I had asked for and she was hedging her bets. It was almost finished when she saw that I had seen it and hid it under her jumper. I didn&#8217;t say anything - just cruelly never called white again! That led to a discussion point about kanban and how to utilize slack in the retrospective. At the end of the exercise the Pull system produced 1 more house that Push with a lot less effort and panic so the point was demonstrated.</p>
<p>Again in the retro all the main points about the exercise were picked up by the girls, we talked about unevenness and slack and I suggested some ways that a real team might utilize their slack time or ways to level the system.</p>
<p>The third &#8220;work cell&#8221; exercise was a little different and I was quite nervous about how it would go. As it was just before lunch, I didn&#8217;t give them a lot of instructions - I just told them to go for it and build some houses - any colour they liked.</p>
<p>I didn&#8217;t mix the teams so as expected team 4 did very well - they started off individually, but eventually formed their own little self organised mini-line within their team. In one iteration they produced 11 house - more than the whole room produced in any of the previous exercises.</p>
<p>Team 3 complained a bit about the instructions and didn&#8217;t know how to build the house, but eventually they got into it and ramped up quickly to be reasonably productive. I think the fact they had seen &#8220;the set&#8221; did help a bit.</p>
<p>Team 1 messed about a fair bit, but did produce some houses in the end - I think they were pretty bored by the previous exercises so were ready for lunch. They also did a bit of what team 2 did.</p>
<p>Team 2 got straight into things - but decided they weren&#8217;t going to build houses. They seemed to love the Lego (I noticed a couple of people in their group continued to build stuff right through the retros) and built all sorts of things, including stairs, towers, puppies! and one of them spelt out her name in Lego<br />.</p>
<p>I didn&#8217;t think there would be much new in this retro, but again it was an interesting one. We talked about team 4&#8217;s stellar job and their experience paid off - they also managed to do Kaisan without me really telling them about it - a good self organising team emerged. We discussed how team 3 quickly ramped up once they got over the initial hump, the members of team 1 that built houses also experienced this. Team 2 led us to talk about creativity, fun, 20% time and I used the examples of Google and 3M here.</p>
<p>My conclusion was a little weak I tried to bring it back to software and wrap up but unfortuately it was lunch time and the experience of the work cell exercise had got them all into lego in a big way and they just wanted to build and not listen. I think if it wasn&#8217;t for the organisers dragging them away they would have been quite happy to stay there all day and play Lego!</p>
<p>I like the Lego game a lot and hope to do it a bit more with different types of people. It will be interesting to see how people with more industry experience go with it - maybe this will help, or maybe will even be a hinderence. From my experience at Exite - the girls seemed to easily grasp the core concepts of Agile and Lean and this encourages me to think that &#8220;different&#8221; does not equate to &#8220;difficult&#8221; it&#8217;s just a bit of a paradigm shift for some that have been doing things the other way for too long.</p>


<p>Thanks to Danilo and Francisco for the game - great job, and well done to IBM and Bond University for a very well run event.</p> 
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Single parenting - it ain't easy!]]></title>
    <link href="http://dalts.net/blog/2011/04/29/single-parenting-it-ain-t-easy/"/>
    <updated>2011-04-29T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/04/29/single-parenting-it-ain-t-easy</id>
    <content type="html"><![CDATA[<p>This week I completely take my hat off to single parents, especially those with more than one kid. It certainly isn&#8217;t easy juggling parenting, work and general day to day stuff when there is only one of you.</p>&#13;
<p>My wife&#8217;s been away for the last 3 days and I&#8217;ve discovered this first hand - it&#8217;s certainly doable, but you end up with no&#8230;zero&#8230;.zilch time to yourself and this can&#8217;t be good for your state of mind. I only have to sustain it for 3 days, I would certainly go mad doing it all the time.</p>&#13;
<p>So, to single parents that manage to do this all the time&#8230;. you rock!</p> 
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[First CodingByNumbers meetup on golang]]></title>
    <link href="http://dalts.net/blog/2011/02/21/first-codingbynumbers-meetup-on-golang/"/>
    <updated>2011-02-21T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/02/21/first-codingbynumbers-meetup-on-golang</id>
    <content type="html"><![CDATA[<p><a href="http://twitter.com/aspinall">@aspinall</a> and I have finally got around to arranging our own meetup. It&#8217;s based around a lot of the things we talk about on the podcast, but we are trying to focus on all the topics that none of the other meetups cover (we&#8217;ll leave the Java stuff to <a href="http://www.meetup.com/qldjvm">QLDJVM</a>).</p>

<p>We are holding the meetings at Brisbane Square (Suncorp, L28) on the 2nd Monday of each month and the first meetup (March 14th) is on <a href="http://golang.org">#golang</a>. Please come along and join us, hopefully we will expand your horizons a little. The first meetup is <a href="http://www.meetup.com/CodingByNumbers/events/16425898">here</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Coding By Numbers PHP Interview from lca2011]]></title>
    <link href="http://dalts.net/blog/2011/02/15/coding-by-numbers-php-interview-from-lca2011/"/>
    <updated>2011-02-15T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/02/15/coding-by-numbers-php-interview-from-lca2011</id>
    <content type="html"><![CDATA[<p>As promised <a href="http://www.codingbynumbers.com/2011/02/coding-by-numbers-episode-23-interview.html">here</a> is the PHP interview that I did with Adam and Jethro at #lca2011. Hope you enjoy it and can keep up with with us!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Coding By Numbers lca.conf.au wrap-up episode]]></title>
    <link href="http://dalts.net/blog/2011/02/08/coding-by-numbers-lca-conf-au-wrap-up-episode/"/>
    <updated>2011-02-08T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/02/08/coding-by-numbers-lca-conf-au-wrap-up-episode</id>
    <content type="html"><![CDATA[<p>I didn&#8217;t get a chance to do any blogging at linux.conf.au this year - not even a wrap-up, but perhaps this is better. We did a codingbynumbers <a href="http://www.codingbynumbers.com/2011/02/coding-by-numbers-episode-22.html">wrap-up episode</a> where we summarized our time at the conf.</p>

<p>In case you were wondering where the PHP episode is that I recorded at LCA - that&#8217;s the next episode, thought we&#8217;d get this one out quickly first.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Got Root? Rooting your Nexus One.]]></title>
    <link href="http://dalts.net/blog/2011/02/07/got-root-rooting-your-nexus-one/"/>
    <updated>2011-02-07T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/02/07/got-root-rooting-your-nexus-one</id>
    <content type="html"><![CDATA[<p>During linux.conf.au I tried to do a talk involving an Android phone and a live demo onto a projector. I didn&#8217;t have time to root the phone again to install vncserver - so I took the simple option and installed <a href="http://code.google.com/p/androidscreencast/">http://code.google.com/p/androidscreencast</a>. It worked when I first tried it but then failed miserably during the talk.</p>&#13;
<p>Anyway - I decided to root my phone again so that I could use a proper vncserver - but the internet is really not very helpful when it comes to rooting Android phone. There are so many articles - many not current any more and lots of conflicting information. </p>&#13;
<p>So - here is what I did to do a simple root on my Nexus one running Android 2.2.2.</p>&#13;
<ul><li>Unlock your bootloader (I&#8217;d already done this a long time back - loads of good instructions on this).</li>&#13;
<li>Download fastboot - if you are using Ubuntu 10.10 like me - use these instructions <a href="http://forum.xda-developers.com/showthread.php?t=911545">http://forum.xda-developers.com/showthread.php?t=911545</a> - the udev stuff is important</li>&#13;
<li>Download Android 2.2.2 root image. I used the stock image from <a href="http://forum.xda-developers.com/showthread.php?t=927935">http://forum.xda-developers.com/showthread.php?t=927935</a></li>&#13;
<li>Put the zip file of the image in the root of your SD card on your phone.</li>&#13;
<li>One thing that slipped me up was that I didn&#8217;t have the right recovery image. The RA passion image from here <a href="http://forum.xda-developers.com/showthread.php?t=611829">http://forum.xda-developers.com/showthread.php?t=611829</a> worked well for me.</li>&#13;
<li>Now, put your phone into bootloader mode (hold down trackball while powering on).</li>&#13;
<li>Open directory where you extracted fastboot and your roms and type: fastboot boot <em>./fastboot boot recovery-RA-passion-v2.2.1.img</em></li>&#13;
<li>In the bootloader menu of your phone select fastboot</li>&#13;
<li>The recovery image should load and your phone reboot into recovery mode</li>&#13;
<li>Select install zip from flash and select your zip you copied to sdcard.</li>&#13;
<li>Let it install - then select <em>reboot</em></li>&#13;
<li>Your done! </li>&#13;
</ul><p>Hope this is helpful - feel free to msg me at <a href="http://twitter.com/spidie">@spidie</a> if you have trouble.</p>&#13;
<p>Now I have root - I can install busybox for shell commands and most importantly <a href="http://www.appbrain.com/app/droid-vnc-server/org.onaips.vnc">Droid VNC Server</a> - which is just awesome.</p>&#13;
 
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Google Go Interview with Andrew Gerrand]]></title>
    <link href="http://dalts.net/blog/2011/02/04/google-go-interview-with-andrew-gerrand/"/>
    <updated>2011-02-04T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/02/04/google-go-interview-with-andrew-gerrand</id>
    <content type="html"><![CDATA[<p>For those that attended the Google Go Tutorial at linux.conf.au here is the link to the podcast interview that I did the week before the conference. Hope you find it useful. For those interest in Go that live in Brisbane we are hoping to do a session on GO very soon - watch this space.</p> 

http://www.codingbynumbers.com/2011/01/coding-by-numbers-episode-20-interview.html
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Fossil]]></title>
    <link href="http://dalts.net/blog/2011/02/04/fossil/"/>
    <updated>2011-02-04T00:00:00+10:00</updated>
    <id>http://dalts.net/blog/2011/02/04/fossil</id>
    <content type="html"><![CDATA[<p>I&#8217;m playing around with a new DVCS (Distributed Version Control System) called &#8221;<a href="http://www.fossil-scm.org">Fossil</a>&#8221; at the moment. So far I really like it.</p>&#13;
<p>If you are familiar with git and mercurial then you&#8217;ll find the source control part pretty similar to what you are used to. What makes fossil rather special is that it is also a bug tracker and wiki too, and these are <em>also </em>distributed. Clever eh!</p>&#13;
<p>Once you have a repo setup you can also just type <em>fossil ui </em>and you get a very nice (simple but very functional) web interface for your repo. If you want to run it as a fully blown server just type <em>fossil server</em> and you have a server running on 8080 - you can then easily put this up on your own server either standalone or CGI.</p>&#13;
<p>My next task is to see if I can easily adapt it to suit Agile projects better - ie. different issue types and switch severities for <a href="http://en.wikipedia.org/wiki/MoSCoW_Method">MOSCOW</a> severities. As a little side project I am also looking to see if I can adapt it to use as a little <a href="http://en.wikipedia.org/wiki/Getting_Things_Done">GTD</a> tool but that might be pushing it a little. An tips much appreciated.</p> 
]]></content>
  </entry>
  
</feed>
