<?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/"
	>

<channel>
	<title>Monochrome</title>
	<atom:link href="http://blog.monochrome.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.monochrome.co.uk</link>
	<description></description>
	<pubDate>Wed, 09 Sep 2009 08:54:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>All Change</title>
		<link>http://blog.monochrome.co.uk/2009/07/all-change/</link>
		<comments>http://blog.monochrome.co.uk/2009/07/all-change/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 14:59:09 +0000</pubDate>
		<dc:creator>Neil Middleton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/07/all-change/</guid>
		<description><![CDATA[
Life keeps getting more and more exciting for the Monochrome team, it’s been and continues to be a hive of activity, we’ve seen an increase in the demand for rich internet applications across varying technologies, five flex apps, 3 currently in production and on our 3rd deployment of Silverlight, we’re excited to see what else [...]]]></description>
			<content:encoded><![CDATA[<p>
<p>Life keeps getting more and more exciting for the Monochrome team, it’s been and continues to be a hive of activity, we’ve seen an increase in the demand for rich internet applications across varying technologies, five flex apps, 3 currently in production and on our 3rd deployment of Silverlight, we’re excited to see what else is in store for our Epsom office. We’ve also joined the Adobe Web Agency Partner programme and have 2 ACE members (Adobe Community Experts) to support this relationship.</p>
<p>As we go through a major refresh of blogs and news items, not to mention our new website we go into the next qtr with lots and lots to talk about. We’d like to welcome 3 new members to the Monochrome team, Al Pennell-Smith - XHTML/CSS specialist, Clay Thompson - Senior Creative for UX and Kardo Ayoub - UX Specialist, all adding great value to the business and our customers.<br />Someone you’ll be hearing a lot more from over the next few months is our Business Manager Matt Glavin supporting myself Adrian Munn with the increased RIA workload. Our core technology partnerships have enabled our business to grow significantly over the past 12 months - Matt has undertaken the role of managing these alliances and forging new relationships with the support of the sales team.</p>
<p>In times of recession it’s clear to Monochrome through communications with customers that businesses are re-evaluating how to achieve the most from their current applications delivering fast ROI through current business processes. </p>
<p>We have changed our business model and adapted the way in which we deliver services to customers by removing the technical jargon and replacing it with proven methods for delivering applications in a fast and cost effective approach.</p>
</p>
<p><br class="final-break" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/07/all-change/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XMLSocket.send / Socket.writeUTFBytes doesn&#8217;t work?</title>
		<link>http://blog.monochrome.co.uk/2009/06/xmlsocketsend-socketwriteutfbytes-doesnt-work/</link>
		<comments>http://blog.monochrome.co.uk/2009/06/xmlsocketsend-socketwriteutfbytes-doesnt-work/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 13:51:45 +0000</pubDate>
		<dc:creator>Radek Gruchalski</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/?p=1267</guid>
		<description><![CDATA[Disclamer
In first words - no, of course it is not broken, it is working fine. But there is a specific issue with these two methods that when the socket server is implemented incorrectly and people may look for the solution using what&#8217;s in the title.
I just finished writing an ActionScript 3 SWC library which is [...]]]></description>
			<content:encoded><![CDATA[<p><em>Disclamer</em><br />
In first words - no, of course it is not broken, it is working fine. But there is a specific issue with these two methods that when the socket server is implemented incorrectly and people may look for the solution using what&#8217;s in the title.</p>
<p>I just finished writing an ActionScript 3 SWC library which is going to be used with Flex and Flash applications. The library uses Socket connection to provide some statistical information to the Java socket server. As part of the project I had to create simple socket server which simply writes what it gets to the standard output. </p>
<p>The code was working fine when running in Flex Builder debugger. However, as soon as I started the test application in the Flash IDE I found following problem:</p>
<ul>
<li>SWF was requesting policy file</li>
<li>my Java socket server was serving policy file</li>
<li>SWF was showing that it was connected</li>
<li>any other messages sent to the socket were not coming through</li>
</ul>
<p>Exactly the same problem appeared when I deployed Flex version on the external server. It worked while running in the debugger but not from the browser. So it was clearly something wrong with the socket server. Once the policy file was served any other communication wasn&#8217;t working. My socket server looked like this:</p>
<pre>
<pre class="syntax-highlight:java">
package uk.co.test;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketTest {
 public static void main(String[] args) throws Exception {
  System.out.println(&quot;Starting...&quot;);
  start();
 }
 public static void start() throws Exception {
  // create socket server
  ServerSocket ss = new ServerSocket(1234);
  for (;;) {

   System.out.println(&quot;Waiting for the client.&quot;);
   Socket cs = ss.accept();
   System.out.println(&quot;Connection...&quot;);

   InputStream in = cs.getInputStream();
   OutputStream out = cs.getOutputStream();
   boolean isConnected = true;
   StringBuffer soFar = new StringBuffer();
   byte b;

   while (isConnected) {
    // let it rest a bit:
    Thread.sleep(10);
    // read everything what&#039;s coming in:
    while ( (b = (byte)in.read()) &gt; -1 ) {
     if ( b == 0 ) {
      // zero byte, process:
      String value = soFar.toString();
      // get the value
      if ( value.equals(&quot;&lt;policy-file-request/&gt;&quot;) ) {
       // policy file requested, sent the policy back:
       System.out.println(&quot;Policy file request.&quot;);
       String crossdomain = &quot;&lt;?xml version=\&quot;1.0\&quot;?&gt;&quot;;
       crossdomain += &quot;&lt;cross-domain-policy&gt;&quot;;
       crossdomain += &quot;&lt;allow-access-from domain=\&quot;*\&quot; to-ports=\&quot;*\&quot; secure=\&quot;false\&quot; /&gt;&quot;;
       crossdomain += &quot;&lt;/cross-domain-policy&gt;&quot;;
       out.write(crossdomain.getBytes());
       out.write((byte)0);
       out.flush();
       System.out.println(&quot;Policy file sent.&quot;);

      } else {

       if ( value.equals(&quot;exit&quot;) ) {
        // if exit command received, finish:
        isConnected = false;
       } else {
        // just output the message:
        System.out.println(value);
       }

      }
      soFar.setLength(0);
     } else {
      // append the character to the buffer:
      byte[] buf = new byte[1];
      buf[0] = b;
      soFar.append( new String(buf) );
     }
    }
   }
  }
 }
}
</pre>
</pre>
<p>While looking for the solution I found the following article: <em><a href="http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html">Setting up a socket policy file server</a></em>. <em>Peleus Uhley</em> from Adobe describes how to use policy files effectively. In <em>What data is sent in the request and response?</em> section of the article there is a solution..</p>
<p><em>Once Flash Player receives the socket policy file, it closes the connection and opens a new connection if the policy file approves the request.</em></p>
<p>Looking at the above socket server code I could now clearly see what&#8217;s wrong. Once the connection is accepted no other connections are coming in until the first client sends <em>exit</em> message. So I modified my socket server, here it is:</p>
<p><em>SocketTest.java</em></p>
<pre>
<pre class="syntax-highlight:java">
package uk.co.test;

import java.net.ServerSocket;
import java.net.Socket;

public class SocketTest {

 public static void main(String[] args) throws Exception {
  System.out.println(&quot;Starting...&quot;);
  start();
 }

 public static void start() throws Exception {
  // create socket:
  ServerSocket ss = new ServerSocket(1234);
  for (;;) {
   System.out.println(&quot;Waiting for the client.&quot;);
   Socket cs = ss.accept();
   System.out.println(&quot;Connection...&quot;);
   // create socket connection handler and run it in separate thread:
   new SocketHandler(cs);
  }
 }
}
</pre>
</pre>
<p><em>SocketHandler.java</em></p>
<pre>
<pre class="syntax-highlight:java">
package uk.co.test;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class SocketHandler
implements Runnable {

 private Socket _client;

 public SocketHandler(Socket s) {
  _client = s;
  // create new thread from this instance and start it:
  Thread t = new Thread(this);
  t.start();
 }

 public void run() {
  try {
   // get client in/out:
   InputStream in = _client.getInputStream();
   OutputStream out = _client.getOutputStream();
   boolean isConnected = true;
   StringBuffer soFar = new StringBuffer();
   byte b;

   while (isConnected) {
    // let it rest a bit:
    Thread.sleep(10);
    // read everything coming in:
    while ( (b = (byte)in.read()) &gt; -1 ) {
     if ( b == 0 ) {
      // zero byte, process what already came in:
      String value = soFar.toString();
      if ( value.equals(&quot;&lt;policy-file-request/&gt;&quot;) ) {
       // policy file requested, send it to the client:
       System.out.println(&quot;Policy file request.&quot;);
       String crossdomain = &quot;&lt;?xml version=\&quot;1.0\&quot;?&gt;&quot;;
       crossdomain += &quot;&lt;cross-domain-policy&gt;&quot;;
       crossdomain += &quot;&lt;allow-access-from domain=\&quot;*\&quot; to-ports=\&quot;*\&quot; secure=\&quot;false\&quot; /&gt;&quot;;
       crossdomain += &quot;&lt;/cross-domain-policy&gt;&quot;;
       out.write(crossdomain.getBytes());
       out.write((byte)0);
       out.flush();
       System.out.println(&quot;Policy file sent.&quot;);

      } else {

       if ( value.equals(&quot;exit&quot;) ) {
        // exit command received, exit then...
        isConnected = false;
       } else {
        // just print the message to the stdout:
        System.out.println(value);
       }

      }
      soFar.setLength(0);
     } else {
      // append the char to the buffer:
      byte[] buf = new byte[1];
      buf[0] = b;
      soFar.append( new String(buf) );
     }
    }
   }
  } catch (Exception e) {
   // ignore
  }
 }
}
</pre>
</pre>
<p>The second socket server fixed the problem. It is working for connections with and without policy requests, from Flash IDE, Flex Builder and the browser.</p>
<p>It took me 5 hours to figure out the solution (process client connections in separate threads) so if you&#8217;re in the same situation as I was I hope this post helps you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/06/xmlsocketsend-socketwriteutfbytes-doesnt-work/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Communication Nation</title>
		<link>http://blog.monochrome.co.uk/2009/05/communication-nation/</link>
		<comments>http://blog.monochrome.co.uk/2009/05/communication-nation/#comments</comments>
		<pubDate>Fri, 08 May 2009 16:59:43 +0000</pubDate>
		<dc:creator>Adrian Bridgwater</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/?p=1264</guid>
		<description><![CDATA[I&#8217;d like to kick off this first blog in my new editorial content role at Monochrome Limited with a reference to the way we approach editorial content as part of the web design and development process.
Clear and concise communication can seem like a hard thing to achieve in this age of email overload, social networking [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d like to kick off this first blog in my new editorial content role at Monochrome Limited with a reference to the way we approach editorial content as part of the web design and development process.</p>
<p>Clear and concise communication can seem like a hard thing to achieve in this age of email overload, social networking and general web-driven chatter. For this reason, as an agency we will remain focused on the need to be punctual, precise and provocative at all times.</p>
<p>We want to make sure that our editorial content is as compelling as the dynamic graphical elements of the Rich Internet Applications that we build and we will not settle for a second rate job at any level.</p>
<p>You&#8217;ll be hearing a lot more from us in the future, these are exciting times for the web and we want to take you with us on a fascinating journey.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/05/communication-nation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Bentaur hits London</title>
		<link>http://blog.monochrome.co.uk/2009/04/the-bentaur-hits-london/</link>
		<comments>http://blog.monochrome.co.uk/2009/04/the-bentaur-hits-london/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 23:19:29 +0000</pubDate>
		<dc:creator>Neil Middleton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Adobe]]></category>

		<category><![CDATA[ColdFusion]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[UKCFUG]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/04/the-bentaur-hits-london/</guid>
		<description><![CDATA[On Tuesday night the UKCFUG had the pleasure of Ben Forta, Mr Evangelism at Adobe, coming over to give us all a run-down on the latest news in the ColdFusion world, and what&#8217;s up and coming in the long awaited next version of ColdFusion, Centaur (or 9 as it will more likely be known).
  [...]]]></description>
			<content:encoded><![CDATA[<p>On Tuesday night the <a href="http://ukcfug.org/">UKCFUG</a> had the pleasure of <a href="http://forta.com/">Ben Forta</a>, Mr Evangelism at <a href="http://www.adobe.com/">Adobe</a>, coming over to give us all a run-down on the latest news in the <a href="http://www.adobe.com/products/coldfusion">ColdFusion</a> world, and what&#8217;s up and coming in the long awaited next version of ColdFusion, <a href="http://labs.adobe.com/wiki/index.php/Centaur">Centaur</a> (or 9 as it will more likely be known).</p>
<p>  <img src="http://blog.monochrome.co.uk/wp-content/uploads/2009/04/img-2585-thumb.jpg" height="193" align="center" width="380" />
<p>After a late-in-the-day, but necessary change of venue we had 140+ ColdFusion developers descending on the <a href="http://www.swaybar.co.uk/">Sway Bar</a> in Holborn, London (also the future venue of the London leg of &#8220;<a href="http://scotch-on-the-rocks.co.uk/">Scotch-on-the-Road</a>&#8220;). From <a href="http://neilmiddleton.com/">mine</a> and <a href="http://twitter.com/nrichardson">Nik&#8217;s</a> memory we reckon this places this single meeting in the top three in terms of attendance (and that&#8217;s a history going back around a decade). This goes to show, that while we might not be the most communicative or vocal community, there are a lot of us, and interest in the platform is still high.</p>
<p>Starting off, Ben talked about the features that are still not a well known fact in the current ColdFusion 8. This focused largely on the built in <a href="http://www.adobe.com/products/livecycle/dataservices/">LiveCycle Data Services</a> and the related <a href="http://www.adobe.com/products/flex/">Flex</a> integration, but a load of people present honestly appeared to not realise this stuff was built into the product.</p>
<p>After a short break, Ben then moved onto the main event, a preview of ColdFusion 9 and the new ColdFusion Eclipse based IDE, <a href="http://labs.adobe.com/wiki/index.php/Bolt">Bolt</a>. </p>
<p>  <img src="http://blog.monochrome.co.uk/wp-content/uploads/2009/04/img-1-thumb.jpg" height="166" align="center" width="380" />
<p>Nothing in either of these products,from what I recall, was described as definite but there were a number of notable features that appeared to get people excited. First up was talk about being able to write CFML as CFSCRIPT across the board (CFC&#8217;s and all), and then was coverage of the ColdFusion Exposed Services Layer (CFESL) which basically allows third parties to directly call services built into ColdFusion, such as PDF generation or database querying. This single feature provides a whole load of opportunities for developers - for instance, you could have a dedicated PDF generation server called by other servers, or even generate those documents directly from a Flex app without writing any CFML code.</p>
<p>Then Ben went onto talk about the new built-in ORM based on the <a href="http://www.hibernate.org/">Hibernate</a> persistence framework. This is a long awaited addition to CF, with the community having had to roll their own versions in the past. Again, details were sketchy, but from what we understand you can create a CFC based off a database table, and a whole load of magic happens in the back end which allows you to query and interact with your database without having to worry about any SQL.</p>
<p>Finally, Ben talked about Bolt. Bolt is the completely new IDE for ColdFusion. Bolt is essentially an <a href="http://www.eclipse.org/">Eclipse</a> plugin, allowing elements of CFML code completion and insight. Additionally there were features around code generation and wizards, all of which are aimed at making the CF developers life easier - the underlying ethos of the ColdFusion product.</p>
<p>All in all it was a fantastic night for all, with free drinks and nibbles supplied by <a href="http://www.hostway.co.uk/">Hostway</a> and Adobe (who also provided some raffle prizes for a few lucky attendees. </p>
<p>We&#8217;re busy planning the next UKCFUG, so hopefully we&#8217;ll see you there!</p>
<p>  <br class="final-break" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/04/the-bentaur-hits-london/feed/</wfw:commentRss>
		</item>
		<item>
		<title>UKCFUG - 21 april - Ben forta on the future of ColdFusion</title>
		<link>http://blog.monochrome.co.uk/2009/04/ukcfug-21-april-ben-forta-on-the-future-of-coldfusion/</link>
		<comments>http://blog.monochrome.co.uk/2009/04/ukcfug-21-april-ben-forta-on-the-future-of-coldfusion/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 13:51:56 +0000</pubDate>
		<dc:creator>Neil Middleton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ColdFusion]]></category>

		<category><![CDATA[UKCFUG]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/04/ukcfug-21-april-ben-forta-on-the-future-of-coldfusion/</guid>
		<description><![CDATA[Want to know more about ColdFusion&#8217;s future? Want to learn more about Flex, LCDS and AIR? And how ColdFusion integrates with them? 
Then come to the UKCFUG meeting on Tuesday 21 April at the Adobe&#8217;s Regent Park offices in London at 7pm for a special meeting with Ben Forta. 
So why not go and register [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Want to know more about ColdFusion&#8217;s future? Want to learn more about Flex, LCDS and AIR? And how ColdFusion integrates with them? </p>
<p style="clear: both">Then come to the UKCFUG meeting on Tuesday 21 April at the Adobe&#8217;s Regent Park offices in London at 7pm for a special meeting with Ben Forta. </p>
<p style="clear: both">So why not go and <a href="http://ukcfug.eventwax.com/ben-forta-on-a-sneak-at-coldfusions-future-flex-lcds-and-air/register/">register</a> to let us know you are coming (so we can get the beers!) </p>
<p style="clear: both"><strong>UPDATE: Free Drinks!</strong> </p>
<p style="clear: both">We would like to thank <a href="http://www.hostway.co.uk/">Hostway</a> for sponsoring drinks at this meeting. </p>
<p style="clear: both"><strong>Where:</strong><br />Adobe London Regents Park, 12 Park Crescent, London, W1B 1PH<br /><strong>When: </strong><br />Tuesday April 21st 2009 7pm - 9pm<br /><strong>Directions:</strong><br />Nearest Tube - Regents Park </p>
<p style="clear: both">For further information on the UK ColdFusion user group please get in touch.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/04/ukcfug-21-april-ben-forta-on-the-future-of-coldfusion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ColdFusion ranked in top four application servers by developers</title>
		<link>http://blog.monochrome.co.uk/2009/03/coldfusion-ranked-in-top-four-application-servers-by-developers/</link>
		<comments>http://blog.monochrome.co.uk/2009/03/coldfusion-ranked-in-top-four-application-servers-by-developers/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 01:16:13 +0000</pubDate>
		<dc:creator>Neil Middleton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ColdFusion]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/03/coldfusion-ranked-in-top-four-application-servers-by-developers/</guid>
		<description><![CDATA[Adobe announced today that ColdFusion has been announced one of the top four application servers available just behind Websphere, Geronimo and Windows Server. Those are some pretty well respected and prolific servers right there, so it&#8217;s good to see ColdFusion kicking with the big boys.
This report is the latest in a series of hints that [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Adobe <a href="http://twitter.com/coldfusion/status/1363149810" target="_blank">announced today</a> that ColdFusion has been announced one of the top four application servers available just behind <a href="http://www-01.ibm.com/software/websphere/" target="_blank">Websphere</a>, <a href="http://geronimo.apache.org/" target="_blank">Geronimo</a> and <a href="http://www.microsoft.com/windowsserver2008/en/us/default.aspx" target="_blank">Windows Server</a>. Those are some pretty well respected and prolific servers right there, so it&#8217;s good to see ColdFusion kicking with the big boys.</p>
<p style="clear: both"><img src="http://blog.monochrome.co.uk/wp-content/uploads/2009/03/coldfusion1-thumb.jpg" height="149" width="150" style=" text-align: center; display: block; margin: 0 auto 10px;" />This report is the latest in a series of hints that ColdFusion is growing as a technology ever since version 8 came out in July 2007, after some &#8216;dark times&#8217; recovering from the reputation left by it&#8217;s ancestor versions.</p>
<p style="clear: both">At <a href="http://www.monochrome.co.uk" target="_blank">Monochrome</a>, we&#8217;re seeing more interest in ColdFusion too which is certainly proof in the pudding, so to speak. ColdFusion is definitely not as visible in Europe as it might be in the states, but it certainly looks like that is changing. Hopefully with the release of the next version of ColdFusion &#8216;<a href="http://labs.adobe.com/wiki/index.php/Centaur" target="_blank">Centaur</a>&#8216; and the new ColdFusion IDE &#8216;<a href="http://labs.adobe.com/wiki/index.php/Bolt" target="_blank">Bolt</a>&#8216; we&#8217;ll start to this continuing.</p>
<p style="clear: both">If you&#8217;re looking for a development tool that will let you create web applications, and back-ends for RIA&#8217;s, ColdFusion is definitely worth a look.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/03/coldfusion-ranked-in-top-four-application-servers-by-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Feature Upselling</title>
		<link>http://blog.monochrome.co.uk/2009/03/feature-upselling/</link>
		<comments>http://blog.monochrome.co.uk/2009/03/feature-upselling/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 14:49:00 +0000</pubDate>
		<dc:creator>Neil Middleton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/03/feature-upselling/</guid>
		<description><![CDATA[Recently I found myself in the deep dark world of buying the various multi-colored accessories required to support a new born baby. Amongst the various things I needed to buy was a new baby monitor, as for some reason, our old one had decided to pack up completely in the four years it’s been sat [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Recently I found myself in the deep dark world of buying the various multi-colored accessories required to support <a href="http://twitter.com/neilmiddleton/status/1162107998" target="_blank">a new born baby</a>. Amongst the various things I needed to buy was a new baby monitor, as for some reason, our old one had decided to pack up completely in the four years it’s been sat in a sealed box (go figure).<br />So, anyway. Upon looking for said baby monitor I encountered the vast listings of products available on Amazon. All I wanted was a monitor that could let me listen to whatever was happening upstairs in little Max’s bedroom. Initially I was after something simple like <a href="http://www.amazon.co.uk/Tomy-Walkabout-Baby-Advance-Monitor/dp/B0009E66BY/ref=sr_1_2?ie=UTF8&#038;s=baby&#038;qid=1237385388&#038;sr=8-2" target="_blank">this</a>.</p>
<p style="clear: both"><img src="http://blog.monochrome.co.uk/wp-content/uploads/2009/03/41mjwhtj2el-thumb-sl500-aa280-11.jpg" height="280" width="280" style=" text-align: center; display: block; margin: 0 auto 10px;" />Features? Well, it let’s you listen to the baby, and also has a nightlight as a small added extra. Perfect for the requirements in hand - although the nightlight is an added bonus.<br />So, then I got looking for what else there might be, and from then on it gets a whole lot worse (unless you are especially paranoid). For instance, let’s take <a href="http://www.amazon.co.uk/Philips-SCD530-Monitor-Temperature-Humidity/dp/B001HN6GJS/ref=sr_1_21?ie=UTF8&#038;s=baby&#038;qid=1237385480&#038;sr=1-21" target="_blank">this one</a> for example:</p>
<p style="clear: both"><img src="http://blog.monochrome.co.uk/wp-content/uploads/2009/03/41z7wnvyh-l-thumb-sl500-aa2801.jpg" height="242" width="280" style=" text-align: center; display: block; margin: 0 auto 10px;" />It can (deep breath) monitor humidity, monitor temperature, indicate connection drop out, indicate noise via a traffic light system, adjust the sensitivity, communicate over 330m (!) play lullabies, shine a night light, give an out of range warning, show when the battery is flat, vibrate and even tell you when it’s switched on.</p>
<p>Lovely.</p>
<p>However, think back to what your requirements are. You, as a parent, what to know if the child is crying. That’s really the only actually useful use for a monitor. Anything else is an up-sell to make the product more attractive to you, the buyer, and to make you part with that extra £60 you weren’t going to spend when you saw the first model.</p>
<p>So, how the hell does this relate to the web, and web applications? Well, think about your dream product, and then think about all of the wonderful things it could, all those snazzy little features that someone might find useful, things that would make it really cool.</p>
<p>Now picture Microsoft’s <a href="http://office.microsoft.com/en-us/word/default.aspx" target="_blank">Word</a> word processor - how many of the features in that application do you genuinely use day to day? I would guess you probably use the bolds and underlines etc, occasionally dipping into something more advanced like a table of contents. How often do you even look at any of the other stuff? How many of you can honestly say, for instance, that you’ve used the citations functionality, or the macros (and remember, word is one of the simpler parts of the office suite).</p>
<p>Now picture Word as the fully featured baby monitor, when all you really need is the simple one. You need a <a href="http://en.wikipedia.org/wiki/WordPad" target="_blank">wordpad</a>. After all, it does most of what you want, and you already have it.</p>
<p>So, Word is fine having all these features sat there waiting there in case you might want to use them right? Well yes, except you are paying for it. You are paying for all the features that you might want to use. You are paying for a whole load of things that you might need one day - if you’re lucky. It’s a common adage in the IT industry that only 20% of the features are used by 80% of the user-base.<br />So, why, as someone developing a web application would you want to pay for developing stuff that your users will only maybe use. Why would you not want to build fewer features, costing less money, less time, and ultimately making your application <a href="http://www.crn.com/security/18821726" target="_blank">more stable</a>.</p>
<p>Well, in part, marketing departments are to blame - they want to have one up on everyone else, they want their application to do one more thing than the competition, but remember - less software is easier to manage, less software means less maintenance, and less software means less bugs and less support needed therefore making happier users.</p>
<p>Build your product on one or two things it does exceptionally well, rather than the 90 things it does OK you’ll make your life a lot easier.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/03/feature-upselling/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile Requirements - How do you eat yours?</title>
		<link>http://blog.monochrome.co.uk/2009/03/agile-requirements-how-do-you-eat-yours/</link>
		<comments>http://blog.monochrome.co.uk/2009/03/agile-requirements-how-do-you-eat-yours/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 14:09:15 +0000</pubDate>
		<dc:creator>Neil Middleton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/03/agile-requirements-how-do-you-eat-yours/</guid>
		<description><![CDATA[One of the things that I have been looking at a lot recently is the definition of what we, as a team, are building - a commonly missed task by many teams which can often lead to cowboy coding.
Now, there are many viewpoints on how this can be done, the age old preference being that [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both">One of the things that I have been looking at a lot recently is the definition of what we, as a team, are building - a commonly missed task by many teams which can often lead to cowboy coding.</p>
<p style="clear: both"><img src="http://blog.monochrome.co.uk/wp-content/uploads/2009/03/the-new-recruit-thumb2.jpg" height="293" width="378" style=" text-align: center; display: block; margin: 0 auto 10px;" />Now, there are many viewpoints on how this can be done, the age old preference being that of creating a 10,000 document that everyone must adhere to and be measured by. The trouble is, the document takes months to write, even longer to get approval on, and then an eon to code. By the end of this process, the document owner has retired, the development team have cycled their staff three times, and your dog has died. But, more importantly, because these days is moving so damn fast in business, your document is now worthless as half of the requirements are now invalid - either because the workflows in place have subtly changed or the market the product is aimed at has. </p>
<p style="clear: both">So, what do we do about this? Do we just ignore the requirement making it up as we go along, or do we do something a little more clever. Most people seem to leave it to making it up <a href="http://couchdb.infogami.com/alpha1" target="_blank">as you go along</a>. </p>
<p style="clear: both">
<ol style="clear: both">
<li>Ask engineer how the damn thing works.</li>
<li>Deafing silence.</li>
<li>Crickets.</li>
<li>Tumbleweed.</li>
<li>Just start writing something. Anything.</li>
<li>Give this something to the engineer.</li>
<li>Watch engineer become quite upset at how badly you’ve missed the point of everything.</li>
<li>As the engineer berates you, in between insults he will also throw off nuggets of technical information.</li>
<li>Collect these nuggets, as they are the only reliable technical information you will receive.</li>
<li>Try like hell to weave together this information into something enlightening and technically accurate.</li>
<li>Go to step 6.</li>
</ol>
<p style="clear: both">Well, at <a href="http://www.monochrome.co.uk/" title="Monochrome" target="_blank">Monochrome</a>, we’ve been doing Agile now for a fair while, and the key mantra there is </p>
<blockquote style="clear: both"><p>“<a href="http://www.agilemodeling.com/essays/barelyGoodEnough.html" target="_blank">Just barely good enough</a>“ </p>
</blockquote>
<p style="clear: both">But what does this mean? Well, in essence, don’t bother doing anything until literally just before you need it, and even then, only do the absolute minimum to makes things work. If you do things to early, you’re opening up the risk of change, and if you do too much, you’re pretty much wasting your time (the minimum amount is just enough after all). This means no massive tombs of out of date guff, and also a lot less time spent writing. </p>
<p style="clear: both">For us, we find that documentation in the form of multiple screen wireframes that are annotated with functional detail tend to suffice, especially when accompanied by some background blurb to describe the things you <em>can’t</em> see. This is especially effective for two reasons - firstly it’s nice and visual, which means clients are more likely to read it, and it also gives you a nice document to directly compare your screens and functionality against - it’s <em>almost testable</em>. </p>
<p style="clear: both">Now, here’s a question back to you guys, all of which will be either reading, writing or somehow interacting with requirements on a daily basis - how do you eat yours? What do you find works, and what do you wish you could have? </p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/03/agile-requirements-how-do-you-eat-yours/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alleviating Duplicate Content on Google</title>
		<link>http://blog.monochrome.co.uk/2009/02/alleviating-duplicate-content-on-google/</link>
		<comments>http://blog.monochrome.co.uk/2009/02/alleviating-duplicate-content-on-google/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 10:22:42 +0000</pubDate>
		<dc:creator>John Beynon</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/02/alleviating-duplicate-content-on-google/</guid>
		<description><![CDATA[This month both Google and Yahoo have introduced a new way to prevent duplicate content appearing on search results.
It is achieved by simply adding a &#60;link&#62; tag in your header (on the page that is like another page) and set it to point to the permalink for a given page that it is like, for [...]]]></description>
			<content:encoded><![CDATA[<p>This month both Google and Yahoo have introduced a new way to prevent duplicate content appearing on search results.</p>
<p>It is achieved by simply adding a &lt;link&gt; tag in your header (on the page that is like another page) and set it to point to the permalink for a given page that it is like, for example</p>
<p>&lt;link rel=”canonical” src=”http://mywebsite.com/my/permalink/page” /&gt;</p>
<p>This is particularly handy if you’re passing url variables and only (for some reason) want to have one page listed in search results or want only some URL variables to be indexed (eg applying an order to search results – but shame on you for not using JQuery <img src='http://blog.monochrome.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).&#160; Perhaps even this could be used to&#160; specify that links to the actual default page eg “index.cfm” are really the same result as “/” and only display them once.</p>
<p>Google,Yahoo and Microsoft have said that the method is something they will ‘strongly honour’ and have been working together to get it implemented, something they have been doing a few times previously with sitemaps and standard robots.txt directives.</p>
<p>More details are available on the <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">Google Webmaster Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/02/alleviating-duplicate-content-on-google/feed/</wfw:commentRss>
		</item>
		<item>
		<title>If architects had to work like software developers</title>
		<link>http://blog.monochrome.co.uk/2009/02/if-architects-had-to-work-like-software-developers/</link>
		<comments>http://blog.monochrome.co.uk/2009/02/if-architects-had-to-work-like-software-developers/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 13:05:35 +0000</pubDate>
		<dc:creator>Neil Middleton</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://blog.monochrome.co.uk/2009/02/if-architects-had-to-work-like-software-developers/</guid>
		<description><![CDATA[Dear Mr. Architect:
Please design and build me a house. I am not quite sure of what I need, so you should use your discretion. My house should have somewhere between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Mr. Architect:</p>
<p>Please design and build me a house. I am not quite sure of what I need, so you should use your discretion. My house should have somewhere between two and forty-five bedrooms. Just make sure the plans are such that the bedrooms can be easily added or deleted. When you bring the blueprints to me, I will make the final decision of what I want. Also, bring me the cost breakdown for each configuration so that I can arbitrarily pick one.</p>
<p>Keep in mind that the house I ultimately choose must cost less than the one I am currently living in. Make sure, however, that you correct all the deficiencies that exist in my current house (the floor of my kitchen vibrates when I walk across it, and the walls don’t have nearly enough insulation in them).</p>
<p>As you design, also keep in mind that I want to keep yearly maintenance costs as low as possible. This should mean the incorporation of extra-cost features like aluminum, vinyl, or composite siding. (If you choose not to specify aluminum, be prepared to explain your decision in detail.)</p>
<p>Please take care that modern design practices and the latest materials are used in construction of the house, as I want it to be a showplace for the most up-to-date ideas and methods. Be alerted, however, that kitchen should be designed to accommodate, among other things, my 1952 Gibson refrigerator.</p>
<p>To insure that you are building the correct house for our entire family, make certain that you contact each of our children, and also our in-laws. My mother-in-law will have very strong feelings about how the house should be designed, since she visits us at least once a year. Make sure that you weigh all of these options carefully and come to the right decision. I, however, retain the right to overrule any choices that you make.</p>
<p>Please don’t bother me with small details right now. Your job is to develop the overall plans for the house: get the big picture. At this time, for example, it is not appropriate to be choosing the color of the carpet.</p>
<p>However, keep in mind that my wife likes blue.</p>
<p>Also, do not worry at this time about acquiring the resources to build the house itself. Your first priority is to develop detailed plans and specifications. Once I approve these plans, however, I would expect the house to be under roof within 48 hours.</p>
<p>While you are designing this house specifically for me, keep in mind that sooner or later I will have to sell it to someone else. It</p>
<p>therefore should have appeal to a wide variety of potential buyers. Please make sure before you finalize the plans that there is a consensus of the population in my area that they like the features this house has. I advise you to run up and look at my neighbor’s house he constructed last year. We like it a great deal. It has many features that we would also like in our new home, particularly the 75-foot swimming pool. With careful engineering, I believe that you can design this into our new house without impacting the final cost.</p>
<p>Please prepare a complete set of blueprints. It is not necessary at this time to do the real design, since they will be used only for construction bids. Be advised, however, that you will be held accountable for any increase of construction costs as a result of later design changes.</p>
<p>You must be thrilled to be working on as an interesting project as this! To be able to use the latest techniques and materials and to be given such freedom in your designs is something that can’t happen very often. Contact me as soon as possible with your complete ideas and plans.</p>
<p>PS: My wife has just told me that she disagrees with many of the instructions I’ve given you in this letter. As architect, it is your responsibility to resolve these differences. I have tried in the past and have been unable to accomplish this. If you can’t handle this responsibility, I will have to find another architect.</p>
<p>PPS: Perhaps what I need is not a house at all, but a travel trailer. Please advise me as soon as possible if this is the case..</p>
<p>[Author Unknown]</p>
<p><br class="final-break" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.monochrome.co.uk/2009/02/if-architects-had-to-work-like-software-developers/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
