<?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>OkCool?</title>
	<atom:link href="http://www.ok-cool.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ok-cool.com</link>
	<description>OkCool is the blog for the development team of Simpleweb. This blog is all about sharing the experiences, lessons and stories we have from working daily in the web industry.</description>
	<lastBuildDate>Fri, 23 Jul 2010 14:29:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RatZilla</title>
		<link>http://www.ok-cool.com/posts/read/440-ratzilla/</link>
		<comments>http://www.ok-cool.com/posts/read/440-ratzilla/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 14:29:26 +0000</pubDate>
		<dc:creator>Ferenc</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=440</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p></p><div id="attachment_441" class="wp-caption aligncenter" style="width: 300px">
	<a href="http://www.ok-cool.com/wp-content/uploads/2010/07/ratzilla.png"><img src="http://www.ok-cool.com/wp-content/uploads/2010/07/ratzilla-300x294.png" alt="" title="RatZilla" width="300" height="294" class="size-medium wp-image-441" /></a>
	<p class="wp-caption-text">RatZilla</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/440-ratzilla/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quick whizz around the Simpleweb HQ</title>
		<link>http://www.ok-cool.com/posts/read/434-quick-whizz-around-the-simpleweb-hq/</link>
		<comments>http://www.ok-cool.com/posts/read/434-quick-whizz-around-the-simpleweb-hq/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 08:45:25 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=434</guid>
		<description><![CDATA[We recently moved to a great new office near Spike Island, the SS Great Britain and plenty of water. The space has worked out brilliantly for us, here&#8217;s a quick look at what we&#8217;ve done with it so far. Still a bit of painting to do!

]]></description>
			<content:encoded><![CDATA[<p></p><p>We recently moved to a great new office near Spike Island, the SS Great Britain and plenty of water. The space has worked out brilliantly for us, here&#8217;s a quick look at what we&#8217;ve done with it so far. Still a bit of painting to do!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="470" height="330" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/e_aIp24yaTE&amp;hl=en_US&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="470" height="330" src="http://www.youtube.com/v/e_aIp24yaTE&amp;hl=en_US&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/434-quick-whizz-around-the-simpleweb-hq/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Add static FBML tab to your FaceBook page</title>
		<link>http://www.ok-cool.com/posts/read/398-add-static-fbml-tab-to-your-facebook-page/</link>
		<comments>http://www.ok-cool.com/posts/read/398-add-static-fbml-tab-to-your-facebook-page/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 15:15:28 +0000</pubDate>
		<dc:creator>Ferenc</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=398</guid>
		<description><![CDATA[This post will take a scenario which might be useful for small businesses and shows a possible solution.
Keywords: FBML, FBJS, profile tab, fan page tab, landing page

FBML stands for FaceBook Markup Language. It is a modified subset of HTML.
FaceBook has two main types of environments: FBML and iframe. These environments require different way of programming [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><em>This post will take a scenario which might be useful for small businesses and shows a possible solution.</p>
<p>Keywords: FBML, FBJS, profile tab, fan page tab, landing page<br />
</em></p>
<p>FBML stands for <a href="http://wiki.developers.facebook.com/index.php/FBML">FaceBook Markup Language</a>. It is a modified subset of HTML.<br />
FaceBook has two main types of environments: <em>FBML</em> and <em>iframe</em>. These environments require different way of programming and offer different services, so poorly speaking your <em>FBML</em> solution will not work in an <em>iframe</em> environment and vice versa.</p>
<p>FBJS stands for <a href="http://wiki.developers.facebook.com/index.php/FBJS">FaceBook JavaScript</a>, which is a JavaScript-originated language specific to FaceBook. FBJS will work only within FaceBook. JavaScript and its derivatives like jQuery will not work inside and FBML environment.</p>
<p><em>This post focusing on FBML environment only.</em></p>
<h3>Scenario</h3>
<p> &#8216;Our client would like to add a new tab to their fan page. This tab has to be the default tab when someone navigates to the page. The tab should contain a form with a JavaScript validation. Use FBML environment.&#8217;</p>
<p>Follow the quoted instructions to get to a point where you need to insert your markup to finish with your new shiny tab.</p>
<blockquote><p>[ Extract of: "HOW TO: Build a Facebook Landing Page for Your Business" ( source: http://mashable.com/2010/02/22/build-facebook-landing-page/ ) ]</p>
<p>The tabs at the top of your Facebook Fan Page are apps.</p>
<p>The app you need for your custom page is called “Static FBML,” located here:</p>
<p>http://www.facebook.com/apps/application.php?id=4949752878</p>
<p>Add it to your Page.</p>
<p>It is essentially a blank canvas where you can add whatever content you want, including custom graphics and links via standard HTML.</p>
<p>The app can function in two ways: As a set of boxes, or as one dedicated profile tab.</p>
<p>Once you’re in tab mode, go back to your settings and click the “Edit” link under the Static FBML app. This opens a standard text field where you can add your content.</p>
<p>“Box Title” will be the name of your tab.</p>
<p>The main text field is where your content goes, and you can add standard HTML.</p>
<p>Make it the default landing page: head back over to your page settings and edit your “Wall Settings.” There is an option for “Default Landing Tab for Everyone Else.” From that menu, select your new tab.</p>
</blockquote>
<h3>Example of a static FBML markup with FBJS validator</h3>
<p>For privacy reasons FaceBook restricts access to certain user-data in FBML environment, like e-mail, date of birth.<br />
If we need these data we have to ask the user to type it in manually in this specific environment.</p>
<p>Form validation using FBJS:</p>
<pre>
&lt;script&gt;
&lt;!--

function checkForm(form)
{
	 var params=form.serialize();
 	 var errorFlag = false;

     	 var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	 var address = params.email;
	 var emailError = true;
	 if(reg.test(address) == false) {
	   emailError = true;
	 }
	 else
	 {
		emailError = false;
	 }

	if ( params.email == "" || params.email == null || emailError )
	{
		document.getElementById('ulEmailError').setStyle('display','block');
		document.getElementById('ulEmailError').setStyle('width','311px');
		document.getElementById('ulEmailError').setStyle('margin','0 0 0 104px');
		document.getElementById('ulEmailError').setStyle('color','white');
		document.getElementById('ulEmailError').setStyle('backgroundColor','#CC3333');
		document.getElementById('ulEmailError').setStyle('clear','both');
		document.getElementById('emailError').setTextValue('Please supply your valid email address');
		errorFlag = true;
	}
	else
	{
		document.getElementById('ulEmailError').setStyle('display','none');
		document.getElementById('emailError').setTextValue('');
	}

	if ( errorFlag )
	{
		return false;
	}
	else
	{
		return true;
	}

}
//-->
&lt;/script&gt;

&lt;form name="entryform" id="entryform" action="http://www.simpleweb.co.uk/" onsubmit="return checkForm(this)" method="post"&gt;
	&lt;fieldset id="personalDetails"&gt;
		&lt;h3&gt;Personal details&lt;/h3&gt;
		&lt;div id="email-label"&gt;
			&lt;label for="email"&gt;Email address&lt;/label&gt;&lt;br /&gt;
			&lt;input type="text" value="" id="email" name="email"&gt;
			&lt;ul id="ulEmailError"&gt;&lt;li id="emailError"&gt;&lt;/li&gt;&lt;/ul&gt;
		&lt;/div&gt;
	&lt;/fieldset&gt;
	&lt;div&gt;
		&lt;input type="image" name="image" title="Enter" src="http://www.simpleweb.co.uk/images/btn-submit.png" /&gt;
	&lt;/div&gt;&lt;!-- /.action --&gt;
&lt;/form&gt;
&lt;fb:share-button href="http://tinyurl.com/2e8jzfm" /&gt;
</pre>
<h3>Notes on the source code</h3>
<p>Styles have to be added using FBJS, as we hide the empty error containers by display:none.</p>
<p>A powerful tool can be a share button on your tab:<br />
<code><br />
&lt;fb:share-button href="http://tinyurl.com/2e8jzfm" /&gt;<br />
</code><br />
We used a URL shortener to avoid <a href="http://bugs.developers.facebook.com/show_bug.cgi?id=6967">this known bug</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/398-add-static-fbml-tab-to-your-facebook-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeBSD, ZFS and Jails for incremental backups and instant failure recovery</title>
		<link>http://www.ok-cool.com/posts/read/409-freebsd-zfs-and-jails-for-incremental-backups-and-instant-failure-recovery/</link>
		<comments>http://www.ok-cool.com/posts/read/409-freebsd-zfs-and-jails-for-incremental-backups-and-instant-failure-recovery/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 15:01:36 +0000</pubDate>
		<dc:creator>Luke</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=409</guid>
		<description><![CDATA[Here at Simpleweb we&#8217;ve got a rack of commodity servers in The Bunker up in Reading.
Each server just has a single, standard SATA disk. But, the mean time between failure (MTBF) on a SATA disk is at best a year or two. (Believe me, I&#8217;ve learnt this the hard way.)
So how do we protect against [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Here at Simpleweb we&#8217;ve got a rack of commodity servers in <a href="http://www.thebunker.net">The Bunker</a> up in Reading.</p>
<p>Each server just has a single, standard SATA disk. But, the mean time between failure (MTBF) on a SATA disk is at best a year or two. (Believe me, I&#8217;ve learnt this the hard way.)<span id="more-409"></span></p>
<p>So how do we protect against inevitable disk or hardware failure?</p>
<p>Enter FreeBSD and ZFS &#8212; FreeBSD is a rock solid UNIX OS which is reasonably familiar to those who are used to using Linux (certainly compared to Solaris), and ZFS is Sun&#8217;s incredibly awesome filesystem which allows you to take near-instantaneous snapshots of filesystems and <a href="http://docs.sun.com/app/docs/doc/819-5461/gbchx?l=en&amp;n=1&amp;a=view">send binary differentials between any two snapshots from one server to another</a>.</p>
<p>One other thing to mention is that ZFS snapshots play nicely with FreeBSD jails. The FreeBSD jails system provides &#8220;OS-level virtualisation&#8221;. What that means is you get a full FreeBSD system image running &#8220;within&#8221; a host FreeBSD environment. However, there&#8217;s no <a href="http://www.ok-cool.com/posts/read/362-were-moving-out-of-the-cloud/">dirty virtualisation</a> going on here. Because the &#8220;virtualisation&#8221; is done within a single FreeBSD kernel, you get the same raw performance and stability of FreeBSD on the metal, just with additional logical separation.</p>
<p>The really big win is gained when combining Jails with ZFS snapshots. Simply by putting each jail in its own ZFS filesystem, you can instantaneously snapshot an entire jail (we have jails running Apache, MySQL, Twisted, Solr, you can put any application in one) and send *only the parts of the filesystem that have changed since the last snapshot* over to whichever server is backing up your files.</p>
<p>Now, our backup architecture in the rack is such that the machines are (logically) connected in a ring, so that each machine backs up to the &#8220;next&#8221; machine in the ring. This means we can cope with the failure of any machine by quickly spinning up the jails on the failed machine from a backup which is less than an hour old.</p>
<p>MySQL is a special case because in order to get a consistent point-in-time snapshot of a MySQL data file, you need to first run FLUSH TABLES WITH READ LOCK on that database. No problem! This is built into our backup script.</p>
<p>Incidentally, this is a simplified version of the technique I use in my <a href="http://www.hybrid-cluster.com/">scalable redundant web cluster</a> ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/409-freebsd-zfs-and-jails-for-incremental-backups-and-instant-failure-recovery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Twisted Tricks</title>
		<link>http://www.ok-cool.com/posts/read/388-python-twisted-tricks/</link>
		<comments>http://www.ok-cool.com/posts/read/388-python-twisted-tricks/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 14:21:19 +0000</pubDate>
		<dc:creator>Luke</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=388</guid>
		<description><![CDATA[Here at Simpleweb we use Python and the lovely event-driven network framework Twisted for some core applications which power our social media searching suite MediaGenius.

One of my favourite Twisted patterns is the combination of the  powerful twisted.internet.defer.Deferred with collections.defaultdict.

Start with the right imports:
from collections import defaultdict
from twisted.internet.defer import Deferred

Now, a defaultdict allows you to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Here at Simpleweb we use <a href="http://www.python.org/">Python</a> and the lovely event-driven network framework <a href="http://www.twistedmatrix.com/">Twisted</a> for some core applications which power our social media searching suite <a href="http://www.mediageniusapp.com/">MediaGenius</a>.</p>
<div>
<p>One of my favourite Twisted patterns is the combination of the  powerful twisted.internet.defer.Deferred with collections.defaultdict.</p>
<p><span id="more-388"></span></p>
<p>Start with the right imports:</p>
<pre>from collections import defaultdict
from twisted.internet.defer import Deferred
</pre>
<p>Now, a defaultdict allows you to say:</p>
<pre>a = defaultdict(lambda: 0)
a[10] += 1
print a[10] # =&gt; 1
</pre>
<p>That is, you pass it a function (<tt>lambda: 0</tt> is just the function that  returns zero every time you call it) which returns the default value for implicitly initialised values, and then you can access the keys of the  mapping and get this default value for a key which doesn’t yet exist, instead of a KeyError.</p>
<p>Those more familiar with PHP might notice that <tt>defaultdict(lambda: '')</tt> is the default <tt>array()</tt> behaviour if you put strings in it, and <tt>defaultdict(lambda: 0)</tt> if you put numbers (think <tt>$foo['a'] += 1</tt> or <tt>$foo['b'] .= 'bar'</tt> for undefined &#8216;a&#8217; and &#8216;b&#8217;, although these are likely to throw a notice).</p>
<p>Combining this with deferreds allows an extraordinarily powerful  mechanism to attach event handlers to arbitrary events which may not  have happened yet. Here’s a contrived example where we want to fire an event handler when a filesystem gets mounted (recall, in Python a class  constructor is just a callable which returns an instance of that class,  which is why we don’t wrap Deferred in a lambda):</p>
<pre>on_mount = defaultdict(Deferred)

# ... I want to do something if filesystem abc ever gets mounted...

def hooray(arg):
	print "My favourite filesystem got mounted - %s" % str(arg)

on_mount['abc'].addCallback(hooray)
</pre>
<p>Now, we can do this without ever knowing that ‘abc’ might get mounted  (the filesystem name might come from the network), or pre-populating  the dictionary at all.</p>
<p>Later on in the code, we might actually mount ‘abc’:</p>
<pre>def mount_handler(filesystem):
	on_mount[filesystem].callback(True)
	on_mount[filesystem] = Deferred() # reset the deferred
</pre>
<p>The beauty of it is that any number of event handlers (zero or more)  can be attached to on_mount, with no additional house-keeping. All the  callbacks attached to the deferred will get fired when the filesystem  gets mounted.</p>
<p>The only thing to notice is that we have to reset the deferred if  this event might be triggered again, as deferreds are one-shot. If it’s a  one-off event, you can omit this, and then you get the additional nice  behaviour that if you addCallback to a deferred after it’s been fired,  you get an immediate callback with None as the argument, to indicate  that the deferred has already run (from which you can deduce that the  filesystem is already mounted).</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/388-python-twisted-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elastic Search</title>
		<link>http://www.ok-cool.com/posts/read/380-elastic-search/</link>
		<comments>http://www.ok-cool.com/posts/read/380-elastic-search/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 09:56:10 +0000</pubDate>
		<dc:creator>Christos Constantinou</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=380</guid>
		<description><![CDATA[We have recently been looking at various technologies to scale one of our most resource hungry search applications. We have gone over quite a few options including Cassandra, Hadoop and Distributed Solr. One that quite got my attention was &#8220;Elastic Search&#8221; which was amazingly easy to use. No schema definitions, automatic node discovery, very simple [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>We have recently been looking at various technologies to scale one of our most resource hungry search applications. We have gone over quite a few options including Cassandra, Hadoop and Distributed Solr. One that quite got my attention was &#8220;Elastic Search&#8221; which was amazingly easy to use. No schema definitions, automatic node discovery, very simple REST API and very good documentation on its website. This is an excerpt:</p>
<blockquote><p>So, we build a web site or an application and want to add search to it, and then it hits us: <strong>getting search working is hard</strong>. We want our search solution to be <strong>fast</strong>, we want a <strong>painless setup</strong> and a completely <strong>free search schema</strong>, we want to be able to index data simply using <strong>JSON over HTTP</strong>, we want our search server to be <strong>always available</strong>, we want to be able to start with one machine and <strong>scale to hundreds</strong>, we want <strong>real-time search</strong>, we want simple <strong>multi-tenancy</strong>, and we want a solution that is <strong>built for the cloud</strong>.</p>
<p><strong>&#8220;This should be easier&#8221;</strong>, we declared, <strong>&#8220;and cool, bonsai cool&#8221;</strong>.</p></blockquote>
<p>And it is exactly as it says! After I started using it I immediately became a fan boy. However, after fiddling with it for a few days, the crashes started. This is a very new product, it has just been launched in February 2010 and currently, there are only 2 other contributors in its Github page other than its main developer kimchy.</p>
<p>The other thing is that the architecture of the system is heavily based on network gossip for data partitioning, both for reads and writes &#8211; at least more than other solutions like Cassandra, which is based on Dynamo. I&#8217;m not sure if heavy network usage goes hand in hand with high availability, correct me if I&#8217;m wrong but I always had the impression that the network is the most expensive resource to use.</p>
<p>Overall it seems like an amazing product to play with, but if you have paying customers then you don&#8217;t want to develop on buggy products unless you have the time and expertise to dive into the code and fix them.</p>
<p>For more, visit <a title="Elastic Search" href="http://www.elasticsearch.com/" target="_blank">http://www.elasticsearch.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/380-elastic-search/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cheeky captcha</title>
		<link>http://www.ok-cool.com/posts/read/374-cheeky-captcha/</link>
		<comments>http://www.ok-cool.com/posts/read/374-cheeky-captcha/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 08:56:21 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=374</guid>
		<description><![CDATA[We  love it when we get an amusing captcha&#8230;. perhaps it&#8217;s just our childish sense of humour!

]]></description>
			<content:encoded><![CDATA[<p></p><p>We  love it when we get an amusing captcha&#8230;. perhaps it&#8217;s just our childish sense of humour!</p>
<p><a href="http://www.ok-cool.com/wp-content/uploads/2010/06/DNS-Made-Easy_12766003498002.png"><img class="alignnone size-full wp-image-377" title="DNS Made Easy_1276600349800" src="http://www.ok-cool.com/wp-content/uploads/2010/06/DNS-Made-Easy_12766003498002.png" alt="" width="510" height="422" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/374-cheeky-captcha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our new servers have been installed</title>
		<link>http://www.ok-cool.com/posts/read/369-our-new-servers-have-been-installed/</link>
		<comments>http://www.ok-cool.com/posts/read/369-our-new-servers-have-been-installed/#comments</comments>
		<pubDate>Thu, 27 May 2010 16:09:01 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=369</guid>
		<description><![CDATA[I had a fun trip out of the office yesterday to go and install our new servers in to their new home in &#8216;The Bunker&#8216;.
We have so far had excellent help and support both from The Bunker and Cogent our IP Transit provider. Not only during the sales and setup process but also with our [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I had a fun trip out of the office yesterday to go and install our new servers in to their new home in &#8216;<a href="http://www.thebunker.net/">The Bunker</a>&#8216;.</p>
<p>We have so far had excellent help and support both from The Bunker and Cogent our IP Transit provider. Not only during the sales and setup process but also with our first support query. Within a few minutes of submitting a ticket they had resolved the issue.</p>
<p>I took <a href="http://twitter.com/sbunker">Simon</a> from <a href="http://www.sambaconsulting.com/">Samba Consulting</a> along to help me install the gear as he has far more experience racking equipment. He said he normally spends a good 4 hours talking to transit providers while they get all the necessary config info together. It was a doddle with Cogent, this is what they gave us:</p>
<p>(I&#8217;ve blanked out all the IPS and our OrderID but you get the idea)</p>
<p>*** Here are the IPs addresses and config parameters :<br />
- Order ID / Technical reference number : xxxxxx<br />
- Connected address block (LnkNet) : 000.000.000.000/30<br />
- Cogent Router port IP :  000.000.000.000 255.255.255.252<br />
- Simpleweb Router port IP:  000.000.000.000<br />
- Ip Block /27 assigned to your connection :  000.000.000.000/27<br />
- Static route configured on Cogent router : 000.000.000.000  255.255.255.224  &#8220;next-hop&#8221; 000.000.000.000</p>
<p>The good thing about racking gear with Simon is that he&#8217;s as anal as me about cabling.</p>
<p><a href="http://www.ok-cool.com/wp-content/uploads/2010/05/IMG_0163.jpg"><img class="alignnone size-medium wp-image-370" title="Media Genius servers" src="http://www.ok-cool.com/wp-content/uploads/2010/05/IMG_0163-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Generally, moving to our own equipment has been a joy. Here&#8217;s a few things we&#8217;ve learnt though:</p>
<ul>
<li>Find out exactly what the Data Center is supplying. It&#8217;s wrong to assume they will be doing the routing for you as we had to provide our own Layer 3 device.</li>
<li>Not all switches are created equal! If you need Layer 3 rather than Layer 2, the cost difference is significant.</li>
<li>Make sure you connect on the correct duplexing and negotiation. We initially got throughput problems where cogent were on fixed 100mbit full duplex and we were on auto half duplex.</li>
<li>Racking always takes longer than you think, no matter how well it goes. Things went very smoothly with us and it still took 3 hours to get all the gear in and connected up.</li>
<li>Make sure you ask what sort of power will be provided to you. Will there be a PDU at all? Will it be IEC connectors or normal 3 pin sockets?</li>
</ul>
<p>We&#8217;re looking forward to delivering a much better and faster service for Media Genius and the soon to be released Cloudmanaged.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/369-our-new-servers-have-been-installed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sexy summer time with LoveHoney.co.uk</title>
		<link>http://www.ok-cool.com/posts/read/366-sexy-summer-time-with-lovehoney-co-uk/</link>
		<comments>http://www.ok-cool.com/posts/read/366-sexy-summer-time-with-lovehoney-co-uk/#comments</comments>
		<pubDate>Tue, 25 May 2010 09:10:05 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com/?p=366</guid>
		<description><![CDATA[We&#8217;ve just launched a competition for one of our favourite clients LoveHoney.co.uk
They&#8217;re giving away tickets to the most popular UK festivals this summer.
Our Link2Win platform that promotes sharing on social networks is powering the competition. The premise is quite simple, you enter, share and then anyone that enters from your page will give you more [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>We&#8217;ve just launched a competition for one of our favourite clients LoveHoney.co.uk</p>
<p>They&#8217;re giving away tickets to the most popular UK festivals this summer.</p>
<p>Our Link2Win platform that promotes sharing on social networks is powering the competition. The premise is quite simple, you enter, share and then anyone that enters from your page will give you more entries in the prize draw.</p>
<p><a href="http://www.summeroflovehoney.co.uk/tholder">Check it out! Oh, and help me win ;)</a></p>
<p><a href="http://www.summeroflovehoney.co.uk/tholder"><img class="alignnone size-medium wp-image-367" title="Win the Ultimate Festival Experience with the Summer of LoveHoney!_1274778293855" src="http://www.ok-cool.com/wp-content/uploads/2010/05/Win-the-Ultimate-Festival-Experience-with-the-Summer-of-LoveHoney_1274778293855-300x215.png" alt="" width="300" height="215" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/366-sexy-summer-time-with-lovehoney-co-uk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>We&#8217;re moving out of the cloud!</title>
		<link>http://www.ok-cool.com/posts/read/362-were-moving-out-of-the-cloud/</link>
		<comments>http://www.ok-cool.com/posts/read/362-were-moving-out-of-the-cloud/#comments</comments>
		<pubDate>Sat, 22 May 2010 13:07:33 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[OKCOOL]]></category>

		<guid isPermaLink="false">http://www.ok-cool.com.php5-10.dfw1-2.websitetestlink.com/?p=362</guid>
		<description><![CDATA[At the end of last year we invested heavily in to moving our hosting to the cloud with EC2 and Rightscale. Not a &#8216;cheap&#8217; option by any stretch but we hoped it would provide a really good foundation to all of the exciting stuff we have planned for SWM and Media Genius.
Unfortunately, it has been [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>At the end of last year we invested heavily in to moving our hosting to the cloud with EC2 and Rightscale. Not a &#8216;cheap&#8217; option by any stretch but we hoped it would provide a really good foundation to all of the exciting stuff we have planned for SWM and Media Genius.</p>
<p>Unfortunately, it has been nothing but a disaster. Poor performance, poor reliability and huge cost. There will be a more in depth post about our cloud experience to follow.</p>
<p>We&#8217;ve now taken the decision to move to our own hardware based in the UK. We just took delivery of 5 new 1u servers built by the very helpful people at <a href="http://sentralsystems.com/">http://sentralsystems.com/</a></p>
<p>Eventually, these servers will be running a cassandra/solr cluster for us. For now though, they&#8217;ll be running our SWM site and <a href="http://www.mediageniusapp.com">Media Genius</a> product.</p>
<p>Servers are specified as follows:</p>
<p>SENTRAL PRODUCT NAME: SuperMicro<br />
CHASSIS/CASE: 1U 14&#8243; Depth chassis with 260W PSU + RAILS<br />
CPU(s): Intel E5300 (2*2.6GHz 800FSB 2MB cache)<br />
MEMORY: 4GB DDR II 667 (2*2048)<br />
HD: 2TB SATA II Western Digital 7200 32MB cache</p>
<p>We&#8217;re moving the servers to the new rack space next week and keeping one of them back in our rack in the office. We figured it&#8217;s good to have a development machine internally with identical hardware.</p>
<p>Here&#8217;s a pic of Luke getting them setup, he&#8217;ll do a more in depth post in the future on how we are setting them up from a software/backup point of view.</p>
<p><a href="http://www.ok-cool.com.php5-10.dfw1-2.websitetestlink.com/wp-content/uploads/2010/05/IMG_0152.jpg"><img class="alignnone size-medium wp-image-363" title="lukeservers" src="http://www.ok-cool.com.php5-10.dfw1-2.websitetestlink.com/wp-content/uploads/2010/05/IMG_0152-225x300.jpg" alt="Luke installing new servers" width="225" height="300" /></a></p>
<p>Despite what he might say, Luke is never happier than when he&#8217;s shut in a small room with linux servers to play with!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ok-cool.com/posts/read/362-were-moving-out-of-the-cloud/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
