<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7975332940169987323</id><updated>2011-11-29T21:20:06.877-08:00</updated><category term='Interactive'/><category term='Games'/><category term='TDD'/><category term='Movember'/><category term='Gridlock'/><category term='Test Driven Development'/><category term='Agile'/><category term='2D'/><category term='Snow'/><category term='Play'/><category term='Scrum'/><title type='text'>Life, the Universe and Software Development</title><subtitle type='html'>My thoughts, opinions and ideas mainly about software development, C#, .NET, Agile and Neural Networks.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7975332940169987323.post-2438279697043671936</id><published>2011-06-18T04:32:00.000-07:00</published><updated>2011-06-18T06:01:40.699-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Play'/><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><category scheme='http://www.blogger.com/atom/ns#' term='Interactive'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='2D'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>Interactive Plays - a 2D game engine</title><content type='html'>Back in September 2010, I spoke about some of the projects I was working on and mentioned a 2D game engine.  This year I decided to focus on this project as my main project for the year.  Here is a brief description of my plan and how I'm getting on with it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;System Metaphor - Interactive Play&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I started by thinking about a metaphor to describe what it was I was trying to create.  When I thought about 2D point-click style games (especially Role-Playing Games) I realised that they were all telling a story of some kind so I started thinking about other ways in which people tell stories.  Eventually I settled on Plays.  I then started mapping some of the terminology of a play with the terminology of a game e.g.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Theatre = Computer&lt;/div&gt;&lt;div&gt;Stage = Screen&lt;/div&gt;&lt;div&gt;Prop = Interactive Sprite&lt;/div&gt;&lt;div&gt;Stage Directions = Events and Actions&lt;/div&gt;&lt;div&gt;etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used a mind map tool to visualise my ideas around the metaphor and to help lead into a high level design.  The mind map tool I used was freemind - &lt;a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page"&gt;http://freemind.sourceforge.net/wiki/index.php/Main_Page&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Three-year Plan&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Before jumping into the design I tried to roughly plan out my strategy for the next three years of the project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Year 1 - Build interactive play engine&lt;/div&gt;&lt;div&gt;Year 2 - Build first game using engine&lt;/div&gt;&lt;div&gt;Year 3 - Build follow up game and distribute first game&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also looked at the amount of spare time I would allocate to working on the project, how long each sprint was going to be and what my ideal timebox for the first year would be.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Again I used the mind mapping tool to visual my ideas around this plan.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Sprint 0 - High level design&lt;br /&gt;&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using the mapping of terminology I produced whilst drawing up the system metaphor I put together a rough collection of classes in a UML class diagram.  I then took each in turn and tried to think of roughly what responsibilities and interactions they would have.  As this was sprint 0 I did not want to go into too much detail on the design.  I decided that I would build an XML based language that would describe the interactive plays to the game engine with a future project being an editor that would allow visual production of the XML file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I used a freeware UML tool called Violet to produce the high level design diagrams - &lt;a href="http://alexdp.free.fr/violetumleditor/page.php?id=en:home"&gt;http://alexdp.free.fr/violetumleditor/page.php?id=en:home&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;During the sprint 0 I put together the user stories that I wanted to tackle first and epic user stories for the rest.  I detailed user stories that I felt would cover about 2-3 sprints and kept the rest vague.  I planned out the release roughly by placing the user stories and epics into sprints as rough place holders (to be detailed more accurately during the sprint planning for each sprint).  I set my initial sprint capacity to the number of days I would be working on the project per sprint and estimated the user stories and epics in number of days to begin with.  I used the community edition of Rally to manage my user stories and epics - &lt;a href="http://www.rallydev.com/index.php"&gt;http://www.rallydev.com/index.php&lt;/a&gt; (the main reason for this is that I am familiar with Rally from using the commercial version at work).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also looked at all of the tools I would need and invested some time working out how to piece them together.  Here are a few examples:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Visual Studio 2010 Express Edition&lt;/div&gt;&lt;div&gt;* Rally Community Edition&lt;/div&gt;&lt;div&gt;* Gendarme and Stylecop for static code analysis (Had to figure out integration with Visual Studio so that they were run on every build)&lt;/div&gt;&lt;div&gt;* NUnit for Test Driven Development and Automated Acceptance Tests&lt;/div&gt;&lt;div&gt;* MoMA for portability checking (Mono compatible)&lt;/div&gt;&lt;div&gt;* InkScape for building Artwork &lt;/div&gt;&lt;div&gt;* Krystal recording studio for music and sound effects&lt;/div&gt;&lt;div&gt;etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also figured out a backup strategy so I wouldn't lose anything.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Sprint Planning&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Initially I started by estimating in days (or more to the point evenings) but after a few sprints I started to have a good indication of my velocity which allowed me to see clearly how much capacity I have to fit user stories into.  My estimates then became story points using typical small, medium and large user stories to compare a new user story to when estimating.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; I continue to monitor my velocity using Rally's velocity chart and work out my next sprint capacity based on the worst 3 sprints.  At the moment my velocity and capacity has dropped considerably due to having less time to work on the project through the week.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I approach an epic that I have not broken into smaller user stories I try to break it down as much as possible and estimate each user story.  I then attempt to release plan the user stories by putting them into future sprints as place holders for where I would like to start tackling them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;During this process I am able to see how good/bad my progress is on the overall release and can start thinking about how to adjust the release to meet my goals.  In my case I can only extend the timebox because I don't have any more people who can work on it and the scope is reasonably fixed as there are a lot of mandatory user stories to provide a viable release.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;b&gt;Sprint Implementation - TDD and Acceptance Testing&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;During implementation of the user stories I take a Test Driven Development approach:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Write a failing test&lt;/div&gt;&lt;div&gt;* Implement only what is needed to make the test pass&lt;/div&gt;&lt;div&gt;* Refactor&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;During the refactoring step I make heavy use of the static code analysis tools as well as looking for opportunities to make use of design patterns.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I'm happy that I have created tests that cover everything for that user story I generate an acceptance test for the user story and ensure that it passes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will also take a look at the code coverage of the tests to ensure I have a high coverage (I currently have a test coverage of 91%).  Whilst this test coverage shows me the amount of code I am running during the test it does not mean I am fully testing the code being run therefore I only use it as an indicator of potential problems.  I make use of a tool called partcover to get this information - &lt;a href="http://partcover.blogspot.com/"&gt;http://partcover.blogspot.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Sprint Review&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;At the end of each sprint I look over what I have achieved and what I have missed.  I will update the backlog of user stories and may even revise some estimates.  I also spend some time doing some manual testing to make sure I am definitely happy with accepting the user story.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Current Progress&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I am just about to finish sprint 7 and have another 8 sprints to go before the end of the timebox as it currently stands.  My velocity has dropped considerably over the past couple of sprints and I'm currently averaging at 2.5 points.  At this velocity I will not complete the mandatory user stories in the current timebox so I will need to revise my overall plan and decide how to improve my current progress.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0w-_W6XqVHE/TfyhFuhg-II/AAAAAAAAAPI/WcLAVxuUY3o/s1600/VelocityChart.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-0w-_W6XqVHE/TfyhFuhg-II/AAAAAAAAAPI/WcLAVxuUY3o/s400/VelocityChart.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5619543554811558018" style="cursor: pointer; width: 400px; height: 276px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CKbc3d9w7mw/TfyhYcNDgXI/AAAAAAAAAPQ/Aw3W8gixS2A/s1600/ReleaseBurnup.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://3.bp.blogspot.com/-CKbc3d9w7mw/TfyhYcNDgXI/AAAAAAAAAPQ/Aw3W8gixS2A/s400/ReleaseBurnup.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5619543876311417202" style="cursor: pointer; width: 400px; height: 222px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I currently have 108 unit and acceptance tests all passing and 91% code coverage from my tests.  I'm working on Animated Scenery at the moment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My sprints cover 3 weeks but I only have 9 hours per week to spend on the project so essentially my one sprint is only 3 days worth of capacity so I only have two options to improve my current progress - Increase the amount of time I spend on the project each week or extend the timebox.  Currently I'm leaning towards extending the timebox.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7975332940169987323-2438279697043671936?l=ajs-software.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/2438279697043671936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7975332940169987323&amp;postID=2438279697043671936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/2438279697043671936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/2438279697043671936'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/2011/06/interactive-plays-2d-game-engine.html' title='Interactive Plays - a 2D game engine'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-0w-_W6XqVHE/TfyhFuhg-II/AAAAAAAAAPI/WcLAVxuUY3o/s72-c/VelocityChart.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7975332940169987323.post-379434397819533540</id><published>2010-12-23T09:49:00.000-08:00</published><updated>2010-12-23T10:21:26.026-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snow'/><category scheme='http://www.blogger.com/atom/ns#' term='Gridlock'/><title type='text'>Snowpocalypse 2010</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Some images of the snow and the gridlock it created this year.  &lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROSqC-j2cI/AAAAAAAAAOk/zJB499iaK7k/s1600/IMG_0261.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROSqC-j2cI/AAAAAAAAAOk/zJB499iaK7k/s400/IMG_0261.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553944016529381826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQ9uj_cWI/AAAAAAAAAOc/8BZLZsucscw/s1600/IMG_0257.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQ9uj_cWI/AAAAAAAAAOc/8BZLZsucscw/s400/IMG_0257.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553942155623362914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQ9YlicDI/AAAAAAAAAOU/5IcBsGmdBeE/s1600/IMG_0262.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQ9YlicDI/AAAAAAAAAOU/5IcBsGmdBeE/s400/IMG_0262.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553942149724270642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQ9JwzHDI/AAAAAAAAAOM/fL_KNZK9IqA/s1600/IMG_0254.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQ9JwzHDI/AAAAAAAAAOM/fL_KNZK9IqA/s400/IMG_0254.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553942145744968754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROQ88fFhsI/AAAAAAAAAOE/bV-xUDB3jtY/s1600/IMG_0251.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROQ88fFhsI/AAAAAAAAAOE/bV-xUDB3jtY/s400/IMG_0251.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553942142181017282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQ8n1XajI/AAAAAAAAAN8/PcZWT6d2sgE/s1600/IMG_0249.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQ8n1XajI/AAAAAAAAAN8/PcZWT6d2sgE/s400/IMG_0249.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553942136637319730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROQCPXkaJI/AAAAAAAAAN0/2CdPwV4DbTs/s1600/IMG_0245.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROQCPXkaJI/AAAAAAAAAN0/2CdPwV4DbTs/s400/IMG_0245.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553941133637478546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQB4j-KGI/AAAAAAAAANs/Ek9DLFjAU5s/s1600/IMG_0244.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQB4j-KGI/AAAAAAAAANs/Ek9DLFjAU5s/s400/IMG_0244.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553941127515482210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQBZJMj7I/AAAAAAAAANk/_cze4JEkecs/s1600/IMG_0240.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROQBZJMj7I/AAAAAAAAANk/_cze4JEkecs/s400/IMG_0240.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553941119081680818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQBBMXgXI/AAAAAAAAANc/IvrNEO5ub_g/s1600/IMG_0238.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQBBMXgXI/AAAAAAAAANc/IvrNEO5ub_g/s400/IMG_0238.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553941112652530034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQBGEz57I/AAAAAAAAANU/lUi6b_ujNIo/s1600/IMG_0234.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROQBGEz57I/AAAAAAAAANU/lUi6b_ujNIo/s400/IMG_0234.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553941113963014066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4S1gPzG_dNk/TROOn7qDkCI/AAAAAAAAANM/xmlPcqycCQ8/s1600/IMG_0230.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TROOn7qDkCI/AAAAAAAAANM/xmlPcqycCQ8/s400/IMG_0230.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553939582158082082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4S1gPzG_dNk/TROOnc85brI/AAAAAAAAANE/loZkCVoxVvU/s1600/IMG_0229.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TROOnc85brI/AAAAAAAAANE/loZkCVoxVvU/s400/IMG_0229.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553939573915610802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROOnEdYSjI/AAAAAAAAAM8/cdyHjgd1d0M/s1600/IMG_0228.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROOnEdYSjI/AAAAAAAAAM8/cdyHjgd1d0M/s400/IMG_0228.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553939567340964402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROOmuS6qVI/AAAAAAAAAM0/9BT2fzmHexs/s1600/IMG_0227.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROOmuS6qVI/AAAAAAAAAM0/9BT2fzmHexs/s400/IMG_0227.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553939561391499602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROOmCWsEbI/AAAAAAAAAMs/dqOzlvjVpd4/s1600/IMG_0224.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROOmCWsEbI/AAAAAAAAAMs/dqOzlvjVpd4/s400/IMG_0224.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5553939549596160434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7975332940169987323-379434397819533540?l=ajs-software.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/379434397819533540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7975332940169987323&amp;postID=379434397819533540' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/379434397819533540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/379434397819533540'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/2010/12/snowpocalypse-2010.html' title='Snowpocalypse 2010'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4S1gPzG_dNk/TROSqC-j2cI/AAAAAAAAAOk/zJB499iaK7k/s72-c/IMG_0261.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7975332940169987323.post-7402302090094171494</id><published>2010-12-23T09:21:00.000-08:00</published><updated>2010-12-23T09:44:10.386-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Movember'/><title type='text'>Movember 2010</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" &gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_4S1gPzG_dNk/TROJepREvTI/AAAAAAAAAMM/ZpoS-7GIOS8/s1600/Mo-gressDay1.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TROJepREvTI/AAAAAAAAAMM/ZpoS-7GIOS8/s320/Mo-gressDay1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553933925044501810" style="float: left; margin-top: 0px; margin-right: 10px; margin-bottom: 10px; margin-left: 0px; cursor: pointer; width: 307px; height: 320px; " /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROJjZqYuUI/AAAAAAAAAMU/jkT-oSNKs6E/s1600/Mo-gressDay30.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 307px; height: 320px;" src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TROJjZqYuUI/AAAAAAAAAMU/jkT-oSNKs6E/s320/Mo-gressDay30.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553934006755047746" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4S1gPzG_dNk/TROJepREvTI/AAAAAAAAAMM/ZpoS-7GIOS8/s1600/Mo-gressDay1.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4S1gPzG_dNk/TROJWKIoISI/AAAAAAAAAME/s7eZPZpFGO4/s1600/Mo-gressDay1.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROJ2KDXHUI/AAAAAAAAAMc/UjwR5_Tfsyw/s1600/TeamPic.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TROJ2KDXHUI/AAAAAAAAAMc/UjwR5_Tfsyw/s400/TeamPic.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5553934328982347074" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 128px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My friends on facebook and colleagues at work will be well aware that I joined a Movember team this year and grew a moustache to raise awareness and money for prostate cancer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The team managed to collect £627 which will support the &lt;a href="http://www.prostate-cancer.org.uk/"&gt;prostate cancer charity&lt;/a&gt; and the &lt;a href="http://everyman-campaign.org/"&gt;Everyman campaign&lt;/a&gt;.  This year Movember raised almost 9 million pound in the uk alone with almost 112,000 people getting involved.  For details, pictures and videos please take a look at my &lt;a href="http://uk.movember.com/mospace/870698/"&gt;mospace&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'd like to thank everyone involved and all those who donated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7975332940169987323-7402302090094171494?l=ajs-software.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/7402302090094171494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7975332940169987323&amp;postID=7402302090094171494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/7402302090094171494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/7402302090094171494'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/2010/12/movember-2010.html' title='Movember 2010'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_4S1gPzG_dNk/TROJepREvTI/AAAAAAAAAMM/ZpoS-7GIOS8/s72-c/Mo-gressDay1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7975332940169987323.post-6178517709410158863</id><published>2010-11-21T04:12:00.000-08:00</published><updated>2010-11-21T04:38:24.208-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Driven Development'/><title type='text'>My thoughts on Test Driven Development</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A few years back my work decided to roll out the use of Scrum to manage the teams of developers.  This has worked well for the most part but we have so far not taken on any of the XP techniques that most Agile Scrum teams are using.  This will soon change as a continuous integration system is being built and Test Driven Development (TDD) is beginning to be rolled out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the start of the TDD roll out, &lt;a href="http://www.clarkeching.com/"&gt;Clarke Ching&lt;/a&gt; (our Agile Expert and Consultant) has pointed us in the direction of his &lt;a href="http://www.tddtestdrive.com/"&gt;TDD Test Drive&lt;/a&gt; which uses a simple example with Excel and VB to introduce the principals of TDD.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My basic understanding of TDD is that the development process changes to:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Write an automated test that fails&lt;/div&gt;&lt;div&gt;2. Write just enough code to make it pass&lt;/div&gt;&lt;div&gt;3. Look for opportunities to re-factor the code&lt;/div&gt;&lt;div&gt;4. Make sure all the tests still pass&lt;/div&gt;&lt;div&gt;5. Repeat steps 1-4 until all tests are written and pass.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My initial thoughts on TDD are that whilst bringing huge benefits over traditional manual unit testing (especially where we have a large number of versions of the software being maintained using branches and roll ups), I am worried about missing important tests that will drive the software in the wrong direction.  I am also worried about how to apply it to legacy code - There could be a large amount of re-factoring required which will impact our delivery time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I mean by missing important tests is that the tests are often based on the requirements or description of a bug that has been found in the software.  Most of the time requirements and bug descriptions are vague or do not tell the whole story - if these are the sole drivers of the tests and the code is only written to make these tests pass it could be easy to miss something important.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'd love to hear from other software developers on their thoughts and experiences with TDD and I'll let you know how I get on when I start putting it into practice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7975332940169987323-6178517709410158863?l=ajs-software.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/6178517709410158863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7975332940169987323&amp;postID=6178517709410158863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/6178517709410158863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/6178517709410158863'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/2010/11/my-thoughts-on-test-driven-development.html' title='My thoughts on Test Driven Development'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7975332940169987323.post-8994170503321129945</id><published>2010-11-21T03:12:00.000-08:00</published><updated>2010-11-25T13:00:42.743-08:00</updated><title type='text'>Trip round Scotland 2010</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4S1gPzG_dNk/TOkEOBdm4WI/AAAAAAAAAK0/xYkO8TledzU/s1600/IMG_0079.jpg"&gt;&lt;/a&gt;My partner David and I's friend Matt from Bournemouth was visiting us a while back so we decided to give him a little tour around some of Scotland.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We took a drive up through the &lt;a href="http://www.google.com/images?hl=en&amp;amp;q=Rannoch+Moor&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;source=og&amp;amp;sa=N&amp;amp;tab=wi&amp;amp;biw=1280&amp;amp;bih=911"&gt;Rannoch Moor&lt;/a&gt; and on to a hotel just outside &lt;a href="http://www.visit-fortwilliam.co.uk/"&gt;Fort William&lt;/a&gt;.  We have nicknamed Rannoch Moor, Jurassic Park and whilst it was raining heavily it was still a great place to drive through.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TOkEOBdm4WI/AAAAAAAAAK0/xYkO8TledzU/s320/IMG_0079.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541965455413404002" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;EDIT: It was pointed out to me that the picture above is actually taken in Glencoe which is just outside the Rannoch moor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next day we followed the sat-nav (Bad idea) over to the &lt;a href="http://www.balmoralcastle.com/"&gt;Balmoral Estate&lt;/a&gt; (The Royal Families Scottish Holiday Home) and took a tour.  The sat-nav took us straight up and over &lt;a href="http://www.lecht.co.uk/"&gt;the Lecht&lt;/a&gt; which is a Scottish Ski resort and there was quite a bit of snow in the area.  We ended up on a single track road for quite a few miles before finally coming out just down the road from Balmoral.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TOkGqWMvqZI/AAAAAAAAAK8/1-IaFNQ734w/s320/IMG_0092.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541968141039413650" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TOkHCQRHBLI/AAAAAAAAALE/RDEs1h5i7Qw/s320/IMG_0086.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541968551763969202" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TOkHa5CrhYI/AAAAAAAAALM/IewcBQDGtC8/s320/IMG_0118.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541968975026161026" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;On the last day we took a trip down to &lt;a href="http://www.inveraray-argyll.com/"&gt;Inveraray&lt;/a&gt; and visited the &lt;a href="http://www.inverarayjail.co.uk/"&gt;19th Century jail and court house&lt;/a&gt; which has been turned into a museum.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TOkI7VHoCSI/AAAAAAAAALU/99-bO_oziDE/s320/IMG_0125.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541970631830538530" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TOkJc5_0B2I/AAAAAAAAALc/DAPvRCKn4rA/s320/IMG_0131.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541971208665565026" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TOkJt-tHbfI/AAAAAAAAALk/yGTdv6XrHKs/s320/IMG_0152.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541971501987098098" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/_4S1gPzG_dNk/TOkKFnGv-9I/AAAAAAAAALs/XHbT3vairlw/s320/IMG_0192.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541971907969022930" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TOkKWckf4eI/AAAAAAAAAL0/PPK7GjsJ9nY/s320/IMG_0206.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541972197198782946" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 320px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;It was a great few days away and I've included some links for anyone who wants to see these places for themselves.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7975332940169987323-8994170503321129945?l=ajs-software.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/8994170503321129945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7975332940169987323&amp;postID=8994170503321129945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/8994170503321129945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/8994170503321129945'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/2010/11/trip-round-scotland-2010.html' title='Trip round Scotland 2010'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4S1gPzG_dNk/TOkEOBdm4WI/AAAAAAAAAK0/xYkO8TledzU/s72-c/IMG_0079.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7975332940169987323.post-1809775980167082591</id><published>2010-11-21T02:32:00.000-08:00</published><updated>2010-11-21T02:59:18.874-08:00</updated><title type='text'>Team Building Event</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Back in September my work decided to have a team building event.  I'm not usually a fan of team building events and they had certainly picked the worst day for it given the weather but in the end it was really quite good.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our team started off quite badly losing several events in a row - Lowering a bamboo stick with the tops of your fingers, trying to grab and move a bottle from a distance with rope, tape, etc. and using tubes and barrels to keep a tennis ball rolling for as long as we possibly could.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TOj2nL3dtRI/AAAAAAAAAKE/dsp_UNXCDGg/s320/Bamboo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541950494540150034" style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 240px; height: 180px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/_4S1gPzG_dNk/TOj3CbFKqsI/AAAAAAAAAKM/R23fwP7GGCs/s320/KeepRolling.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541950962480622274" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 180px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;By the afternoon our luck had changed and we started to win a few events - Obstacle course where you couldn't stand on the grass (using logs instead), building a catapult, building a tent blindfolded, mini highland games.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_4S1gPzG_dNk/TOj4Ckq3_0I/AAAAAAAAAKU/vGJXKwV91Ck/s320/ObstacleCourse.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541952064566329154" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 180px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TOj4b3mRHRI/AAAAAAAAAKc/GLU-NEZpU9I/s320/HighlandGames.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541952499144006930" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 180px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;We finally moved indoors and out of the rain but the events were not over - NASA quiz, Build a bridge for a radio controlled car out of paper and tape.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TOj5ziAOVuI/AAAAAAAAAKk/z48KYeLTzwM/s320/Bridge.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541954005175785186" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 180px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;In the end we came in joint fourth which was quite good considering how we started out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/_4S1gPzG_dNk/TOj6Ui8yjBI/AAAAAAAAAKs/OUDhojzVvMU/s320/TeamPic.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5541954572365499410" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 240px; height: 180px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;We all then got the chance to do some archery, laser clay pigeon shooting and some other events to round off the day.  Overall it was a good day despite the pouring rain.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more details: &lt;a href="http://www.teamchallenge-company.co.uk/team-building-blog/1051_team-building-with-ge-energy"&gt;http://www.teamchallenge-company.co.uk/team-building-blog/1051_team-building-with-ge-energy&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more pictures: &lt;a href="http://m.flickr.com/#/photos/teamchallengecompany/sets/72157624983773735/"&gt;http://m.flickr.com/#/photos/teamchallengecompany/sets/72157624983773735/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7975332940169987323-1809775980167082591?l=ajs-software.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/1809775980167082591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7975332940169987323&amp;postID=1809775980167082591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/1809775980167082591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/1809775980167082591'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/2010/11/team-building-event.html' title='Team Building Event'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_4S1gPzG_dNk/TOj2nL3dtRI/AAAAAAAAAKE/dsp_UNXCDGg/s72-c/Bamboo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7975332940169987323.post-2866032553784676964</id><published>2010-09-02T13:37:00.000-07:00</published><updated>2010-09-02T14:26:33.505-07:00</updated><title type='text'>What am I working on?</title><content type='html'>&lt;div&gt;I've got quite a few projects on the go at the moment:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Learn Chinese - Had started learning Mandarin about 2 years ago after a work trip to Shanghai but ended up with very little time to work on it so I decided to start back again.  Trying to spend half an hour each night on it - mainly listening and speaking (using Pinyin most of the time).  I'm also trying to learn how to read and write it by putting short phrases on post-it notes and sticking them on my desk at work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Playing guitar - Trying to learn and record each of the songs I have the Music for.  Might even add some recordings to the blog.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Writing a 2D point-click style computer game - Hoping to work with David on this.  He will come up with the story line and I'll write the code to build it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. Writing an Operating System - I decided that if I want to learn more about low level programming I should try writing a research OS.  I have some of the basics in place but I'd really like to build in the .NET framework at quite a low level so that drivers and modules of the OS can be written in C#.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5. Learning about Neural Networks and Genetic programming.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm hoping to post a little more about each of them soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7975332940169987323-2866032553784676964?l=ajs-software.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajs-software.blogspot.com/feeds/2866032553784676964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7975332940169987323&amp;postID=2866032553784676964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/2866032553784676964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7975332940169987323/posts/default/2866032553784676964'/><link rel='alternate' type='text/html' href='http://ajs-software.blogspot.com/2010/09/what-am-i-working-on.html' title='What am I working on?'/><author><name>Allan</name><uri>http://www.blogger.com/profile/11703107308707120335</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_4S1gPzG_dNk/SN4kdzQeH1I/AAAAAAAAAAU/8fbdzOE-wFs/S220/DSC00182.JPG'/></author><thr:total>0</thr:total></entry></feed>
