<?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; advice</title>
	<atom:link href="http://flipstorm.co.uk/tag/advice/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>Say &#8216;No&#8217; to Expensive SEO</title>
		<link>http://flipstorm.co.uk/2010/03/say-no-to-expensive-seo/</link>
		<comments>http://flipstorm.co.uk/2010/03/say-no-to-expensive-seo/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 12:34:32 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://flipstorm.co.uk/?p=190</guid>
		<description><![CDATA[
			
				
			
		
[tweetmeme]I was recently invited to the NEC to give a 20-minute seminar to those gathered for the annual PROMOTA trade show.

It was an interesting day as I was also called in as a &#8220;Business Expert&#8221; to provide free, hands-on advice to attendees.
The only question everyone asks me at these kind of shows is: How can...]]></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%2F03%2Fsay-no-to-expensive-seo%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2010%2F03%2Fsay-no-to-expensive-seo%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>[tweetmeme]I was recently invited to the NEC to give a 20-minute seminar to those gathered for the annual <a href="http://show.promota.co.uk/">PROMOTA trade show</a>.<br />
<span id="more-190"></span><br />
It was an interesting day as I was also called in as a &#8220;Business Expert&#8221; to provide free, hands-on advice to attendees.</p>
<p>The only question everyone asks me at these kind of shows is: How can I get to the top of Google? My answer: <b>stop trying</b>!</p>
<p>It may sound a little simple and stupid, but in most cases, the people asking have neither the time or budgets to make it worthwhile.</p>
<p>If you&#8217;re a small business with the goal of being at the top spot (or close to it) in Google, in certain cases <b>you will need more than a couple of hundred pounds every month</b> to get there!</p>
<p>In other cases you might not need a thing: Google &#8220;professional connections&#8221; and look for www.xon.cc&#8230; that&#8217;s a client of mine who hasn&#8217;t paid a penny for SEO!</p>
<p>So what&#8217;s the solution? Well, there&#8217;s no easy way to say this&#8230; be content with the position you&#8217;re in.</p>
<p>I&#8217;m not saying that being number one won&#8217;t bring you more sales&#8230; statistics show that it does. But don&#8217;t let your desire for the podium allow you to become disappointed in your lacklustre performance.</p>
<p><strong>Remember, enterprising small businesses have made a decent living way before Google and will continue to do so.</strong></p>
<p>If you can find the time to work on improving your online presence yourself (or with resources within your organisation), do it. There&#8217;s <a href="http://boagworld.com/site-content/successful-company-blogging">plenty of advice online</a> to guide you in the right direction and many small companies are succeeding with this.</p>
<p>No matter what position you have on Google, sales aren&#8217;t guaranteed &#8211; after all, people only buy what they need/want and being at the top of a search is no guarantee of quality or competitiveness.</p>
<p>Also, being at the top of a results page for a particular Google search is still no guarantee that you&#8217;ll be seen or that users will click through!</p>
<p>It&#8217;s like having your company name on a slither of paper at the top of a pile of other names on similar slithers, in a box with a label on it, stowed away in an old library basement archives section &#8211; sat there&#8230; waiting in earnest for someone to dig it up.</p>
<p>Even if you managed to get the archivist to put you on top, there&#8217;s still no guarantee that anyone will see your label or that they&#8217;ll do anything with it when they do!</p>
<p><small>Image: <a href="http://www.flickr.com/photos/62521600@N00/2275849413">Andersen library archives</a> &copy; <a href="http://www.flickr.com/photos/dancypants/">dancypants</a></small></p>
<p>&#8212;</p>
<p><small>UPDATE 11.03.2010:</small><br />
Some interesting related articles were published today that you might find useful. I feel they back up my point quite well. Check out Nick Pettit&#8217;s <a href="http://almost.done21.com/2010/03/seo-is-a-terrible-idea/">SEO is a terrible idea</a> and Paul Boag&#8217;s response to the question <a href="http://boagworld.com/marketing/personalised-google">Does Google Personalised Listings Affect Your Ranking?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2010/03/say-no-to-expensive-seo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Learned Something Yesterday</title>
		<link>http://flipstorm.co.uk/2009/11/i-learned-something-yesterday/</link>
		<comments>http://flipstorm.co.uk/2009/11/i-learned-something-yesterday/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 23:04:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/11/i-learned-something-yesterday/</guid>
		<description><![CDATA[
			
				
			
		
I met three ace guys yesterday: Sean Leigh, Jeremy Harding and Alan Mann. They are all techy/web entrepreneurs and are making big bucks out of big ideas. They know some crazy people in the domaining field.
It turns out that there a lot of wealthy people doing domaining. I found out yesterday that there are some...]]></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%2F11%2Fi-learned-something-yesterday%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F11%2Fi-learned-something-yesterday%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I met three ace guys yesterday: <a href="http://www.seanleigh.co.uk/">Sean Leigh</a>, Jeremy Harding and Alan Mann. They are all techy/web entrepreneurs and are making big bucks out of big ideas. They know some crazy people in the domaining field.</p>
<p>It turns out that there a lot of wealthy people doing domaining. I found out yesterday that there are some people out there that own thousands of domains with no websites attached to them! Craziness! They obviously have a lot of money.</p>
<p>The reason I met these great guys though is because they found me and&nbsp;this brings me to a little tip: <b>Get your name out there!</b></p>
<p><b></b>It turns out they found me through a service I signed up for and hardly use, Elance. The data from Elance was probably shared on a network of other services, which they stumbled across. My profile on this service is sketchy at best. But it was enough of a lead for them to do more digging.</p>
<p>Because I&#8217;m an active participant on a number of blogs, forums, Twitter etc. they managed to fill in the gaps pretty quick.</p>
<p>So if you want to be found, get active in your community! A word of warning though: Be prepared for a grilling (i.e. bring something amazing along).</p>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/11/i-learned-something-yesterday/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>Simple Usability Testing</title>
		<link>http://flipstorm.co.uk/2009/09/simple-usability-testing/</link>
		<comments>http://flipstorm.co.uk/2009/09/simple-usability-testing/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 11:25:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/09/simple-usability-testing/</guid>
		<description><![CDATA[
			
				
			
		

Silverback by ClearLeft is a wonderful usability testing application that makes it dead simple to record and manage your test sessions.

If like me though you can&#8217;t afford to shell out $50 right now, here&#8217;s a way to do some bargain basement usability recording.

All you will need is an Intel Macbook/Macbook Pro running Mac OS 10.6....]]></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%2F09%2Fsimple-usability-testing%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F09%2Fsimple-usability-testing%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<div>
<div><a href="http://silverbackapp.com/">Silverback</a> by <a href="http://clearleft.com/">ClearLeft</a> is a wonderful usability testing application that makes it dead simple to record and manage your test sessions.</div>
<div></div>
<div>If like me though you can&#8217;t afford to shell out $50 right now, here&#8217;s a way to do some bargain basement usability recording.</div>
<div></div>
<div>All you will need is an Intel Macbook/Macbook Pro running Mac OS 10.6. This comes with Quicktime X, which now has screen, audio and movie recording built — so it can record what&#8217;s happening on the screen, video from a webcam and audio through your built-in microphone.</div>
<div></div>
<div>Ok so it&#8217;s not quite as polished as Silverback, but it works. Unfortunately, because you can&#8217;t start both the movie recording and the screen capturing at the same time, they will be out of sync for a few seconds.</div>
<div></div>
<div>If you have some video editing software that allows you to match them up and overlay (iMovie doesn&#8217;t do this yet), a quick bit of editing will go a long way when you need to review those test sessions!</div>
<div></div>
<div>The way I do it is:</div>
<div>
<ol>
<li>Start Movie recording (this is the webcam)</li>
<li>Minimise the live preview</li>
<li>Start Screen recording</li>
</ol>
<div>At the end of the session:</div>
<ol>
<li>Stop Screen recording</li>
<li>Stop Movie recording</li>
</ol>
<div>If anyone knows of a way to get the two to start at the same time, that would be great (an AppleScript would probably do it, but I&#8217;m a virgin at it). Also, can you recommend any good cheap/free video editing tools that can handle movie on movie overlays?</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/09/simple-usability-testing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dropbox on Ubuntu Server</title>
		<link>http://flipstorm.co.uk/2009/08/dropbox-on-ubuntu-server/</link>
		<comments>http://flipstorm.co.uk/2009/08/dropbox-on-ubuntu-server/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 22:42:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/08/dropbox-on-ubuntu-server/</guid>
		<description><![CDATA[
			
				
			
		
In our office, we have a small custom, headless 32-bit PC running Ubuntu Server 8.10 (Intrepid Ibex). It&#8217;s ideally suited as our testing platform web server, file server, SVN server&#8230; well you get the picture.

I&#8217;ve been trying to set up a VPN through a Linksys-Cisco router we purchased (WRVS4400N), but have hit one snag after...]]></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%2F08%2Fdropbox-on-ubuntu-server%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F08%2Fdropbox-on-ubuntu-server%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>In our office, we have a small custom, headless 32-bit PC running Ubuntu Server 8.10 (Intrepid Ibex). It&#8217;s ideally suited as our testing platform web server, file server, SVN server&#8230; well you get the picture.
<div></div>
<div>I&#8217;ve been trying to set up a VPN through a Linksys-Cisco router we purchased (WRVS4400N), but have hit one snag after another (thanks to Cisco&#8217;s non-support of anything other than Windows).</div>
<div></div>
<div>Then it hit me: use Dropbox!</div>
<div></div>
<div>A few free Dropbox accounts is all we will need for now between us and it creates instant versioning and backups of all of our critical files &#8211; something we weren&#8217;t doing properly up until now &#8211; plus allowing us to interact with the file system locally rather than over the network.</div>
<div></div>
<div>A super idea!</div>
<div></div>
<div>Problem 1: Dropbox is not officially supported for command-line-only Linux distros. Thankfully though some nice people have put together a <a href="http://wiki.getdropbox.com/TipsAndTricks/TextBasedLinuxInstall">few handy instructions and scripts</a> in order to make it work.</div>
<div></div>
<div>Problem 2: This installed Dropbox in a location that I didn&#8217;t want. Our server has a partitioned drive for security reasons. So all of our day-to-day files exist on one partition and the system files reside on the main partition. Dropbox was installed in the user folder I used when performing the install, which is in the system partition.</div>
<div></div>
<div>Without wanting to mess around too much trying to remove the current Dropbox install and then fiddle with Python code (which I have absolutely no experience with), I needed a quick method for getting some of our working files into the Dropbox folder in the system partition.</div>
<div></div>
<div>It turns out this is where Linux is super handy! Using standard <b>symlinks </b>to the folders in question was the perfect solution. Dropbox sees these as actual folders and synchronises across the link &#8211; up and down&#8230; meaning the files stay on the right partition, but now appear as part of the shared folder I wanted them in!</div>
<div></div>
<div>Win!</div>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/08/dropbox-on-ubuntu-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Overcoming Professional Prejudice</title>
		<link>http://flipstorm.co.uk/2009/04/overcoming-professional-prejudice/</link>
		<comments>http://flipstorm.co.uk/2009/04/overcoming-professional-prejudice/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 17:38:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[rambling]]></category>
		<category><![CDATA[services]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/04/overcoming-professional-prejudice/</guid>
		<description><![CDATA[
			
				
			
		
I&#8217;ve just been on the phone with a potential client. From our brief chat it&#8217;s clear that they have experienced problems with &#8220;web&#8221; people before now. This has affected their view of our services at FlipStorm, even though they know nothing about us.

So, how do you overcome that kind of prejudice? You could turn 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%2F04%2Fovercoming-professional-prejudice%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F04%2Fovercoming-professional-prejudice%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;ve just been on the phone with a potential client. From our brief chat it&#8217;s clear that they have experienced problems with &#8220;web&#8221; people before now. This has affected their view of our services at FlipStorm, even though they know nothing about us.
<div></div>
<div>So, how do you overcome that kind of prejudice? You could turn to the salesman&#8217;s pitch&#8230; tell them all the guff they either already know or don&#8217;t want to know and spin it to make it sound like you&#8217;re the best. If they buy in, they&#8217;ve got to spend some more money and they might just get lucky.</div>
<div></div>
<div>If they are smart though (and <b>your client is always smart</b>, no matter how stupid they are!), they won&#8217;t go for any of that. So you need to toss them a bone. Prove to them that you are prepared to go that extra mile. Give them something for nothing&#8230; a favour!</div>
<div></div>
<div>Some of you may see this as flaring up the <a href="http://www.carsonified.com/fowd/new-competition-design-the-fowd-2009-holding-slide">spec work debate</a>, but before I start a urinating competition, I&#8217;d like to mention that there are absolutely no limits on how far you take this; it&#8217;s entirely up to you, if you think it will achieve the desired result without costing you too much. If you <b>make it clear</b> to the client that this is a gimme and that any work as follow-up from that will be payable then you&#8217;re in no danger of giving false impressions or cheapening your services.</div>
<div></div>
<div>Quite the opposite, in fact; it <i>adds </i>value to your services. It could be a deal-maker and something so simple to you that it takes you all of 10 minutes. Those 10 minutes are definitely worth a new customer!</div>
<div></div>
<div>Ah but, I hear you say, will that be a quality client? That depends largely on how strict you are with your freebies. Too much and clients get used to it, expect and eventually demand it.</div>
<div></div>
<div>We will have to wait and see if it pays off in this case, but I have found it to be genuinely worthwhile.</div>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/04/overcoming-professional-prejudice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 Steps to Reach the G-Spot</title>
		<link>http://flipstorm.co.uk/2009/04/7-steps-to-reach-the-g-spot/</link>
		<comments>http://flipstorm.co.uk/2009/04/7-steps-to-reach-the-g-spot/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 12:19:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/04/7-steps-to-reach-the-g-spot/</guid>
		<description><![CDATA[
			
				
			
		
By G-Spot I mean the first page of search engine results in Google. A couple of months ago I sent out this email to a friend of mine who asked me to analyse his website (Damian Brown Photography).

It&#8217;s quite a specific analysis of his site, but it can be used as a basic framework for...]]></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%2F04%2F7-steps-to-reach-the-g-spot%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F04%2F7-steps-to-reach-the-g-spot%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>By G-Spot I mean the <b>first page of search engine results in Google</b>. A couple of months ago I sent out this email to a friend of mine who asked me to analyse his website (<a href="http://www.damianbrownphotography.com/">Damian Brown Photography</a>).
<div></div>
<div>It&#8217;s quite a specific analysis of his site, but it can be used as a basic framework for most sites out there:<br />
<blockquote><b>First off, page titles (as i call it, the </b><br />This is pretty key. Most search engines use this as the heading for the search result listing, the link that you click to go to the desired site after performing a search. This is one of the primary places a search engine will look for keywords. However, it shouldn&#8217;t be too long as it will get clipped/truncated and it should make some sort of sense. I know this may seem obvious, but there should only be one <title></title> tag on the page and it should always be inside the <head></head> section of the page.</p>
<p><b>META tags:</b><br />Right, to cut through all of the confusion, the only ones you really really really need are the description and the content-type ones. The description should be different for each page and should be no more than one intelligible paragraph about the contents of that page and if possible not just a paragraph that is already written on the page.</p>
<p><meta name="description" content="Birmingham's best freelance wedding and portrait photographer, Damian Brown, shows off his portfolio and writes about his work" /></p>
<p>The content-type is a little more confusing, but suffice to say as long as it looks like this on every page of <b>your</b>site, you&#8217;re ok.</p>
<p><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></p></blockquote>
<p>Of course, on other sites, this needs to be considered carefully. Web browsers use a number of methods for determining the correct content-type of the document and if they&#8217;re mismatched, you may end up with the wrong one and certain characters will come out with extra glyphs, especially if you don&#8217;t use ANSII code for special characters (e.g. &123;).<br />
<blockquote>The rest of the META tags aren&#8217;t overly used and in the case of the keywords one, ignored altogether. Any META tags should appear inside the <head> [in here] </head> tags.</p>
<p><b>Valid HTML:</b><br />This is extremely important to search engines. Clean code means it&#8217;s easier for them to read your site and suggests that it will render well in the browser, which you&#8217;ll score brownie points for. Code that isn&#8217;t where it should be will confuse the search engine algorithms and they may even give up indexing your site completely until it&#8217;s sorted.</p>
<p>This is a difficult one to achieve as there&#8217;s a lot that goes into this. It comes down to having a good basic design and sticking to it. One thing I will say: make sure there is no code or content floating around in between the closing  tag and the opening <body> tag or after the closing </body> tag (except for the closing  tag).</p>
<p><b>Headings<br />
<h1></h1>
<p> through<br />
<h6></h6>
<p>:</b><br />Headings are also really important. If you think about the basics of print for a minute (this is where all this comes from anyway): When you open a book it has an index giving you a quick glance at all of the chapter headings. If you go to a chapter, you see its title in large, bold text at the top of the page. Then the content relevant to that subject is placed underneath and is generally organised by subheadings and paragraphs. This is so we can follow the train of thought without getting lost and easily pick up where we were if we do.</p>
<p>If we apply this principal to the web, it becomes very natural, but also meets some requirements of the search engines. So having a main heading on each page (the<br />
<h1></h1>
<p> tag, there should only be one of these per page) that re-iterates the title of the page and then structuring any text into paragraphs of single thoughts, just like you learned in English lessons, will go a long way to improving not only the ease of reading from a visitors point of view, but also the search engines.</p>
<p><b>Flash:</b><br />For the most part search engines can&#8217;t read Flash content. A search engine basically sees what you would see if you did a &#8220;View Source&#8221; in your web browser. They use the text they see to determine what the page is about, how relevant and up to date it is etc etc. If that text is in Flash it won&#8217;t see it. If there&#8217;s any major bulk of text in a Flash file that plays on your site, it needs to come out and sit on the page somehow.</p>
<p>I don&#8217;t think you&#8217;ve got this problem as most of the flash you&#8217;re using seems to be image galleries, which is fine for the most part. There are alternatives to Flash which could improve your site in this regard, but it&#8217;s not essential.</p>
<p><b>Links:</b><br />Firstly navigational links on your site should be clear and steady. By this I mean that as you move from one page to the next, they should stay in the same place. They can also serve as a visual cue as to what page the visitor is on, so links that disappear when you&#8217;re on that page can be a little confusing.</p>
<p>Visitors should be able to get to almost any page from any page. So rather than having to leave a trail of breadcrumbs, they can simply see where they were when they read that really interesting part/saw that really good photo.</p>
<p>Secondly, links from other websites. Getting other sites linking to your website is another key from a search engines point of view. But rather than getting hundreds or thousands of links from websites all over, it&#8217;s better to have even just a few that are more relevant to your field of expertise. And the more natural the link looks on the other persons/company&#8217;s website, the greater the chance that it will improve your ranking. E.g.</p>
<p><a href="http://www.damianbrownphotography.co.uk/">Click Here!</a> is not quite as useful to Google as <a href="http://www.damianbrownphotography.co.uk/">Birmingham photgrapher portfolio</a> or something similar. Can you see why?</p>
<p>If you can encourage people to link to your site or write an article about you or something like that, chances are it will be more natural.</p>
<p><b>Others:</b><br />Some search engines use a simple datafile to help identify pages on your site. It&#8217;s called a sitemap XML file. This is a bit complicated and techie, but setting one of these up can complement a well-delivered website and make sure that you tick all the boxes from the search engine&#8217;s point of view.</p>
<p>Also content freshness is an area to consider. Although I have found that this doesn&#8217;t have to be too dramatic, some changes every now and then help to keep your site on the map so to speak.</p></blockquote>
<p>The points here are pretty obvious if you&#8217;ve been doing SEO for a while. But they need to be monitored to make sure you continue to comply.
<div></div>
<div>Of course, if you&#8217;re site is built on a well-written CMS or other standards-compliant platform/framework/application &#8211; such as <b>EDDyâ&bdquo;¢</b>, <a href="http://flipstorm.co.uk/">FlipStorm&#8217;s web application development platform</a> &#8211; it will tackle most of these steps for you, enforce some others, and encourage you to respect the rest.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/04/7-steps-to-reach-the-g-spot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Web Site Advice</title>
		<link>http://flipstorm.co.uk/2009/01/free-web-site-advice/</link>
		<comments>http://flipstorm.co.uk/2009/01/free-web-site-advice/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 22:12:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://erika.flipstorm.co.uk/flipstorm/2009/01/free-web-site-advice/</guid>
		<description><![CDATA[
			
				
			
		
The web developer and design community is growing super large and because of that it has been an endless source of advice and inspiration to me. As a large thank you gesture I want to offer my professional advice and support in any areas I can.

It may not be worth much in some cases (hence...]]></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%2Ffree-web-site-advice%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fflipstorm.co.uk%2F2009%2F01%2Ffree-web-site-advice%2F&amp;source=flipstorm&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>The web developer and design community is growing super large and because of that it has been an endless source of advice and inspiration to me. As a large thank you gesture I want to offer my professional advice and support in any areas I can.
<div></div>
<div>It may not be worth much in some cases (hence why it&#8217;s going to be free), but hopefully it will help. I also want to use it to challenge myself with some new stuff that I&#8217;m just not doing enough of!</div>
<div></div>
<div>All designers and developers face challenges. I have faced plenty. I haven&#8217;t blogged about all of them yet (nor do I intend to!), but some of the things I&#8217;ve accomplished and overcome may be useful to others. I think that sharing that information is a must to the continuing evolution of software development. I also believe that it should be a free service.</div>
<div></div>
<div>So please feel free to leave comments or send me messages somehow (Twitter, email etc.)  asking about anything you would like help with. I will take on almost any challenge related to software &#8211; particularly focussed on PHP, Flex, HTML, CSS, Javascript, AIR, RIAs and related topics, but don&#8217;t feel tied down to just these ones. Ask away!</div>
]]></content:encoded>
			<wfw:commentRss>http://flipstorm.co.uk/2009/01/free-web-site-advice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
