<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sam&#039;s occasional tech thinkings</title>
	<atom:link href="http://www.ziazoo.co.uk/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ziazoo.co.uk/blog</link>
	<description>I wish I got it right more!</description>
	<lastBuildDate>Sat, 16 Jan 2010 15:16:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>commanding dawn</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2010/01/16/commanding-dawn/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2010/01/16/commanding-dawn/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 15:16:03 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[commands]]></category>
		<category><![CDATA[dawn]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=245</guid>
		<description><![CDATA[Over the last few weeks I have been trying to improve the documentation for Dawn on its GitHub page.  I am slowly making progress (hindered a little by starting a new job) but realise there are still some real weak spots.  One area in particular is Dawn&#8217;s use of the command pattern.  [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last few weeks I have been trying to improve the documentation for Dawn on its <a title="GitHub" href="http://github.com/sammyt/dawn">GitHub</a> page.  I am slowly making progress (hindered a little by starting a new job) but realise there are still some real weak spots.  One area in particular is Dawn&#8217;s use of the command pattern.  I built Dawn&#8217;s commands in a bit of a rush while completing the project that demonstrated the need for them, so have held back giving them too much formal documentation until I can clean them up and add a couple more key features.  That said, I still find them very useful in their current state so thought I&#8217;d write this little post to give them more of an airing.</p>
<p>There are lots of good reasons for using commands in your applications.  They are a proven solutuion for all sorts of common problems in client side development such as queueing, cacheing, batching etc.  They are also very useful for performing business logic that spans multiple domains within an application, and thus belong in no one domain alone.</p>
<h3>Why make another command library?</h3>
<p>Enough of why commands are good (we all know that), <strong>why does Dawn contain its own flavour of this oh so common pattern? </strong> In turns out providing the command pattern is not a simple as it might seem in Actionscript, at least not if you have some <a title="design principles" href="http://wiki.github.com/sammyt/dawn/designprinciples">design principles</a> you intend to stick to.  Most of the frameworks I have come accross in actionscript provide commands in a pretty similar way, the steps are somethings like this</p>
<ol>
<li>Create a new object that implements some ICommand interface</li>
<li>implement the execute method, which takes some generic object as its argument.  Find a way to get hold of any objects you need, perhaps a service locator (PureMVC) or a singleton (Caringorm)</li>
<li>define some string or event (a string type field) that triggers the command</li>
<li>configure the framework to trigger the command on the newly defined event (one-to-one mapping)</li>
</ol>
<p><strong>So what is wrong with that? How could that be better?</strong> It seems to me that those steps break a number of principles I think are fairly important, it also looks like a lot of work which could go wrong.</p>
<p>Take <strong>step 1</strong>. &#8220;<em>Create a new object that implements some ICommand interface</em>&#8220;.  Everyone loves a bit of programming to interfaces!  But there a snag here with Actionscript, that ICommand interface will have defined a type for its argument e.g.</p>
<pre>interface ICommand{
    function execute(event:FrameworkEvent):void
}</pre>
<p>In actionscript there is no way for me to extend an interface and narrow the type of the argument, this for example would be impossible</p>
<pre>interface MyCommand extends ICommand{
    function execute(event:MyFrameworkEvent):void
}</pre>
<p>What that means is that any commands I write that want to get information out of the event that triggered them are going to have to cast the argument! Type safety FAIL!  I want to be able to write type safe commands that know the exact type of their arguments.</p>
<p><strong>Step 2</strong>. &#8220;<em>implement the execute method, which takes some generic object as its argument.  Find a way to get hold of any objects you need, perhaps a service locator (PureMVC) or a singleton (Caringorm)</em>&#8221;  You can probably guess what I dont like about that.  Commands are so valuable because they can encapsulate complex logic that involves a number of parts of an application.  But commands are stateless (created each time they are executed) and tend to be created by the framework, so how can they get hold of the objects that they need to act upon?  In most frameworks I have come across objects that need to be involved in commands either need to implement the singleton pattern &#8211; <strong>the enemy of testable code</strong>! Or register with a service locator, which adds new dependencies on the command to a service locator class and a random string against which the object may (fingers crossed) be registered against.  I want my commands to have as few dependencies as possible, I dont want to have to rely on strings to get hold of the core actors in my system, and I certainly dont want to fall into the many traps thats singletons lay.</p>
<p><strong>step 3</strong>. &#8220;<em>define some string or event (a string type field) that triggers the command</em>&#8221;  Having created this command in framework X I now need to think about how to trigger its execution.  I might have to create a new object that extends some base event to do this, or I may just have to choose a string name.  I can just about deal with this step, I know that there is going to have to be something that triggers the command (I just dont think string or events are very good choices).</p>
<p><strong>step 4</strong>. &#8220;<em>configure the framework to trigger the command on the newly defined event (one-to-one mapping)</em>&#8221;  This is where the previous step starts to frustrate me.  I have to TELL the framework that the object I just created is the one that will trigger the command.  This will most likely look something like so</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">framework.registerCommand( MyThing.NAME, MyLovelyCommand );</span></p>
<p>There are a couple of things I don&#8217;t like about that, firstly it depends on developer discipline (I dont have that!), meaning it&#8217;s up to me to check that the value of MyThing.NAME is what it should be, the compiler won&#8217;t care if all my NAME properties have the same value!!  Secondly it&#8217;s configuration, and configuration does not rock my boat.</p>
<h3>how is Dawn different?</h3>
<p>Heres an example of what a typical command might look like in Dawn (in a typical hay making application).</p>
<pre>class MakeHayCommand{
   [Inject] public var barn:Barn;

   [Execute] public function execute( note:MakeHay ):void{
      barn.makeHay(note.howMuchHay);
   }
}</pre>
<p>There are a few things to note</p>
<ul>
<li>there is no ICommand interface</li>
<li>the argument to the execute method is specific to the business logic being executed</li>
<li>the execute method has [Execute] metadata</li>
<li>the barn variable has [Inject] metadata</li>
</ul>
<p>You might have already guessed that a Dawn command was not going to implement an ICommand interface.  Dawn tries to make the most of Actionscript by using metadata over interfaces here inorder to preserve type safety. When this command is triggered the method that has the [Execute] metadata will be invoked (this also means that we could call the method anything we like, something more meaningful, like, makeTheHay).  Now that we have an argument that is specific to the business logic being executed we no longer need to perform risky runtime casting.</p>
<p>My other major gripe with commands is how core actors within a system are reached, Dawn makes this easy by building upon its dependency injection library.  Just like any other object in Dawn, the command need only specify what it needs by providing the [Inject] metadata.  Dawn will ensure that the relavent objects are constructed/retrieved before the command is executed, so all the logic to fetch domain objects via service locators or singletons is removed, making for a terser more testable command.</p>
<p>While all that type safety would be good on its own it also hands us another easy win with a bit of dry configuration.  We (and Dawn) can see the type of the argument of the execute method, so we can completely skip the configuration step (thats the nasty bit where we start defining strings all over the place), the command is implicitly mapped to the MakeHay notification.</p>
<p>Setting up and triggering a command then looks much simpler</p>
<p>We tell Dawn we have a new command (but skip any mapping step)</p>
<pre>commands.addCommand(MayHayCommand);</pre>
<p>Since the command system is built on top of Dawns other libraries (DI and notifications) we can just send a notification of type MakeHay to trigger the command.</p>
<pre>notificationBus.trigger(new MakeHay(numberOfBales));</pre>
<p>and we&#8217;re done.</p>
<h3>One more quick win</h3>
<p>Another nice feature we get for free by building on top of the notification system is that any command you write is mapped by type, and types can be concrete classes (like the above example) or abstract classes or even interfaces.</p>
<p>Here is a command that will log any notification that implements IResponder</p>
<pre>class LogRpcCommand {
    [Execute] public function execute( responder:mx.rpc.IResponder ):void {
        trace("making rpc call", responder);
    }
}</pre>
<h3>Recap</h3>
<p>Hopefully I&#8217;ve gone someway in justifying why Dawn implements it&#8217;s own command pattern.  I wanted to ensure my code stayed type safe, I didn&#8217;t want to invent verbose ways of getting hold of objects within the system, and I didn&#8217;t want to map classes to string.</p>
<p>I still have someway to go with them, there is more I want from them (queueing baked in etc) but I already find them very useful, and well worth their place in Dawn.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2010/01/16/commanding-dawn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dawn at FLUG</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2009/11/18/dawn-at-flug/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2009/11/18/dawn-at-flug/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 15:45:40 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[dawn]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flug]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=214</guid>
		<description><![CDATA[Last night I got the chance to give Dawn its public launch as I presented it at FLUG.  Dawn is a set of libraries I have been developing to aid my actionscript development.  It consists of three core parts

A dependency injection library inspired by Google Guice
A notification system based on types
A simple type safe command pattern

I built [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I got the chance to give <a href="http://github.com/sammyt/dawn" target="_blank">Dawn</a> its public launch as I presented it at <a href="http://www.meetup.com/flexlondon/calendar/11793506/" target="_blank">FLUG</a>.  Dawn is a set of libraries I have been developing to aid my actionscript development.  It consists of three core parts</p>
<ul>
<li>A dependency injection library inspired by <a href="http://code.google.com/p/google-guice/" target="_blank">Google Guice</a></li>
<li>A notification system based on types</li>
<li>A simple type safe command pattern</li>
</ul>
<p>I built Dawn to address a number of issues that I felt existed in many of the current approaches to application development for the Flash platform.  I hope I went some way to demonstrating how I feel Dawn helps you write <strong>testable</strong>, <strong>type safe</strong> and <strong>agile</strong> code.</p>
<p>Thanks to all who attended and for the the positive feedback.<br />
Below are the slides I used in the talk, or you can download the <a href="http://www.ziazoo.co.uk/blog/wp-content/uploads/2009/11/dawn_talk.key_.zip">keynote</a> file</p>
<div id="__ss_2563556" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Dawn - Actionscript Library" href="http://www.slideshare.net/sammyt/dawn-actionscript-library-2563556">Dawn &#8211; Actionscript Library</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dawn-091123043638-phpapp01&amp;rel=0&amp;stripped_title=dawn-actionscript-library-2563556" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=dawn-091123043638-phpapp01&amp;rel=0&amp;stripped_title=dawn-actionscript-library-2563556" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/sammyt">sammyt</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2009/11/18/dawn-at-flug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking towards declarative interfaces in GWT</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2009/06/07/looking-towards-declarative-interfaces-in-gwt/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2009/06/07/looking-towards-declarative-interfaces-in-gwt/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 10:25:43 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[RIA]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[wave]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=112</guid>
		<description><![CDATA[I have been doing some work with GWT lately, and there is a lot I really like about it. Developing in Java (or any OO language) not only makes me more productive, it enables me to solve problems in the way I understand, without having first to grapple with how another language requires me to [...]]]></description>
			<content:encoded><![CDATA[<p>I have been doing some work with <a href="http://code.google.com/webtoolkit/">GWT</a> lately, and there is a lot I really like about it. Developing in Java (or any OO language) not only makes me more productive, it enables me to solve problems in the way I understand, without having first to grapple with how another language requires me to think.  The output is awesome since its rendered natively in the browser, making it fast, and familiar.  Basically there is a lot I really like about GWT, and I&#8217;m going to be using it wherever I get a chance from now on, but that not to say its all good.</p>
<h4>Mini Gripe</h4>
<p>I do have a mini gripe with the current implementation (well maybe I&#8217;ll have a few, but this one stands out), it&#8217;s the way interfaces are described in Java.  For all Java&#8217;s benefits, it remains a verbose language, and developing UI structure with it looks clumsy and hard to maintain, in fact I know it is.  I can say that with some confidence since development  in GWT is almost identical to <a href="http://www.adobe.com/products/flex/">Flex</a> development.</p>
<p>In Flex, if you try to develop all your interface in actionscript you end up in a similar situation. Classes quickly become very large (huge createChildren methods) as many nested components are instantiated and associated with one another.  Fortunately this can be avoided in Flex, as its is better practice to construct your layout using xml, leaving the declarative part of interface development in the language that suits it.  Xml is not just better for interface development because its declarative, it also lends itself to input from other disciplines since many types of developers and designer are used to html as the language of website structure.</p>
<h4>Gripe Solved (soon)</h4>
<p>That&#8217;s not the end of the story, as I learnt from the <a href="http://code.google.com/events/io/sessions/GoogleWaveUnderTheHood.html">Google Wave: Under the Hood</a> video, where a project named UiBinder is briefly mentioned.  The project sounded like exactly what I am after, and means of defining <a href="http://code.google.com/webtoolkit/">GWT</a> interface in xml.  After a little hunting I found this <a href="http://code.google.com/p/google-web-toolkit-incubator/wiki/UiBinder">document</a> and this <a href="http://groups.google.co.uk/group/Google-Web-Toolkit-Contributors/browse_thread/thread/4539b203c2aba4ad?">post</a>.  Which explain <strong>what</strong> UiBinder is and importantly <strong>where</strong> it is (currently only internal to Google, though shortly to be released to you and me, w00).</p>
<h4>UiBinder, briefly</h4>
<p>UiBinder, according to the docs is a &#8220;<em>service to generate Widget and DOM structures from XML markup</em>&#8220;.  Which after reading the proposal (the document is a proposal for UiBinder as a GWT feature) I figured out basically means it does exactly what I was hoping.  So how does it work?</p>
<p>(I&#8217;ve taken the code below out of the proposal document since I cant yet try this myself. humph)</p>
<p>First the interface is defined using XML</p>
<pre name="code" class="xml">&lt;!-- HelloWorld.ui.xml --&gt;
&lt;ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'&gt;
  &lt;div&gt;
    Hello, &lt;span ui:field='nameSpan'/&gt;.
  &lt;/div&gt;
&lt;/ui:UiBinder&gt;</pre>
<p>This describes the interface for a a classic hello world component.  What I particularly like about the approach is how this file is then used from the Java, there are no nasty inline script tags or clumsy code behind super classes.  The template xml file is bound to the Java class explicitly.</p>
<pre name="code" class="java">public class HelloWorld extends UIObject {

  interface MyUiBinder extends UiBinder{}
  private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

  @UiField SpanElement nameSpan;

  public HelloWorld(String name) {
    setElement(uiBinder.createAndBindUi(this));
    nameSpan.setInnerText(name);
  }
}</pre>
<p>The first line of the constructor is the interesting one, the <code>UiBinder</code> method <code>createAndBindUi</code> is called passing in <code>this</code> as the argument.  This constructs your UI components and assigns them to corresponding private variables within the class, making the next line where the text is assigned to the span possible without ever having to directly construct the <code>SpanElement</code> within the java.</p>
<p>What you end up with is a very elegant separation of layout from logic.  Cant wait to get my hands on it!</p>
<p>If you don&#8217;t have much patience there are other options, if you take a look to the bottom of the UiBinder proposal there are some links to similar projects at the bottom, though I&#8217;ve yet to look into them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2009/06/07/looking-towards-declarative-interfaces-in-gwt/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Installing psycopg2 on Leopard</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2009/05/16/installing-pscopg2-on-leopard/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2009/05/16/installing-pscopg2-on-leopard/#comments</comments>
		<pubDate>Sat, 16 May 2009 18:59:36 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[turbogears]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[psycopg2]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=88</guid>
		<description><![CDATA[Have been building a site using Turbogears 2.0 of late (which is awesome), and decided it was time to start setting up my staging and production environments.  Thus far I have just been developing locally with sqlite, but in production I want to use postgresql&#8230; so tried to install psycopg2 via distutils and was met [...]]]></description>
			<content:encoded><![CDATA[<p><span>Have been building a site using <a href="http://turbogears.org/">Turbogears 2.0</a> of late (which is awesome), and decided it was time to start setting up my staging and production environments.  Thus far I have just been developing locally with sqlite, but in production I want to use <a href="http://www.postgresql.org/">postgresql</a>&#8230; so tried to install psycopg2 via distutils and was met with the following error</span></p>
<pre name="code" style="margin-top:10px; margin-bottom:10px;">NameError: global name 'w' is not defined</pre>
<p>Eek!</p>
<p><span>Finding the solution seemed to take me far too many googles&#8230; so thought I’d pop up here so I have no excuse for forgetting next time I do exactly the same</span></p>
<p><span>For me the solution was to add the following to my path, since I appears that pscopg2 requires postgres to be installed before it can compile (My version of postgres is installed via macports)</span></p>
<pre name="code" style="margin-top:10px; margin-bottom:10px;" >export PATH=/Library/PostgreSQL/8.3/bin:$PATH</pre>
<p><span>Once the postgres bin folder was in the path pscopg2 compiled without any troubles. Win</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2009/05/16/installing-pscopg2-on-leopard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Woo, I presented at Max</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2008/12/03/woo-i-presented-at-max/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2008/12/03/woo-i-presented-at-max/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 15:42:22 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[LBi]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[max]]></category>
		<category><![CDATA[adobe]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=75</guid>
		<description><![CDATA[I gave my presentation at Adobe Max this morning on building Flex applications with PureMVC.  It was a real privilege to get the opportunity to speak, and I hope those who attended found it useful.
I also feel fortunate that I had such a good topic to talk on, as that always makes it easier  [...]]]></description>
			<content:encoded><![CDATA[<p>I gave my presentation at Adobe Max this morning on building Flex applications with PureMVC.  It was a real privilege to get the opportunity to speak, and I hope those who attended found it useful.</p>
<p>I also feel fortunate that I had such a good topic to talk on, as that always makes it easier <img src='http://www.ziazoo.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  so many thanks to Cliff for doing such a great job with PureMVC</p>
<p>In case anyone is interested I have uploaded the slides and the sample code&#8230;<br />
<a title="sample code" href="http://www.ziazoo.co.uk/max/SantasList.zip" target="_blank">code</a><a title="presentation" href="http://www.ziazoo.co.uk/max/Samuel_Williams_PureMVCwithFLEX.zip" target="_blank"><br />
slides (keynote)</a><br />
<a title="presentation swf" href="http://www.ziazoo.co.uk/max/Samuel_Williams_PureMVCwithFLEX.swf" target="_blank"> slide (swf)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2008/12/03/woo-i-presented-at-max/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Day one at Adobe Max Europe</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2008/12/01/day-one-at-adobe-max-europe/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2008/12/01/day-one-at-adobe-max-europe/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 15:33:33 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[max]]></category>
		<category><![CDATA[iplayer]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=71</guid>
		<description><![CDATA[The highlight of the first day was always going to be the keynote. Whilst there was nothing revelatory, it was inspiring to see Adobe showcase their products. This was perhaps helped by the impressive circa 30m wide video wall.
I particularly enjoyed the talk given by the BBC. The somewhat muted service they provide for non-Windows [...]]]></description>
			<content:encoded><![CDATA[<p>The highlight of the first day was always going to be the keynote. Whilst there was nothing revelatory, it was inspiring to see Adobe showcase their products. This was perhaps helped by the impressive circa 30m wide video wall.</p>
<p>I particularly enjoyed the talk given by the BBC. The somewhat muted service they provide for non-Windows users has always been a bug bearer for me. I was pleased to hear though that they have been handed a solution to their licensing issues by the DRM support in Air 1.5. This means we can now have the same download manager facilities, along with some notification goodness, wrapped up in a shiny cross-platform AIR app &#8211; result.</p>
<p>Another demo that caught my eye was a news reader for the New York Times.  I was shown the current New York Times news reader about a year ago. It’s a chunky WPF application, so no good to me in Unix land.  What it did do very nicely however was display column based text in whatever sized window you might have the app open in.  That same functionally is now available (or soon to be, I’m not sure if it’s out yet) in an Air application.  This is no doubt made a lot easier by the new text rendering engine within Flash 10, which allows text to flow between containers.  For some more info check out this <a title="CNet article" href="http://news.cnet.com/8301-17939_109-10098614-2.html" target="_blank">report </a></p>
<p>Ohh, and for general information about the Keynotes go <a title="adobe keynote info" href="http://www.adobe.com/go/keynote" target="_blank">here</a></p>
<p>ta ta</p>
<p>ps, I&#8217;m also posting on the LBi blog, check it out <a title="LBi RIA blog" href="http://rich.lbi.co.uk/" target="_blank">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2008/12/01/day-one-at-adobe-max-europe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Project Snooze</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/project-snooze/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/project-snooze/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 17:17:56 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Snooze]]></category>
		<category><![CDATA[actionscript]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=56</guid>
		<description><![CDATA[A little while back I started a project called Project Snooze.  My idea was to port the basic functionalty of Hibernate to Adobe AIR, in the hope of making working with SQLite in AIR a much more fun/agile process.  I got quite a way with it back when I was commuting as I worked on [...]]]></description>
			<content:encoded><![CDATA[<p>A little while back I started a project called Project Snooze.  My idea was to port the basic functionalty of <a title="hibernate.org" href="http://www.hibernate.org" target="_blank">Hibernate</a> to Adobe AIR, in the hope of making working with SQLite in AIR a much more fun/agile process.  I got quite a way with it back when I was commuting as I worked on the train.  Since then I have let it slip a little but now I&#8217;ve decided its about time I finished what I started!</p>
<p>The basic idea is that with a nominal amout of metadata Snooze can create your database, and perform CRUD operations for your objects.  It supports the most common relationship types, one-to-one, one-to-many, and many-to-many, and I am planning to build a querying api into it.</p>
<p>If your interested in finding out more about it you can check it out on <a title="snooze" href="http://github.com/sammyt/snooze/tree/master" target="_blank">github</a>&#8230; where hopfully you will see a lot of commits from this lazy geek!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/project-snooze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking at Max</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/speaking-at-max/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/speaking-at-max/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 16:51:19 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[max]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=44</guid>
		<description><![CDATA[Some exciting news I left off the last post (as I thought it deserved its own) is that I have been confirmed as a speaker at Adobe Max Europe.  Im going to be speaking about building Flex applications with PureMVC, so a lot like the FlexCamp talk only this time I will be going into [...]]]></description>
			<content:encoded><![CDATA[<p>Some exciting news I left off the last post (as I thought it deserved its own) is that I have been <a title="speaking at max" href="http://www.ashorten.com/2008/10/07/announcing-uk-speakers-at-max-europe/" target="_blank">confirmed</a> as a speaker at Adobe Max Europe.  Im going to be speaking about building Flex applications with PureMVC, so a lot like the FlexCamp talk only this time I will be going into more detail&#8230;. I&#8217;m currently trying to figure out how to communicate something quite abstract without sounding dry, or making the usual mistake of just saying something is elegent without backing it up with facts/justification.  Hummm, righto back to keynote!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/speaking-at-max/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lazy sammy</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/lazy-sammy/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/lazy-sammy/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 15:37:58 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[LBi]]></category>
		<category><![CDATA[max]]></category>
		<category><![CDATA[natter]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/?p=33</guid>
		<description><![CDATA[Wow, been a while since I did this!
Since March (when I last posted) I’ve had a rather busy time.  I have settled into my new Job at LBi (not that new anymore, I started in February 08) and have finally moved to London.. so no more moaning about First Great (really not very great) Western!
Here [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, been a while since I did this!</p>
<p>Since March (when I last posted) I’ve had a rather busy time.  I have settled into my new Job at LBi (not that new anymore, I started in February 08) and have finally moved to London.. so no more moaning about First Great (really not very great) Western!</p>
<p>Here are some brief highlights:</p>
<p><strong>Getting published by adobe</strong><br />
Seems someone did read my blog after all (though probably not anymore as I have been a little quiet) as I was contacted by adobe after they read my blog and asked me to write an article&#8230; you can read it <a href="http://www.adobe.com/devnet/flex/articles/image_viewer.html" target="_blank">here</a>.  Not sure its very good to be honest&#8230; and I might have some different things to say if I were writing it now, but I guess thats all part of the learning process.  Mostly I was just flattered that asked!</p>
<p><strong>Building some cool apps</strong><br />
Things have been going well at LBi, and I have been lucky enough to work on fairly awesome apps&#8230; probably the most exciting has been a platform game for Centrica.  We had a team of 5 actionscript developers working on it, and I think there are somewhere in the region of 1000 class files making it up, so it was no small feat!  Its a PureMVC application, with the physics engine Box2D providing the core of the game engine. Check it out <a title="generation green" href="http://www.generationgreen.co.uk/" target="_blank">here</a></p>
<p><strong>Speaking at FlexCamp</strong><br />
We use PureMVC to build all our apps in the RIA team at LBi, consequently we’ve ended up knowing a fair bit about it.  We got a chance to share some of that experience at FlexCamp the other month.  I presented along with Justin Clark (me boss) on the basics of creating Flex applications with PureMVC.  I was pretty nervous&#8230; but I think it went well, and we did get some good feedback on the day.</p>
<p>phew&#8230; I think there may be more, but I&#8217;m hungry! so think its time I signed off and shut up <img src='http://www.ziazoo.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2008/11/01/lazy-sammy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I hate First Great Western</title>
		<link>http://www.ziazoo.co.uk/blog/index.php/2008/03/03/i-hate-first-great-western/</link>
		<comments>http://www.ziazoo.co.uk/blog/index.php/2008/03/03/i-hate-first-great-western/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 20:44:20 +0000</pubDate>
		<dc:creator>Sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ziazoo.co.uk/blog/index.php/2008/03/03/i-hate-first-great-western/</guid>
		<description><![CDATA[I really really really hate First Great Western!!!!!&#8230; I just needed to get that off my chest!
]]></description>
			<content:encoded><![CDATA[<p>I really really really hate First Great Western!!!!!&#8230; I just needed to get that off my chest!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ziazoo.co.uk/blog/index.php/2008/03/03/i-hate-first-great-western/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
