<?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>FlipStorm &#187; programming</title>
	<atom:link href="http://flipstorm.co.uk/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://flipstorm.co.uk</link>
	<description>web development masters</description>
	<lastBuildDate>Wed, 01 Sep 2010 13:47:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<atom:link rel='hub' href='http://flipstorm.co.uk/?pushpress=hub'/>
		<item>
		<title>A Busy, Warm April</title>
		<link>http://flipstorm.co.uk/2010/04/a-busy-warm-april/</link>
		<comments>http://flipstorm.co.uk/2010/04/a-busy-warm-april/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 18:56:30 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://flipstorm.co.uk/?p=221</guid>
		<description><![CDATA[
			
				
			
		
April has been one hectic month! Between launching WhatGrowersUse.com, pre-launch marketing Optimise and fixing PlantConnection, I&#8217;ve barely had a moment to stop and think!
Add to this the fact that I&#8217;ve been swotting up on all things dev. I love coding in PHP and today I managed to hack out a super slender piece of functionality...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2010%2F04%2Fa-busy-warm-april%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2010%2F04%2Fa-busy-warm-april%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>April has been one hectic month! Between launching <a href="http://www.whatgrowersuse.com/">WhatGrowersUse.com</a>, pre-launch marketing <a href="http://optimiseapp.com/">Optimise</a> and fixing <a href="http://www.plantconnection.co.uk/">PlantConnection</a>, I&#8217;ve barely had a moment to stop and think!</p>
<p>Add to this the fact that I&#8217;ve been swotting up on all things dev. I love coding in PHP and today I managed to hack out a super slender piece of functionality for an awesome *top secret* project I&#8217;m working on!</p>
<p>I basically need to pull a massive XML feed (think &gt;10MB) and process the contents into a database. So this is grand-scale processing of huge wads of XML data &#8211; something I&#8217;ve never really had to do before.</p>
<p>This may seem a bit backwards, but moving away from the XML is imperative. This project needs to be fast and agile. I don&#8217;t want to have to allocate huge chunks of memory to my whole PHP layer just to deal with a few records in various, disparate XML files.</p>
<h3>Starting with SimpleXML</h3>
<p>SimpleXML is a fantastic XML parser. Being able to turn XML into native PHP objects, arrays and variables is supremely handy. However, &#8220;Simple&#8221; is definitely the operative word! When it comes to huge amounts of XML data, <a href="http://sydphp.org/2009/05/03/consuming-xml-fast-with-php-and-xmlreader/">SimpleXML just doesn&#8217;t cut it</a>!</p>
<p>So in my search for an alternative, I came across something I&#8217;ve never used before: a little-known &#8211; and it seems little-used &#8211; PHP extension called XMLReader. My hero.</p>
<h3>XMLReader saves the day</h3>
<p>XMLReader is what is known as a pull parser&#8230; you grab what you need as the parser races through the XML at lightning speed. It streams the file into context too: reading, caching, splurging&#8230; so you can deal with the XML before the whole file is loaded into memory.</p>
<p>This is a huge advantage for massive files. As long as the XML is valid, you can run away processing elements and attributes at a blistering pace.</p>
<p>Something to remember though is that doing it this way is no good if you then try to process all of this data in memory intensive variables or objects (which is the problem with SimpleXML). You either face increasing the memory allocation to PHP (which is limited by how much RAM you have) or you find a quick way to deal with the data and move on.</p>
<p>It&#8217;s grab-and-release&#8230; no time for processing here. Any kind of re-assignment of data where volumes exceed 30,000 reps of a while-loop will suck your memory dry. So no massive strings, no huge arrays and definitely no objects!</p>
<h3>Execution Time</h3>
<p>The only issue left is execution time. Between parsing the XML file  and saving it to a local MySQL db, your script could take a lot longer than your default execution time.</p>
<p>XMLReader is pretty darn snappy and there&#8217;s really no way to improve that with digging into some C code and rebuilding the extension. The code that actually does stuff with the data from the XML is very minimal. The biggest challenge is time writing to the database.</p>
<p>I&#8217;m using MySQL. The <a href="http://chrisjohnson.blogsite.org/tag/mysqli/#mysqli_prepared">quickest method</a> of writing to a database (save reformatting the data into some kind delimited text file and using load_data_infile) is <strong>mysqli prepared statements</strong>. This greatly reduces database load and running thousands (or hundreds of thousands) of queries can be done in mere seconds.</p>
<p>However, even this will be too slow if your max_execution time is 30 seconds. But the only real way to speed MySQL up is a faster processor and improved disk-write speed (think SSDs). Those are expensive options.</p>
<p>The simplest option? Increase script execution time. If this isn&#8217;t a user page, you can be a little more relaxed on timeouts. You should be able to use the <em>set_time_limit() </em>function to increase execution time. In fact this function has a handy habit of simply extending your current execution time by the limit you set.</p>
<p><code> </code></p>
<pre>&lt;php
  while ( $xmlReader-&gt;read() ) {
    set_time_limit(2);
    // ... get data, save to DB etc ...
  }
?&gt;
</pre>
<p>This will give <em>each loop</em> an <strong>extra</strong> two seconds to execute, which should be more than enough time to parse an extra few XML nodes and execute a prepared statement one more time.</p>
<p><em>So there it is. If you&#8217;d like to see the full code or have any questions, just ask, I&#8217;d be happy to share it. A huge thanks goes to Chad Fennell for his <a href="http://blog.lib.umn.edu/fenne035/academe2.0/2007/04/speed_reading_xml_with_php_xml.html">excellent post</a> on XMLReader<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2010/04/a-busy-warm-april/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dawn Ascends! Ready Your Swords!</title>
		<link>http://flipstorm.co.uk/2009/12/dawn-ascends-ready-your-swords/</link>
		<comments>http://flipstorm.co.uk/2009/12/dawn-ascends-ready-your-swords/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 13:20:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/12/dawn-ascends-ready-your-swords/</guid>
		<description><![CDATA[
			
				
			
		
I absolutely love coding in PHP. Sometimes I get distracted by the glitz and glamour of some of the more popular languages (and their associated frameworks) &#8211; and I agree, they have their place. But PHP is in a class of its own.

The truth is that for years PHP has had an active community &#8211;...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F12%2Fdawn-ascends-ready-your-swords%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F12%2Fdawn-ascends-ready-your-swords%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I absolutely love coding in PHP. Sometimes I get distracted by the glitz and glamour of some of the more popular languages (and their associated frameworks) &#8211; and I agree, they have their place. But PHP is in a class of its own.<br />
<span id="more-47"></span><br />
The truth is that for years PHP has had an active community &#8211; and this continues to thrive. Because it&#8217;s so easy to get your hands on PHP, and get it installed, hosting is cheap, and there are no major licensing issues, uptake was fast.</p>
<p>The PHP site fast became the home of many PHP-related projects and spun off into package managers and extension managers (PEAR and PECL respectively). Literally thousands of developers write setup and &#8220;Hello World&#8221; tutorials. Loads of scripts and apps are open-source and open-licensed. No wonder it is the most popular language in use on the web!</p>
<p>However, we&#8217;re moving into a new age. A very competitive era dawns. PHP needs to stand up to the impending onslaught of faster compilers and VMs. The competition will be tough. But I believe PHP can hold its own.</p>
<p>As we move into this era of greater web app interconnectivity, PHP seems poised to reign strong. With a flock of transport layer extensions (think JSON, SOAP, XML-RPC) and authentication modules (OAuth, OpenID etc) at the ready, it looks pretty solid.</p>
<p>One thing stands at the gates, pleading nervously and gently as we give out our warcry: documentation, documentation, documentation. And for good measure&#8230; DOCUMENTATION!</p>
<p>The PHP site is littered with it. The community add to it. But when it comes to third-party tools, especially PEAR libraries and other third-party code, we&#8217;re pretty weak.</p>
<p>The area of most concern has to be client libraries for web service APIs. Some are just totally appalling: outdated, incorrect, poorly formatted or purely non-existent.</p>
<p>This is a bad show and something we need to improve upon desperately if PHP is to be the language of choice for web development in the next decade.</p>
<p>You might argue that it&#8217;s not going to disappear off the map. You may be right. But there&#8217;s no harm in making our lives easier and ensuring PHP&#8217;s safety and continued popularity by writing better documentation!</p>
<p>Come on chaps&#8230; for GLORY!</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/12/dawn-ascends-ready-your-swords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wouldn&#8217;t It Be Great If All APIs Followed RESTful Principles?</title>
		<link>http://flipstorm.co.uk/2009/12/wouldnt-it-be-great-if-all-apis-followed-restful-principles/</link>
		<comments>http://flipstorm.co.uk/2009/12/wouldnt-it-be-great-if-all-apis-followed-restful-principles/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 17:35:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/12/wouldnt-it-be-great-if-all-apis-followed-restful-principles/</guid>
		<description><![CDATA[
			
				
			
		
APIs and connecting web applications together is going to be the next challenge of the evolution of the web. The next decade should see easier-to-implement, yet more secure methods for connecting the various web applications that we use.

We&#8217;re already seeing this in simple ways: RSS, Atom Publishing, Web Hooks. But these are generally insecure. They...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F12%2Fwouldnt-it-be-great-if-all-apis-followed-restful-principles%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F12%2Fwouldnt-it-be-great-if-all-apis-followed-restful-principles%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>APIs and connecting web applications together is going to be the next challenge of the evolution of the web. The next decade should see easier-to-implement, yet more secure methods for connecting the various web applications that we use.<br />
<span id="more-49"></span><br />
We&#8217;re already seeing this in simple ways: RSS, Atom Publishing, Web Hooks. But these are generally insecure. They have been built/conceived with a set of specific goals in mind and then adapted – shoe-horned – to fit a variety of other purposes.</p>
<p>We are making progress: APIs have flooded the web. Mashups threaten to implode the universe in their brilliance. But there are still hurdles. There are still no standards.</p>
<p>REST is just a set of principles (for many things, not just web app APIs). HTTP-REST for Web Service APIs is no definition of a standard method for implementation. It doesn&#8217;t even begin to address the need for documenting or versioning APIs.</p>
<p>SOAP is better, but this is so wrapped up in corporate boggling and debate that real developers are reluctant to use it (as evidenced by <a href="http://www.programmableweb.com/apis">the fact</a> that 68% of APIs are built on RESTful principles vs 19% on SOAP) or simply want a more open standard.</p>
<p>Even if all web service APIs were RESTful, we still need a better method of standardisation and documentation (and implementation could be a lot easier with some other common features set down in stone).</p>
<p>What we need isn&#8217;t another working group to start <i>thinking</i>&nbsp;about how to solve these problems, but rather, someone to stick their neck out and <i>do something </i>to tackle these challenges.</p>
<p>We are at a turning point. The languages and processes are in place. The standards that need to be ratified have been. The scalability challenges are fading away. The core building blocks of something brilliant are there.</p>
<p>This is why I am building <b>reactor</b>. It&#8217;s aim isn&#8217;t to create a formal standard that all others must obey, but rather to encapsulate existing and future systems, boil them down to their basic standards and provide a single, simple point of entry into every API out there.</p>
<p>My vision is to make it easier for API implementers (provider developers) to standardise and document their APIs and easier for integrators (consumer developers) to consume those APIs in a standard way.<br />
<blockquote><span style="font-size: x-large;">&#8220;One API to rule them all&#8221;</span></p></blockquote>
<p>Does this sound like something you&#8217;d be interested in getting involved in? If &#8220;HELL YEAH!!&#8221; is your answer, then <a href="http://reactorapp.com/">sign up for the mailing list</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/12/wouldnt-it-be-great-if-all-apis-followed-restful-principles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Putting My DBA Hat On&#8230; Again</title>
		<link>http://flipstorm.co.uk/2009/10/putting-my-dba-hat-on-again/</link>
		<comments>http://flipstorm.co.uk/2009/10/putting-my-dba-hat-on-again/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 12:04:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/10/putting-my-dba-hat-on-again/</guid>
		<description><![CDATA[
			
				
			
		
It&#8217;s not often I have to worry too much about the minutia of database administration&#8230; well, I try not to. But this question on StackOverflow got me intrigued, so I put on my trilby.

labratmatt was having a bit of a problem with inserting data into a MySQL table with field defined as DECIMAL(3,2). Can you...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F10%2Fputting-my-dba-hat-on-again%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F10%2Fputting-my-dba-hat-on-again%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>It&#8217;s not often I have to worry too much about the minutia of database administration&#8230; well, I try not to. But this question on <a href="http://stackoverflow.com/questions/1523173">StackOverflow</a> got me intrigued, so I put on my trilby.
<div></div>
<div><a href="http://stackoverflow.com/users/24643/labratmatt">labratmatt</a> was having a bit of a problem with inserting data into a MySQL table with field defined as DECIMAL(3,2). Can you guess what his problem was? That&#8217;s right&#8230;. 9.99! How did you guess?</div>
<div></div>
<div>This has got to be one of the most popular MySQL-related Google searches. The initial problem is easy to solve&#8230; correct the presumptuous field definition.</div>
<div></div>
<div>However, the underlying problem is really why his data was being truncated, even inserted incorrectly. You may notice the same if you run MySQL (v5.0+) from a default setup on other field types: VARCHAR for example, where you set a maximum field length. When you INSERT data that is too long it simply gets truncated.</div>
<div></div>
<div>Not hugely worrying you may think, especially in development and testing phases. True. But this wasn&#8217;t enough for me, so I went on a hunt.</div>
<div></div>
<div>I found this <a href="http://dev.mysql.com/tech-resources/articles/mysql-data-integrity.html">interesting article</a> by Robin Schumacher on <span style="font-style: italic;">MySQL Data Integrity</span>.</div>
<div></div>
<div>It seems that there is a configuration variable in MySQL (v5.0+) called &#8217;sql_mode&#8217; that determines exactly how strict MySQL should be when writing data to tables. The problem is that, by default, it&#8217;s unset, which means MySQL uses its standard mode&#8230; fudged SQL.</div>
<div></div>
<div>It has a vast array of options, so <a href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html">read through and choose wisely</a>.</div>
<div></div>
<div>The default MySQL setup essentially turns all of your INSERT and UPDATE statements into INSERT/UPDATE IGNORE statements.  It is an unexpected &#8220;gotcha&#8221; for many&#8230; any self-respecting software developer would want the INSERT query to fail and for the DBMS to tell you why it failed, not automatically munge the data for you.</div>
<div></div>
<div>To achieve this, the general option to use for &#8217;sql_mode&#8217; is STRICT_ALL_TABLES&#8230; but even this has some gotchas (VARCHAR and TEXT expect only string values etc&#8230;) and may need to be combined with other options.</div>
<div></div>
<div>Of course, if you write your programs to send MySQL the correct datatypes, changing this option shouldn&#8217;t cause any problems <img src='http://flipstorm.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<div></div>
<div>The annoying thing is that I&#8217;ve only just found about this now after nearly 6 years of database development.</div>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/10/putting-my-dba-hat-on-again/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Enabling PHP extensions on a Mac</title>
		<link>http://flipstorm.co.uk/2009/01/enabling-php-extensions-on-a-mac/</link>
		<comments>http://flipstorm.co.uk/2009/01/enabling-php-extensions-on-a-mac/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 11:50:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/01/enabling-php-extensions-on-a-mac/</guid>
		<description><![CDATA[
			
				
			
		
So I hit my first attempt at using something not bundled in Apple&#8217;s &#8217;safe&#8217; PHP build for Mac OS X. I decided to implement memcached on my big project. I found out that memcached is pretty easy to set up and had that running in no time.
The problems start when trying to get PHP to...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F01%2Fenabling-php-extensions-on-a-mac%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F01%2Fenabling-php-extensions-on-a-mac%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>So I hit my first attempt at using something not bundled in Apple&#8217;s &#8217;safe&#8217; PHP build for Mac OS X. I decided to implement memcached on my big project. I found out that memcached is pretty easy to set up and had that running in no time.</p>
<p>The problems start when trying to get PHP to talk &#8216;memcached&#8217;. Windows binaries come bundled with the latest stable release of the PECL Memcache library, but Apple has decided not to bundle it into the PHP Apache module.</p>
<p>Then I got thinking: &#8220;Well what about other extensions that I might need?&#8221;. I resolved to get this working so I knew what to do for future extensions!</p>
<p>I&#8217;d read so much about how Apple has disabled extensions and there&#8217;s no way to make it work&#8230; blah blah blah&#8230; Then I found this <a href="http://af-design.com/blog/2008/10/18/memcached-with-php-on-mac-os-x/">brilliant tutorial by Erik Giberti</a>.</p>
<p>Stupidly though I didn&#8217;t follow the guidelines to the letter (I was probably distracted), but Erik provided continuing support. I Twitter&#8217;d him and he seemed more than happy to oblige. One of the good guys!</p>
<p>Upshot&#8230; I now have my first working self-compiled extension to PHP loaded and empowering my local development platform. That wasn&#8217;t so bad, was it?</p>
<p>For future reference:
<ol>
<li>Download latest stable extension from PECL</li>
<li>cd Downloads/{library_name-x.x.x}/</li>
<li>phpize</li>
<li>./configure (may need extra compiler options!)*</li>
<li>make</li>
<li>sudo make install</li>
<li>Update PHP ini with extension=(whatever the installed file is)</li>
</ol>
<p>You may need to find out what your extension_dir ini variable is (HINT: phpinfo!) as this is where the .so file will need to be. In point 7 just put the file name not the path.</p>
<p>I will no doubt be adding more libraries in the coming weeks. If I get any trouble, I will let you know. Sound off in the comments your issues with PHP extensions in Mac OS X</p>
<p>UPDATE 04/09:<br />*If you&#8217;re running 64-bit architecture (and more than likely have a 64-bit build of PHP) you should run the followingat point 4 instead:<br />MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS=&#8221;-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp&#8221; CCFLAGS=&#8221;-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe&#8221; CXXFLAGS=&#8221;-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe&#8221; LDFLAGS=&#8221;-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load&#8221; ./configure</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/01/enabling-php-extensions-on-a-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unfinished Business</title>
		<link>http://flipstorm.co.uk/2008/07/unfinished-business/</link>
		<comments>http://flipstorm.co.uk/2008/07/unfinished-business/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 23:21:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2008/07/unfinished-business/</guid>
		<description><![CDATA[
			
				
			
		
I just wanted to write a quick post (as it&#8217;s late and my Mrs wants me to come to bed) about lingering jobs. We all have them. Washing up that&#8217;s starting to grow its own ecosystem, that lightswitch that&#8217;s still hanging off the wall (but it works!)&#8230;
For me it&#8217;s a plethora of oddjobs for old...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F07%2Funfinished-business%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F07%2Funfinished-business%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I just wanted to write a quick post (as it&#8217;s late and my Mrs wants me to come to bed) about lingering jobs. We all have them. Washing up that&#8217;s starting to grow its own ecosystem, that lightswitch that&#8217;s still hanging off the wall (but it works!)&#8230;</p>
<p>For me it&#8217;s a plethora of oddjobs for old clients. In my case they come back for more, usually at the most inconvenient times. This time however it&#8217;s all my fault. In desperation I have offered to do work in the hopes that I will finally get these people off my back.</p>
<p>It&#8217;s not that they&#8217;re begging me to do things, but more for my own sanity. I guess I have some mild form of <abbr title="Obsessive Compulsive Disorder">OCD</abbr>. I just want things tidy. Is that so bad?</p>
<p>I find that eventually there are so many things on my mind that I can do none of them. So I suffer silently in a corner somewhere waiting for the light to come on. Ultimately it&#8217;s a crippling fear of failure that grips me most. Of course it is that very fear that breeds itself.</p>
<p>I&#8217;m sure you understand&#8230;</p>
<p>So follow my changing mental state on Twitter. You&#8217;ll catch some of my mini rants and you may even witness my entire nervous breakdown (reality TV eat your heart out!)</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2008/07/unfinished-business/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When &#8220;Can I&#8230;&#8221; or &#8220;I&#8217;m going to&#8230;&#8221; becomes &#8220;I want you to&#8230;&#8221;</title>
		<link>http://flipstorm.co.uk/2008/06/when-can-i-or-im-going-to-becomes-i-want-you-to/</link>
		<comments>http://flipstorm.co.uk/2008/06/when-can-i-or-im-going-to-becomes-i-want-you-to/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 18:10:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2008/06/when-can-i-or-im-going-to-becomes-i-want-you-to/</guid>
		<description><![CDATA[
			
				
			
		
Dear Audrie,

Today I have been mostly making &#8220;final tweaks&#8221; to a fairly simple project that I&#8217;ve been working on. It&#8217;s a content site with a Flash gallery.

It&#8217;s quite easy, but we&#8217;re not dealing directly with the client. We&#8217;re dealing with a go-between art studio who produced the design. They&#8217;ve basically done the whole rebranding and...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F06%2Fwhen-can-i-or-im-going-to-becomes-i-want-you-to%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F06%2Fwhen-can-i-or-im-going-to-becomes-i-want-you-to%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Dear Audrie,
<div></div>
<div>Today I have been mostly making &#8220;final tweaks&#8221; to a fairly simple project that I&#8217;ve been working on. It&#8217;s a content site with a Flash gallery.</div>
<div></div>
<div>It&#8217;s quite easy, but we&#8217;re not dealing directly with the client. We&#8217;re dealing with a go-between art studio who produced the design. They&#8217;ve basically done the whole rebranding and needed someone to put the site together.</div>
<div></div>
<div>This sounds great from a programmer&#8217;s point of view: No designing, just programming&#8230; more like this please.</div>
<div></div>
<div>There is a major problem with this though. The design studio tend to get their own &#8220;ideas&#8221; of how the copy should go and what goes where. All within their power? &#8216;Yes&#8217; you might say.</div>
<div></div>
<div>However, it becomes a little silly when as the programmer you are providing a product to a client that allows them to update their website <span class="Apple-style-span" style="font-style: italic;">themselves</span> and you end up making all the changes.</div>
<div></div>
<div>I&#8217;m not going to name drop because that may enlighten the client a little too much for the studio&#8217;s liking. It may also highlight how this particular studio stays in business.</div>
<div></div>
<div>I know this sounds like I&#8217;m just getting at the studio in question, but rather I&#8217;m trying to portray just how difficult a programmers life tends to be. You sign up for one thing and do 101 other tasks.</div>
<div></div>
<div>In my experience the following rules apply:</div>
<div></div>
<div>Is it possible to&#8230; means &#8230; Do that&#8230;</div>
<div>Can I&#8230;                   means &#8230; Do that&#8230;</div>
<div>I&#8217;m going to&#8230;       means &#8230; Do that&#8230;</div>
<div></div>
<div>And so I find that instead of one person to answer to, I have hundreds all vying desperately for my time. And all increasing in their requests.</div>
<div></div>
<div>Why can&#8217;t people tell you all of the things that need doing and just let you get on with it? I much prefer that as opposed to this &#8216;do this and get back to me&#8217; approach.</div>
<div></div>
<div>Ah well.</div>
<div></div>
<div>Until next time!</div>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2008/06/when-can-i-or-im-going-to-becomes-i-want-you-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone 2.0 Apps Could Alter The Way We Engage</title>
		<link>http://flipstorm.co.uk/2008/06/iphone-2-0-apps-could-alter-the-way-we-engage/</link>
		<comments>http://flipstorm.co.uk/2008/06/iphone-2-0-apps-could-alter-the-way-we-engage/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 21:33:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2008/06/iphone-2-0-apps-could-alter-the-way-we-engage/</guid>
		<description><![CDATA[
			
				
			
		
Dear Judy,
Since the Jobs-note last Monday (9th), a lot of media attention has been focussed on the App Store and the coming features of iPhone 2.0.
Sadly, orders of magnitude more media attention has been focussed on the 3G iPhone &#8211; the highly anticipated, but hugely underwhelming revelation that it is.
The iPhone&#8217;s new little (big) brother...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F06%2Fiphone-2-0-apps-could-alter-the-way-we-engage%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F06%2Fiphone-2-0-apps-could-alter-the-way-we-engage%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Dear Judy,</p>
<p>Since the Jobs-note last Monday (9th), a lot of media attention has been focussed on the App Store and the coming features of iPhone 2.0.</p>
<p>Sadly, orders of magnitude more media attention has been focussed on the 3G iPhone &#8211; the highly anticipated, but hugely underwhelming revelation that it is.</p>
<p>The iPhone&#8217;s new little (big) brother does address some of the more than glaring ommissions that the original was left wanting. And in my view it does finally justify the hefty price tag. But even this has been reduced! To the shock of all!</p>
<p>I shall definitely be getting a 3G iPhone as soon as my existing contract expires (especially as my handset is slowly falling apart).</p>
<p>There are still some issues that I have with the iPhone. These are more correctable with firmware updates than hardware changes, and save for any major improvements in carrier networks&#8217; hardware I don&#8217;t see that there&#8217;s much need for adding to the tech specs of the 3G iPhone anytime soon.</p>
<p>In my opinion, most gadget &#8216;freaks&#8217; want the best of all their gizmos in one &#8211; the Buddhist (as i like to call them): one-with-everything types. This was (and still is) true of me&#8230; to a point. I&#8217;ve come to realise that it&#8217;s not always best. So I care little about the quality of the camera in the iPhone. It&#8217;s sufficient to know that it has a camera.</p>
<p>Little touches are more annoying: like the lack of a light, which I always find no end of uses for, besides for taking photographs. Or a non-removable battery &#8211; what the hell? These are about the only physical changes that would make the iPhone my perfect gadget (besides any changes to improve battery life and reduce cost of manufacture whilst improving end-user experience).</p>
<p>The real focus of this post though is the facility that we as end users are all being equipped with: a touch-screen interface. Here MultiTouch isn&#8217;t such a big deal. Arguably it does provide a few more natural ways to interact with the operating environment, but it still has its challenges.</p>
<p>However, just having an all-purpose piece of touch-screen kit on the open market (and at a good price) presents some potentially new and exciting ways for us to interact with our other gizmos.</p>
<p>Many are already exploring the possibilities of controlling other devices using the iPhone and iPod Touch. What I would really like to see are practical applications for the majority, not just experimental things that are restricted to specific enterprises. I&#8217;m talking about controlling household appliances from my iPhone/iPod Touch.</p>
<p>I realise that it would require that any device that you want to control with your super-phone would need to be connected to the IP network and configured accordingly. But if manufacturers of these devices can be persuaded to see the potential, there&#8217;s all sorts of wonderful possibilities.</p>
<p>Aside of my finger-marked status symbol becoming a universal remote control, it could provide interfaces and readouts for numerous appliances.</p>
<p>The real beauty of it is that a touch screen is not limited by what it can display. There&#8217;s no fixed set of commands. You don&#8217;t have to provide overlays to provide the right input. It&#8217;s all customisable and application-specific. It&#8217;s intuitive and easy to learn.</p>
<p>The iPhone is the start of many similar devices making their way into our homes. If we can come up with some useful applications it may be the only one we will need!</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2008/06/iphone-2-0-apps-could-alter-the-way-we-engage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Friend Connect &#8211; the answer to a programmers prayers?</title>
		<link>http://flipstorm.co.uk/2008/05/google-friend-connect-the-answer-to-a-programmers-prayers/</link>
		<comments>http://flipstorm.co.uk/2008/05/google-friend-connect-the-answer-to-a-programmers-prayers/#comments</comments>
		<pubDate>Thu, 22 May 2008 09:31:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2008/05/google-friend-connect-the-answer-to-a-programmers-prayers/</guid>
		<description><![CDATA[
			
				
			
		
Dear Tanya,Google Friend Connect was officially announced last week. It has since come to light that this is no ordinary social network. In fact in the truest sense of the term, it isn&#8217;t a social network at all!
Friend Connect is a social tool. It seems the lovely people at the big G have been working...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F05%2Fgoogle-friend-connect-the-answer-to-a-programmers-prayers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F05%2Fgoogle-friend-connect-the-answer-to-a-programmers-prayers%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Dear Tanya,<br /><strong></strong><br /><strong>Google Friend Connect</strong> was <a href="http://www.businesswire.com/portal/site/home/permalink/?ndmViewId=news_view&amp;newsId=20080512005773&amp;newsLang=en">officially announced</a> last week. It has since come to light that this is no ordinary social network. In fact in the truest sense of the term, it isn&#8217;t a social network at all!</p>
<p>Friend Connect is a social tool. It seems the lovely people at the big G have been working their socks off finding a way to help us all connect a lot more easily. This fantastic tool is still only in preview, but from the fairly sketchy <a href="http://www.google.com/friendconnect/">detail</a> proffered by Google, it seems that even now it has a very wide appeal.</p>
<p>In order to place a perspective on what Friend Connect allows you to do, imagine: you are the only software developer on the planet. You, and you alone, have developed each and every web site in the world and you had to build each site from scratch.</p>
<p>So that means no code sharing. No data sharing. This means for every user who visits a web site that requires authentication they will have to register and verify their details. Then they will have to maintain them. This is the kind of data duplication that would make a data analyst&#8217;s butt clench.</p>
<p>By now you would have won plenty of awards&#8230; at the very least you would be long overdue some much-needed shut-eye.</p>
<p>The solution would seem obvious: extract the common data structures (in this case the individual member&#8217;s details) into a central pool that each site can get access to. That is what Friend Connect does!</p>
<p>You can close your mouth now.</p>
<p>As well as being a social connector, it is also a social enabler. What I mean is that a site that is not a social network (DamnILoveChocoDip.net for example) and never intends to be can still benefit from the viral nature of social networking. The social aspect of visiting a web site and sharing your experience is made even easier.</p>
<p>Yes as the modern social surfer you no longer have to re-register the same details you saved with the previous web site into this one. Simply log in with the same credentials et voila you&#8217;re in. Your data isn&#8217;t copied or duplicated. You keep the one central piece up to date and Friend Connect does the rest (as they say).</p>
<p>Beautiful! Adding to this is the entire social aspect. In theory (because I haven&#8217;t had a chance to test it yet) you can see who of your friends are registered with this site. They will see when you do things on the site (that you explicitly allow).</p>
<p>So all of a sudden, for the majority of web sites we visit, we can now see who else is there. It&#8217;s like all of the other patrons visiting this virtual shop/bar/resource centre become visible.</p>
<p>You could actually &#8220;bump&#8221; into someone who you know from another web site. As you seem to share a passion for at least two things, you might pluck up the courage to strike up a conversation, perhaps opening with an oft-hounded &#8216;chat-up line&#8217;.</p>
<p>It would be the equivalent of walking around the town, bumping into that cute girl in two different shops, suggesting you go for coffee, then quickly cut to 3 years later and you&#8217;re story is being told in some horrible romantic comedy starring Tom Hanks.</p>
<p>There are some questions on security and integration, all of which I&#8217;m sure will be answered in time. If you&#8217;re a programmer like me, I&#8217;m sure you will see the benefits though. I&#8217;m drooling over some of the possibilities. Least of all not having to build a registration engine every time I build a site. A close second is the speed with which people will discover a new web site.</p>
<p>Also in this orgy of social debauchery is OpenSocial. Now application developers have an opportunity for their applications to make it onto millions of web sites, not just the few major and accessible social networks.</p>
<p>The issue at the moment is that not all networks are supported, and indeed not all will want to jump on the bandwagon. But when things become this easy for users, where do you think the majority will go?</p>
<p>So then the key lessons from all of this are&#8230; build a site that can make use of this centralised platform! If you&#8217;re building an application, build it for OpenSocial as the chances are it will lead the way in terms of mass integration.</p>
<p>Is this a sign that Facebook may slip into Microsoft&#8217;s online &#8220;I just don&#8217;t get it&#8221; pit? <a href="http://www.marketingvox.com/myspace-officially-joins-googles-opensocial-facebook-not-invited-034207/">I wonder why that could happen</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2008/05/google-friend-connect-the-answer-to-a-programmers-prayers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone, iPod Touch and why Mobile Internet is the Future</title>
		<link>http://flipstorm.co.uk/2008/04/iphone-ipod-touch-and-why-mobile-internet-is-the-future/</link>
		<comments>http://flipstorm.co.uk/2008/04/iphone-ipod-touch-and-why-mobile-internet-is-the-future/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 22:12:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2008/04/iphone-ipod-touch-and-why-mobile-internet-is-the-future/</guid>
		<description><![CDATA[
			
				
			
		
Dear Geraldine,
Yes I am begging for a verbal beating from all the nay-sayers&#8230; but Apple have pushed the boat out with full featured web browsing on the mobile platform.
Many non-converts will say that it&#8217;s missing some vital features &#8211; and they are right. Without Java and Flash on either version of Apple&#8217;s uber status symbol,...]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F04%2Fiphone-ipod-touch-and-why-mobile-internet-is-the-future%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2008%2F04%2Fiphone-ipod-touch-and-why-mobile-internet-is-the-future%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Dear Geraldine,</p>
<p>Yes I am begging for a verbal beating from all the nay-sayers&#8230; but Apple have pushed the boat out with full featured web browsing on the mobile platform.</p>
<p>Many non-converts will say that it&#8217;s missing some vital features &#8211; and they are right. Without Java and Flash on either version of Apple&#8217;s uber status symbol, they is missing out on some serious functionality and usability.</p>
<p>Let us not forget though that this is merely the first incarnation of these oft-heckled devices. And many of these issues can be resolved by a &#8220;simple&#8221; software update.</p>
<p>Why am I so bold? You would be right in thinking I sold out. Yes I bought an iPod Touch. Happy with my current cellular device I couldn&#8217;t justify the expense of the iPhone without the features I now expect from a modern handset &#8211; especially one with so much (dare I say?) &#8220;PDA-like&#8221; potential! &#8211; <a href="http://www.msnbc.msn.com/id/23958465/">What should the next iPhone have?</a></p>
<p>I&#8217;m no analyst, marketer or even a prophet, but Apple have started setting trends again. With the full browsing experience, that will now doubt get even more feature-complete as time goes on and public demand grows, we can now browse the existing web &#8211; <strong>not having to create a whole new layer of the web to cater for our mobile nature</strong>.</p>
<p>This will annoy some to say the least. To all those who have spent their resources on extracting their existing online presence into something that can be neatly accessible to mobile users I say under my breath: &#8220;Waste of time&#8221;. See <a href="http://www.staygolinks.com/mobile-web-ubiquitous-web.htm">Mobile Web, Ubiquitous Web &#8211; it&#8217;s going to happen</a> if you don&#8217;t believe me.</p>
<p>Yes the .mobi domains and re-creation of applications sans Javascript are now not worth pursuing! Why should we when our existing online presence can be viewed almost perfectly on these modern devices?</p>
<p>Forget demographics, usage stats and the like&#8230; <strong>the iPhone has now set the base standard for how we want to browse the web on the go</strong>. Users will demand it. Manufacturers will play to them. Developers must go with the flow!</p>
<p>As a web developer, I have a keen interest in this shift in how users interact with the online community. With the dawn of these devices, our <strong>mobile-enabled web applications can now be part of our existing application development model</strong>. Requests made to our existing systems will automatically adjust the content to suit the platform.</p>
<p>The creators of Facebook have managed to churn out a modest working example of this for the iPhone and iPod Touch.</p>
<p>Google too are constantly pushing forward with their developments for mobile users. But they have development teams and funding. Although many (including me) are worried about the advertising model that Google has pioneered as to whether it will be maintainable in this new era of web browsing &#8211; it is already showing signs of cracking. But this is a topic for further discussion.</p>
<p>What about Joe Small Business Owner &#8211; how will he get his web site to be truly accessible in this new arena? You could argue that he doesn&#8217;t need to worry because of how these devices manage the current web.</p>
<p>It will become more evident in time though that the web applications that run natively on the platform the user prefers will be the ones that are more favoured and better used.</p>
<p>In order to deliver this in a manageable and cost-effective solution we really need a product that gives its administrators the power to decide what aspects of their online presence will be available to their mobile visitors.</p>
<p>This power doesn&#8217;t rest with them at present and thus is forcing a chasm in the mobile web where services either do not exist or are so simple they would be better off if they didn&#8217;t exist!</p>
<p>As we move forward into this almost-virgin territory are any of us truly ready?</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2008/04/iphone-ipod-touch-and-why-mobile-internet-is-the-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
