<?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>chemicaloliver &#187; Internet</title>
	<atom:link href="http://chemicaloliver.net/category/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://chemicaloliver.net</link>
	<description>experimentation, criticism and geekiness</description>
	<lastBuildDate>Fri, 03 Feb 2012 18:21:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Installing PHP 5.4 in Ubuntu</title>
		<link>http://chemicaloliver.net/internet/installing-php-5-4-in-ubuntu/</link>
		<comments>http://chemicaloliver.net/internet/installing-php-5-4-in-ubuntu/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 23:46:02 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=1223</guid>
		<description><![CDATA[I&#8217;ve been excitedly awaiting some of the new features found in PHP 5.4, in particular array notation and file upload progress monitoring so I decided to try and install PHP 5.4 on Ubuntu. Fortunately there is a repository of prebuilt packages for Ubuntu 11.04 (Natty Narwhal) at  http://apt.damz.org/ I recommend using a VM so you don&#8217;t mess up [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been excitedly awaiting some of the new features found in PHP 5.4, in particular array notation and file upload progress monitoring so I decided to try and install PHP 5.4 on Ubuntu. Fortunately there is a repository of prebuilt packages for Ubuntu 11.04 (Natty Narwhal) at  <a href="http://apt.damz.org/">http://apt.damz.org/</a></p>
<p>I recommend using a VM so you don&#8217;t mess up any stable PHP install &#8211; I only tested this on Ubuntu 11.04 as that&#8217;s what was recommended and I already had a VM with it installed.</p>
<h2>Installation</h2>
<p>Installation is a very simple matter of adding the gpg key:</p>
<pre class="brush: bash; title: ; notranslate">
curl http://apt.damz.org/key.gpg | sudo apt-key add -
</pre>
<p>Adding the repository to /etc/apt/sources.list:</p>
<pre class="brush: bash; title: ; notranslate">
deb http://apt.damz.org/ubuntu natty php54
</pre>
<p>Then installing as normal</p>
<pre class="brush: bash; title: ; notranslate">
sudo apt-get install php5 libapache2-mod-php5
</pre>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/installing-php-5-4-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Codeigniter Unit Testing with Simpletest and PHP 5.3</title>
		<link>http://chemicaloliver.net/internet/codeigniter-unit-testing-with-simpletest-and-php-5-3/</link>
		<comments>http://chemicaloliver.net/internet/codeigniter-unit-testing-with-simpletest-and-php-5-3/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 22:03:04 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[simpletest]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=1212</guid>
		<description><![CDATA[I&#8217;m a regular user of codeigniter-simpletest developed by Eric Barnes however I ran into a number of issues when attempting to run some features under PHP5.3, this was due to using an old version of Simpletest. I have now updated this and had my pull request accepted and merged into the main repo so that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a regular user of <a title="Github: Codeigniter-Simpletest" href="http://github.com/ericbarnes/codeigniter-simpletest">codeigniter-simpletest</a> developed by Eric Barnes however I ran into a number of issues when attempting to run some features under PHP5.3, this was due to using an old version of Simpletest. I have now updated this and had my pull request accepted and merged into the main repo so that it now uses the most recent versions (1.1alpha3).</p>
<p>There is however one important change to note which will stop old tests working, that is the way that test classes define a label, these are optional so this only applies if you use them in your project. The name of the test is now passed through the simpletest constructor otherwise the default is to use the classname of the test.</p>
<h3>Before</h3>
<pre class="brush: php; title: ; notranslate">
class test_users_model extends CodeIgniterUnitTestCase
{
	public function __construct()
	{
		parent::__construct();

		$this-&gt;UnitTestCase('Users Model');

		$this-&gt;load-&gt;model('users/users_model');
	}

etc...
</pre>
<h3>After</h3>
<pre class="brush: php; title: ; notranslate">
class test_users_model extends CodeIgniterUnitTestCase
{
	public function __construct()
	{
		parent::__construct('Users Model');

		$this-&gt;load-&gt;model('users/users_model');
	}
etc...
</pre>
<p>I&#8217;m also working on integration with CI systems, Jenkins in particular based on this rather cool presentation: <a href="http://www.cs.northwestern.edu/academics/courses/394/ci-server-setup/orange-ci-setup-2011.pdf" target="_blank">Setting up a Continuous Integration Server for Ubuntu with Codeigniter and Github</a></p>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/codeigniter-unit-testing-with-simpletest-and-php-5-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling web sockets on Opera Mobile</title>
		<link>http://chemicaloliver.net/internet/enabling-web-sockets-on-opera-mobile/</link>
		<comments>http://chemicaloliver.net/internet/enabling-web-sockets-on-opera-mobile/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 20:57:21 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[opera mobile]]></category>
		<category><![CDATA[web sockets]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=1090</guid>
		<description><![CDATA[A little project I&#8217;m working on requires the use or websockets in Opera Mobile, I&#8217;d read they were supported but when I tried it just threw an exception, then I discovered you have to enable them in the config: Browse to opera:config in opera mobile Open the User Prefs section Check the enable websockets box [...]]]></description>
			<content:encoded><![CDATA[<p>A little project I&#8217;m working on requires the use or websockets in Opera Mobile, I&#8217;d read they were supported but when I tried it just threw an exception, then I discovered you have to enable them in the config:</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/09/config-1.png"><img class="size-medium wp-image-1091 aligncenter" title="Opera Mobile User Prefs Screenshot" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/09/config-1-180x300.png" alt="" width="180" height="300" /></a></p>
<ol>
<li>Browse to opera:config in opera mobile</li>
<li>Open the User Prefs section</li>
<li>Check the enable websockets box</li>
<li>Scroll right to the bottom of the page and select save</li>
<li>Enjoy much websockety goodness</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/enabling-web-sockets-on-opera-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>getUserMedia(), the device API and the state of the webcam in browser using javascript and html5 video</title>
		<link>http://chemicaloliver.net/internet/getusermedia-the-new-api-webcam-in-browser-using-javascript-and-html5-video/</link>
		<comments>http://chemicaloliver.net/internet/getusermedia-the-new-api-webcam-in-browser-using-javascript-and-html5-video/#comments</comments>
		<pubDate>Sat, 27 Aug 2011 19:03:42 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[getUserMedia]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opera mobile]]></category>
		<category><![CDATA[webcam]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=977</guid>
		<description><![CDATA[Since first considering web camera applications during my MSc thesis I&#8217;ve be fascinated by different uses and application of webcams on the web. I believe outside of skype they are a very under utilised tool for both communication and interaction and despite their long existence I believe there is still a very long way to go in what they [...]]]></description>
			<content:encoded><![CDATA[<p>Since first considering web camera applications during my MSc thesis I&#8217;ve be fascinated by different uses and application of webcams on the web. I believe outside of skype they are a very under utilised tool for both communication and interaction and despite their long existence I believe there is still a very long way to go in what they can do.</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/08/cam.png"><img class="size-medium wp-image-1034 aligncenter" title="Android camera live view in a webpage using getUserMedia" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/08/cam-180x300.png" alt="Android camera live view in a webpage getUserMedia" width="180" height="300" /></a></p>
<p>In this post I intend to summarise recent developments surrounding using a webcam within web applications and go on to discuss current implementations available for using a webcam with javascript.</p>
<p><span id="more-977"></span></p>
<h2>Buzz about html5 &lt;device&gt;</h2>
<p>Last year at Full Frontal 2010 Raul Rouget gave a talk entitled &#8216;Batshit crazy stuff you&#8217;ll be able to do in browsers&#8217;, he basically stole the show with a series of demos of webgl, audio api and file api developments in firefox, however the parts I was most intrigued by involved the use of the now defunct device API &#8211; using a webcam or other similar input devices directly in the browser.</p>
<p style="text-align: center;"><img class="size-medium wp-image-978 aligncenter" title="Batshit Crazy" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/06/5176011116_a0442dbb60-300x196.jpg" alt="" width="300" height="196" /></p>
<p>Later that evening I sat in may hotel room, after a good amount of beer, and attempted to compile a patched version firefox from source. After downloading the whole lot over a tethered mobile connection and merging in some <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=camera">patches attached to a bug report</a> I got a binary which crashed on startup. I tried again several times later and still didn&#8217;t get the desired result, having seen no other blog posts about it I assume very few other people got it to work!</p>
<h2>getUserMedia()</h2>
<p>Now, 8 months on, the former HTML5 &lt;device&gt; API has been depreciated in favour of a<a title="whatwg - Video conferencing and peer-to-peer communication" href="http://www.whatwg.org/specs/web-apps/current-work/complete/video-conferencing-and-peer-to-peer-communication.html"> new API based around getUserMedia()</a> this is part of a larger API for peer to peer, in browser  video communication. It allows html5 &lt;video&gt; elements to have their source defined as a stream from a device:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;!DOCTYPE html&gt;

&lt;h1&gt;Simple web camera display demo&lt;/h1&gt;
&lt;video autoplay&gt;&lt;/video&gt;

&lt;script&gt;
//Grab the elements
var video = document.getElementsByTagName('video')[0],
heading = document.getElementsByTagName('h1')[0];

//test for getUserMedia
if(navigator.getUserMedia) {
  //setup callbacks
  navigator.getUserMedia('video', successCallback, errorCallback);

  //if everything if good then set the source of the video element to the mediastream
  function successCallback( stream ) {
    video.src = stream;
  }

  //If everything isn't ok then say so
  function errorCallback( error ) {
    heading.textContent =
        &quot;An error occurred: [CODE &quot; + error.code + &quot;]&quot;;
  }
}
else {
  //show no support for getUserMedia
  heading.textContent =
      &quot;Native web camera streaming is not supported in this browser!&quot;;
}
&lt;/script&gt;
&lt;/html&gt;
</pre>
<p><em>Code sample taken from <a href="http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview">http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview</a> and commented by me</em></p>
<p>That code produces this output when viewed in an opera mobile development build:</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/08/operaex.png"><img class="size-medium wp-image-1043 aligncenter" title="Opera getUserMedia Example" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/08/operaex-180x300.png" alt="Opera getUserMedia Example" width="180" height="300" /></a></p>
<h2>Implementations</h2>
<p>At present implementions of this API are very thin on the ground:</p>
<ul>
<li>Support is available in webkit on 32 bit ubuntu if a custom version of libwebkitgtk is used.</li>
<li>There are experimental builds of opera mobile which support some aspects of the API</li>
</ul>
<h3>Mobile</h3>
<h4>Opera Mobile</h4>
<p><a href="http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview">Opera have released a build of opera mobile </a>which has support for use of a mobile phone webcam using the new API on android phones. I have successfully tested this on my HTC Desire Z (see screenshots) the support for the full API for peer to peer communication is still in development but this has support for the basics of video capture. This implementation appears to follow the<a href="http://www.whatwg.org/specs/web-apps/current-work/complete/video-conferencing-and-peer-to-peer-communication.html"> published specification</a> fairly closely</p>
<h3>Desktop</h3>
<h4>Webkit (Ericsson)</h4>
<p>An even more experimental implementation of the API has been written by Ericsson which uses a modified version of the libwebkitgtk library which allows use of the new API with compatible desktop browsers (supported with Epiphany). The installation is simple as they&#8217;ve provided a PPA:</p>
<pre class="brush: bash; title: ; notranslate">
#Install the Ericsson Labs public GPG key used to verify the package signatures
wget -O- --quiet https://labs.ericsson.com/files/gpg/public.key | sudo apt-key add -

#Add the Ericsson Labs PPA
sudo add-apt-repository http://files.labs.ericsson.net/ubuntu
sudo apt-get update

# Upgrade to the Ericsson Labs modified libwebkitgtk packages
sudo apt-get -y install libwebkitgtk-1.0-0

# (optional) Install Epiphany from the default Ubuntu repository
sudo apt-get install epiphany-browser
</pre>
<p>Once this installation is complete epiphany (and other browsers configured to use the modified library will have support for the API. It does however support a great deal more functionality compared with the Opera implementation including peer to peer functionality to enable serverless webcam chat type applications. Full documentation is available <a href="https://labs.ericsson.com/apis/web-real-time-communication/documentation">here</a></p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/08/webrtc_small1.png"><img class="aligncenter size-medium wp-image-1053" title="Serverless webcam chat demonstration" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/08/webrtc_small1-300x273.png" alt="" width="300" height="273" /></a></p>
<p>Sadly this implementation of the API differs from the standard specification and uses a prefixed version using webkitGetUserMedia() along with various other annoying differences. A comparable example  to the simple webcam view above could be written  thus:</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;html&gt;
&lt;body&gt;

&lt;h1&gt;Simple web camera display demo&lt;/h1&gt;
&lt;video id=&quot;selfView&quot; autoplay audio=muted&gt;&lt;/video&gt;

&lt;script&gt;
//Grab the elements
var video = document.getElementsByTagName('video')[0],
heading = document.getElementsByTagName('h1')[0];

//test for getUserMedia
if(navigator.webkitGetUserMedia) {
  //setup callbacks
  navigator.webkitGetUserMedia('video', successCallback);

  //if everything if good then set the source of the video element to the mediastream
  function successCallback( stream ) {
    video.src = webkitURL.createObjectURL(stream);
  }
}
else {
  //show no support for getUserMedia
  heading.textContent =
      &quot;Native web camera streaming is not supported in this browser!&quot;;
}
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<h3>Annoyances</h3>
<p>This is not an API ready for use in any kind of real work application as there is no implementation in any mainstream browser and the specification is still in a state of flux. There are also functions which need to be worked out to handle multiple input sources and choosing the correct one, selecting the input size and many other bits and pieces. It could be many months or years before there is a reliable implementation  across browsers.</p>
<h3>The Future</h3>
<p>This API could be the basis for many cool web applications and potentially replace applications like skype but there is a long way to go before we see standard implementations. However many parts of the API may be able to be replicated in flash and, for the simple parts at least, this may be a realistic step on the ladder for those wishing to get going with the API. A polyfill for the simple features is on my list of things to try&#8230;get hold your breath though!</p>
<h4>My Plans</h4>
<p>Recently I&#8217;ve been playing with the API on Opera Mobile in conjunction with jquery mobile, the results can be seen on <a href="https://github.com/chemicaloliver/HTML5-getUserMedia-Experiments">github</a>. At present it contains a simple camera app which can post a snapshot of the video stream to the sever as a base64 encoded image via the canvas.</p>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/getusermedia-the-new-api-webcam-in-browser-using-javascript-and-html5-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backing up my world &#8211; Online back ups for work and play</title>
		<link>http://chemicaloliver.net/internet/backing-up-my-world-online-back-ups-for-work-and-play/</link>
		<comments>http://chemicaloliver.net/internet/backing-up-my-world-online-back-ups-for-work-and-play/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 19:17:02 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[offsite backup]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=944</guid>
		<description><![CDATA[For a good while I&#8217;ve been meaning to get around to backing up my data properly. I&#8217;ve always had an external hard disk on which I backed up my important data periodically but that only covers the most basic of situations. If my house burnt down, or more likely somebody broke into my house,even just [...]]]></description>
			<content:encoded><![CDATA[<p>For a good while I&#8217;ve been meaning to get around to backing up my data properly. I&#8217;ve always had an external hard disk on which I backed up my important data periodically but that only covers the most basic of situations. If my house burnt down, or more likely somebody broke into my house,even just a power surge, I could conceivably loose both my real copy and the backup. From this I decided the only sensible way was to explore an offsite backup solution to use in addition to local backups. I&#8217;ve also been spurred on after buying an SSD and being <a title="Why I don't trust SSDs" href="http://www.codinghorror.com/blog/2011/05/the-hot-crazy-solid-state-drive-scale.html">unconvinced about their reliability</a>. Indeed since starting to write this post my new SSD was <a title="Engadget - Corsair recalls its 120GB Force 3 SSD due to 'stability issues'" href="http://www.engadget.com/2011/06/08/corsair-recalls-its-120gb-force-3-ssd-due-to-stability-issues/">recalled by corsair&#8230;</a></p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/daryl_mitchell/1199598508/"><img class="size-thumbnail wp-image-946 aligncenter" title="Backup drives courtesy of Daryl Mitchell " src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/05/1199598508_44cad279a1_z-300x183.jpg" alt="Daily backup drives" width="300" height="183" /></a></p>
<p>In this post I&#8217;ll describe what I backup and the online services and software I used.</p>
<p><span id="more-944"></span></p>
<h2>My Data</h2>
<p>I consider my requirements to be fairly standard for a web developer, I have a few types of data which need to be considered separately:</p>
<ul>
<li><strong>Code</strong> both open and closed source &#8211; close source much remain confidential as it&#8217;s mostly for work but open source code can and should be shared.<strong> ~50MB</strong></li>
<li><strong>Documents </strong>(Including some confidential data) &#8211; Letters, CVs, other random documents - none of which I wish to be available publicly at any cost. <strong>~150MB</strong></li>
<li><strong>Photos</strong> &#8211; My archive of photos I&#8217;ve taken over the years, this is one of my most valuable assets, I&#8217;m not really concerned that they&#8217;re private. <strong>~30GB</strong></li>
<li><strong>Music</strong> &#8211; A big problem&#8230;. <strong>~150GB</strong></li>
</ul>
<h2>Solutions</h2>
<h3>Code</h3>
<p>All my code is stored under version control using either git or mercurial, this makes backing up very easy.</p>
<h4>Closed Source</h4>
<p>All my closed source code is work related and is backed up on a private <a href="https://www.linode.com/">Linode</a> VPS using mercurial, this acts as the central repository and is also backed up automatically to a local machine at work using rsync.</p>
<h4>Open Source</h4>
<p>All the code I write personally is open source so I combine sharing with backup using<a href="https://github.com/"> github</a> this does lead to me having one or two repositories with odd selections of code in but somebody may benefit from them one day!</p>
<h3>Photos &amp; Documents</h3>
<p>Traditionally I had always survived with my photos stored in my desktop computer and a usb hard disk sitting next to the computer, now I&#8217;ve decided this isn&#8217;t sufficient so I&#8217;ve started to use Amazon S3 as an extra level of security. I use the command line too s3cmd to sync files in an rsync-like way. There is no encryption in this. I use a cron job to automate the synchronization periodically. The only negative point I found was the large amount of time taken to upload 30GB of photos on a domestic ADSL line.</p>
<p>For my documents containing confidential data I simply add the extra step of using the gpg encryption built into s3cmd. This means I can still get to my files even without the s3cmd tool.</p>
<h3>Music</h3>
<p>As I have around 150GB of music stored in mp3 format I fell this is an unrealistic amount to upload to amazon S3 as it would take several weeks. At present I use spotify for a large amount of my music listening and am becoming less and less dependent on mp3s so at the moment there is no other sensible option apart from mirroring on a usb drive, often this is kept at my parents house so it&#8217;s just as good as any online system.</p>
<h2>Services &amp; Tools</h2>
<p>When choosing tools and services I was looking for known names which are likely to stick around, not the latest great start-up which might be gone next week.</p>
<h3>Github &amp; Mercurial</h3>
<p>These standard version control systems require little explanation, there is little to choose between them and they work fast and reliably to record, version and push code around.</p>
<h3>Amazon S3</h3>
<p>There are several cloud storage providers available currently, I choose Amazon without looking round much as to me it seems the least likely to go away, it&#8217;s used by many large websites and based on the Amazon .com infrastructure. Out of the box it&#8217;s not a user friendly solution with only a primitive web interface, but when it&#8217;s comprehensive API is combined with one of the many third party tools it becomes a very powerful storage platform. Cost wise it&#8217;s around $0.14 per GB per month + $0.10 per GB of data transferred in or out, this to me is a negligible cost.</p>
<p>There are many tools available which provide different functionality and differing operating system.</p>
<h4>S3cmd</h4>
<p><a href="http://s3tools.org/s3cmd">S3cmd</a> is a command line tool to interface with amazon s3, once you&#8217;ve given it your api details you can access your buckets on S3 much like any other filesystem using s3cmd to put/get/sync files or folders between your local filesystem and S3, the interface is very similar to rsync. For example to syncronise the current folder with a bucket called photos:</p>
<pre class="brush: bash; title: ; notranslate">
s3cmd sync ./ s3://photos
</pre>
<p>Familiar commands such as ls are also available:</p>
<pre class="brush: bash; title: ; notranslate">
s3cmd ls
</pre>
<p>would list all the buckets you have created. Similar commands are available to create and delete buckets.</p>
<p>On the fly gpg encryption is also available but sadly only with the put and get commands, not sync.</p>
<p>One slight gotcha is that unless you specifically state in the config file the location, all buckets are created in the US Amazon datacenter, for speed I&#8217;d prefer the one in Ireland.</p>
<p>I use this program for all my regular contact with S3 as it&#8217;s easily scriptable for use in a cron job.</p>
<p>S3cmd is also available in common linux repositories.</p>
<h4><span style="font-weight: bold;">Duplicity</span></h4>
<p>Duplicity is a general purpose command line backup tool with creates tar volumes of files or folders and moves them to external media, it then creates incremental backups as requested until another full backup is created. All files are compressed and optionally encrypted on demand so it&#8217;s very simple to the user. I have used duplicty in the past but I felt it was a little overly complex, s3cmd is much easier to setup and use, for most of my files I also felt that I&#8217;d prefer just to  keep a copy rather than incremental backups. If you need more sophistication than s3cmd, or indeed would like to backup to something that&#8217;s not s3 then Duplicity may be for you.</p>
<h4>Deja Dup</h4>
<p>Deja dup is a nice GUI for duplicity which is increasingly being included with Gnome based linux distributions, in short you specify some folders, a destination and a backup frequency and then it takes care of the rest. For me however it was all too simple and vague, there is no possibility to set when the backups take place, no possibility to decide if an incremental backup or a full one is made. It may be nice for a non geeky user who just wants their data backed up sometime regularly, but I want to specify and know and see a log.</p>
<h2>&#8230;</h2>
<p>All in all I&#8217;m very happy with a mix on encrypted and unencrypted files hosted on an external drive locally and on S3, as long as they are maintained this should provide me with the ability to recover from most eventualities. &#8230;.<em>Famous last words&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/backing-up-my-world-online-back-ups-for-work-and-play/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Websocket URL routing (specifying MQTT subscription topic by URL)</title>
		<link>http://chemicaloliver.net/internet/websocket-url-routing-specifying-mqtt-subscription-topic-by-url/</link>
		<comments>http://chemicaloliver.net/internet/websocket-url-routing-specifying-mqtt-subscription-topic-by-url/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 16:10:09 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[mqtt]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web sockets]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=871</guid>
		<description><![CDATA[My previous example Node.js, MQTT and Websockets showed the use of a websocket to broadcast messages from a subscribed MQTT topic, however the topic was hard coded and the messages broadcast to all who connected. The example below uses the same client side script to connect but allows the MQTT topic to be specified in the URL [...]]]></description>
			<content:encoded><![CDATA[<p>My previous example <a href="http://chemicaloliver.net/internet/node-js-mqtt-and-websockets/">Node.js, MQTT and Websockets</a> showed the use of a websocket to broadcast messages from a subscribed MQTT topic, however the topic was hard coded and the messages broadcast to all who connected. The example below uses the same client side script to connect but allows the MQTT topic to be specified in the URL and only broadcasts to the individual client. Now to subscribe to a topic &#8220;test&#8221; the websocket address would be <code>ws://&lt;ip&gt;/test</code>.<br />
<span id="more-871"></span></p>
<pre class="brush: jscript; title: ; notranslate">
/* Include required libraries */
var util   = require('util'),
    sys = require(&amp;quot;sys&amp;quot;),
    url = require(&amp;quot;url&amp;quot;),
    ws = require(&amp;quot;websocket-server&amp;quot;),
    spawn = require('child_process').spawn,

    /* Create websocket server */
    server = ws.createServer({debug: true});

/*
 * Add listener for web socket connections
 */
server.addListener(&amp;quot;connection&amp;quot;, function(conn){

/*
 * Ceate call to mosquitto_sub cli client
 * to subscribe on topic specificed by the url
 *
 * substr(1) removes intial / from path
 */
mosq = spawn('mosquitto_sub',['-t',conn._req.url.substr(1)]);

/*
 * Bind an event to stdout to get output from mosquitto_sub
 * and publish it to the websocket
 */
mosq.stdout.on('data', function (data) {
    /*
     * Brodcast the MQTT message straight back
     * out on the websocket
     */
    server.send(conn.id, data)

    /* Log the message to the console */
    console.log('' + data);
    });

    /*
     * Bind an event to stderr so we can see any
     * errors that cause mosquitto_sub to crash
     */
    mosq.stderr.on('data', function (data) {
    console.log('error: ' + data);
    });

});

/* Start the websocket server listening on port 8000 */
server.listen(8000);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/websocket-url-routing-specifying-mqtt-subscription-topic-by-url/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Node.js, MQTT and Websockets</title>
		<link>http://chemicaloliver.net/internet/node-js-mqtt-and-websockets/</link>
		<comments>http://chemicaloliver.net/internet/node-js-mqtt-and-websockets/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 14:04:25 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mqtt]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web sockets]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=859</guid>
		<description><![CDATA[For a while I&#8217;ve been looking at how to bridge the MQTT protocol and websockets to make it easier to build web applications using data broadcast in MQTT streams. In the past I used python and mod_pywebsocket along with mosquitto python libraries however this was cumbersome and difficult to install.  Here I present a simple solution using node.js [...]]]></description>
			<content:encoded><![CDATA[<p>For a while I&#8217;ve been looking at how to bridge the <a href="http://mqtt.org/">MQTT protocol</a> and websockets to make it easier to build web applications using data broadcast in MQTT streams. In the past I used python and mod_pywebsocket along with mosquitto python libraries however this was cumbersome and difficult to install.  Here I present a simple solution using<a href="http://nodejs.org/"> node.js</a> to interact with <a href="http://mosquitto.org/">mosquitto</a> MQTT clients. Node.js lends itself to working well with messaging systems like MQTT and websockets due to its event driven nature. I&#8217;m also in love with node.js at the moment!</p>
<p>This is much simpler than previous attempts and I put the initial test together in less than ten minutes.</p>
<h2>Prerequisites</h2>
<p>Obviously you&#8217;ll need to have <a href="http://nodejs.org/">node.js</a> and <a href="http://mosquitto.org">mosquitto</a> installed and also the node library <a href="https://github.com/miksago/node-websocket-server">node-websocket-server</a> (which can easily be installed using <a href="https://github.com/isaacs/npm">npm</a>). All my work was tested under ubuntu but there is no reason why it wouldn&#8217;t work on OSX or even cygwin. To test you&#8217;ll need a websocket compatible browser such as recent versions of chrome.</p>
<h2>System Structure</h2>
<p>mosquitto_pub and mosquitto_sub are command line MQTT clients supplied with the mosquitto MQTT broker, here mosquitto_sub will be called using node.js as child processes, events are generated on output from the process. The data is then captured and broadcast over a websocket. In this case a simple jquery page is used to display the broadcast messages but in a real application there would be more client side processing to make a useful application.</p>
<p><span id="more-859"></span></p>
<h2>Simple Server Side Subscriber Code</h2>
<p>This example subscribes to the topic &#8220;test&#8221; and broadcasts all messages on this topic over the websocket on port 8000.</p>
<pre class="brush: jscript; title: ; notranslate">
/* Include required libraries */
var util   = require('util'),
sys = require(&quot;sys&quot;),
ws = require(&quot;websocket-server&quot;),
spawn = require('child_process').spawn,

/* Create websocket server */
server = ws.createServer({debug: true}),

/*
* Ceate call to mosquitto_sub cli client
* to subscribe on topic &quot;test&quot;
*/
mosq = spawn('mosquitto_sub',['-t','test']);

/*
* Bind an event to stdout which occurs when
* mosquitto_sub outputs anything
*/
mosq.stdout.on('data', function (data) {
/*
* Brodcast the MQTT message straight back
* out on the websocket
*/
server.broadcast(data);
/* Log the message to the console */
console.log('' + data);
});

/*
* Bind an event to stderr so we can see any
* errors that cause mosquitto_sub to crash
*/
mosq.stderr.on('data', function (data) {
console.log('error: ' + data);
});

/* Start the websocket server listening on port 8000 */
server.listen(8000);
</pre>
<h2>Demonstration Client</h2>
<p>This is a bare bones page which prints out messages received over the websocket.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;

&lt;/head&gt;
&lt;body&gt;
	&lt;div id=&quot;debug&quot;&gt;&lt;/div&gt;
	&lt;div id=&quot;msg&quot;&gt;&lt;/div&gt;

&lt;script src='http://code.jquery.com/jquery-1.4.4.min.js'&gt;&lt;/script&gt;

&lt;script&gt;
    $(document).ready(function() {
			function debug(str) {
				$(&quot;#debug&quot;).append(&quot;&lt;p&gt;&quot;+str+&quot;&lt;/p&gt;&quot;);
				};
			ws = new WebSocket(&quot;ws://&lt;your ip address&gt;:8000&quot;);

/* Define websocket handlers */
      ws.onmessage = function(evt) {
				$(&quot;#msg&quot;).append(&quot;&lt;p&gt;&quot;+evt.data+&quot;&lt;/p&gt;&quot;);
				};
      ws.onclose = function() {
				debug(&quot;socket closed&quot;);
				};
      ws.onopen = function() {
				debug(&quot;connected...&quot;);
   			};
		});
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<h2>Further Development</h2>
<p>This example is of little practical use on its own however it could easily be the basis of a flashy home monitoring system. Publishing MQTT messages could be easily achieved by calling mosquitto_pub in the child process.</p>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/node-js-mqtt-and-websockets/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Chromium OS &#8211; another look 1 year on</title>
		<link>http://chemicaloliver.net/internet/chromium-os-another-look-1-year-on/</link>
		<comments>http://chemicaloliver.net/internet/chromium-os-another-look-1-year-on/#comments</comments>
		<pubDate>Sun, 16 Jan 2011 12:21:03 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[chromeos]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=844</guid>
		<description><![CDATA[Just over a year when the chromiumOS code was first released I spent a while compiling it and experimenting and posted my opinions I made a few basic points: Little wifi hardware support Requires a DHCP network Quick boot time (~10s) It&#8217;s just like Google chrome and nothing else A few weeks ago @popey mentioned [...]]]></description>
			<content:encoded><![CDATA[<p>Just over a year when the chromiumOS code was first released I spent a while compiling it and experimenting and posted <a href="http://chemicaloliver.net/internet/first-impressions-of-using-chromeos/">my opinions</a></p>
<p>I made a few basic points:</p>
<ol>
<li>Little wifi hardware support</li>
<li>Requires a DHCP network</li>
<li>Quick boot time (~10s)</li>
<li>It&#8217;s just like Google chrome and nothing else</li>
</ol>
<p>A few weeks ago <a href="http://twitter.com/#!/popey">@popey</a> mentioned on twitter he was compiling it and this inspired me to have another go with it. In this post I intend to see if things have moved on.</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-163846.png"><img class="size-thumbnail wp-image-847 aligncenter" title="chromiumos default screen" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-163846-300x168.png" alt="chromiumos default screen" width="300" height="168" /></a></p>
<p><span id="more-844"></span></p>
<h2>Wifi &amp; Networking</h2>
<p>Chromium OS now seems to have decent wifi support (at least it works on the two laptops I own) how ever Google still have not addressed the lack of a network control panel which is able to define a static IP address, this basically means unless you use DHCP then you cannot use the operating system. On the first boot you are required to enter details of a Google account, obviously this requires internet access, however subsequent logins can proceed even when offline. However 99% of functionality is useless without an internet connection:</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-163108.png"><img class="size-thumbnail wp-image-850 aligncenter" title="chromiumOS offline view" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-163108-300x168.png" alt="chromiumOS offline view showing error page" width="300" height="168" /></a></p>
<h2>Boot &amp; Login</h2>
<p>Previously when I tested chromiumOS the boot was a plain blue screen and login box, the graphics of this have been considerably improved and details of previously used accounts are displayed on the login screen, as well as allowing guest logins. I didn&#8217;t take any measurements but I feel the boot time has slightly increased, probably due to the increased complexity of the OS. Sadly it would not let me take a screenshot of the login screen.</p>
<h2>Filesystem Access</h2>
<p>I was pleasantly surprised to find that there is some access to local files, to take the screenshots for this review I logged into dropbox and uploaded them from chromiumOS, on trying to upload a file it brings up a nice styled upload dialogue. There is some strange behaviour, the filesystem you see in the upload browser dialogue does not reflect the actual filesystem the folder &#8216;Screenshots&#8217; is nowhere to be found when browsing using the terminal, this is not really a problem and is maybe a nice user friendly feature.</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-171034.png"><img class="size-thumbnail wp-image-848 aligncenter" title="chromiumOS dropbox upload" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-171034-300x168.png" alt="chromiumOS dropbox upload window screenshot" width="300" height="168" /></a></p>
<p>Initially when I tried to upload files to dropbox it tried to load a flash uploader, while flash is supported it is very flakey and promptly crashed! However before it crashed it did show evidence of the raw filesystem, an upload dialogue triggered from flash shows a more conventional file browser with the linux root filesystem visible&#8230;possibly an indication there is a good way to go before chromiumOS is polished enough for release.</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-171016.png"><img class="size-thumbnail wp-image-849 aligncenter" title="chromiumOS file upload browser" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-171016-300x168.png" alt="chromiumOS file upload browser showing root filesystem" width="300" height="168" /></a></p>
<h2>New Stuff</h2>
<p>Since last time there has obviously been work done but I feel it&#8217;s more as a result of the development of the browser rather the OS, for example it nicely syncs your bookmarks, apps and settings between all other versions of chrome which is nice but not ground breaking anymore.</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-164023.png"><img class="size-thumbnail wp-image-853 aligncenter" title="chromiumOS showing synced themes, bookmarks and applications" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2011/01/screenshot-20110102-164023-300x168.png" alt="chromiumOS showing synced themes, bookmarks and applications" width="300" height="168" /></a></p>
<h2>Build &amp; Compilation</h2>
<p>Since last time I tried the build environment has changed from just a basic compilation to building a gentoo chroot and then building the OS inside that, however the process is well documented and managed by build scripts and presented no issues aside from the several hours taken to complete the download and compilation, even on quite a powerful machine.</p>
<h2>Overall Impression</h2>
<p>Functionality wise it&#8217;s still just google chrome and nothing else, just a newer version! I can see it working well for non technical people who use just webmail and browse the web but at present even something like android provides a great deal more overall functionality. To me chromiumOS is little more that an interesting experiment into what the world would be like with only web applications&#8230;and I&#8217;m not looking forward to that if it ever happens!</p>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/internet/chromium-os-another-look-1-year-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a Low Powered and Silent Atom Based Server (Sheevaplug alternative)</title>
		<link>http://chemicaloliver.net/hardware/building-a-low-powered-atom-based-sever-sheevaplug-alternative/</link>
		<comments>http://chemicaloliver.net/hardware/building-a-low-powered-atom-based-sever-sheevaplug-alternative/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 18:08:12 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mqtt]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sheevaplug]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=566</guid>
		<description><![CDATA[After I had problems with my sheevaplug power supply I had lost faith in the device and didn&#8217;t trust it to survive being on 24/7 without exploding/setting on fire etc&#8230; so after NewIT kindly fixed it I sold it. This left me with no server to mess with so I decided to try and build [...]]]></description>
			<content:encoded><![CDATA[<p>After I had problems with my <a href="http://chemicaloliver.net/electronics/sheevaplug-why-globalscale-suck/">sheevaplug power supply</a> I had lost faith in the device and didn&#8217;t trust it to survive being on 24/7 without exploding/setting on fire etc&#8230; so after NewIT kindly fixed it I sold it. This left me with no server to mess with so I decided to try and build a new one &#8211; the two primary requirements being that it used as little power as possible (ideally around 10W &#8211; the same as my sheevaplug with hd and usb hub) and was totally silent. In this post I&#8217;ll describe what I came up with.</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2010/07/IMG_3091.jpg"><img class="size-thumbnail wp-image-747 aligncenter" title="My low powered, atom based server." src="http://chemicaloliver.net/wordpress/wp-content/uploads/2010/07/IMG_3091-253x300.jpg" alt="My low powered, atom based server." width="253" height="300" /></a></p>
<p><span id="more-566"></span></p>
<h2>Component Choice</h2>
<p>My requirements for quietness and low power stipulated that a fanless system would be best so as a balance between low power and performance I choose a 1.6GHz N270 atom based motherboard (the <a href="http://www.intel.com/products/desktop/motherboards/D945GSEJT/D945GSEJT-overview.htm">Intel D945GSEJT</a>) which consists of a mixture of laptop and desktop components while providing ample speed for my requirements in silence. The motherboard is also nice because it has an internal DC-DC power supply meaning that only an external DC power supply is required, no extra faffing as with a lot of ITX boards on the market. I added 2GB of RAM to this, the maximum allowed by the motherboard.</p>
<p>I decided I could cope with the slight noise generated by a hard disk so went for the best value 2.5 inch disk I could find (A Hitachi 250GB), an SSD was beyond the performance required and budget of the project!</p>
<p>When choosing the case I went for the quite large <a href="http://www.lian-li.com/v2/en/product/product06.php?pr_index=319&amp;cl_index=1&amp;sc_index=25&amp;ss_index=64">Lian Li PC-Q07</a>, it has space for a full atx power supply but I had in mind that I wanted a system that I could grow and modify if I thought of a new use for it so currently I have a motherboard and small hard disk in a case able to accommodate a full ATX PSU, 5.25&#8243; optical drive and 3.5&#8243; Hard Disk&#8230;I mentioned space was consideration!</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2010/07/IMG_3124.jpg"><img class="size-thumbnail wp-image-748 aligncenter" title="Inside my sheevaplug replacement" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2010/07/IMG_3124-300x294.jpg" alt="Inside my sheevaplug replacement" width="300" height="294" /></a></p>
<p>The motherboard has headers for two serial ports and a parallel port so I added a serial PCI header adaptor into the only PCI slot. The large metal panel visible below is custom blanking plate as I haven&#8217;t fitted an internal PSU &#8211; it&#8217;s just a piece of 0.5mm aluminium from ebay cut to the correct size.</p>
<p style="text-align: center;"><a href="http://chemicaloliver.net/wordpress/wp-content/uploads/2010/09/IMG_3125.jpg"><img class="size-thumbnail wp-image-750 aligncenter" title="The Back" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2010/09/IMG_3125-255x300.jpg" alt="The Back" width="255" height="300" /></a></p>
<h2>Software</h2>
<p>My current Linux distribution of choice is ubuntu so I chose ubuntu server for the machine as it&#8217;s what I&#8217;m with familiar with and does everything I need. I usually run apache, mysql, php, python, <a href="http://mosquitto.org/">mosquitto</a> (mqtt broker) and irssi (IRC) on the machine 24/7 and so far it has performed flawlessly. I used powertop for power optimisations.</p>
<h2>Power Consumption</h2>
<p>When I first started out using the sheevaplug one of my main motivations was the low power usage, as my needs grew the sheevaplug + SD card became a sheevaplug + powered USB Hub + USB HD all in all consuming around 10.5W of power, therefore this was my target for this machine. In addition to using low power components I also used <a href="http://www.lesswatts.org/projects/powertop/">PowerTOP</a> to optimise the power usage of the operating system. <a href="http://www.lesswatts.org/projects/powertop/">PowerTOP</a> accomplishes this by ensuring cpu scaling is working correctly and powering down systems which are not required.</p>
<p>Before carrying out optimisation with powertop my mains power consumption was ~ 14W idle and after nearer the target of 10.5W, now using ~11-12W:</p>
<p style="text-align: center;"><img class="size-thumbnail wp-image-754 aligncenter" title="Power use meter" src="http://chemicaloliver.net/wordpress/wp-content/uploads/2010/09/IMG_3069-206x300.jpg" alt="Power use meter" width="206" height="300" /></p>
<p>The low power consumption I achieved surprised me as the sheevaplug has been developed with this as its main aim and sacrifices processing power to achieve it. My atom system could rings around the sheevaplug in terms of processing power and comes within around 1-2W in terms of power consumption&#8230;so much as I&#8217;d like to love the sheevaplug the bad design and service provided by Globalscale force me to take the less cool but more functional route.</p>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/hardware/building-a-low-powered-atom-based-sever-sheevaplug-alternative/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WebSocket-Arduino Forked &#8211; Updated arduino websocket library now in development</title>
		<link>http://chemicaloliver.net/arduino/websocket-arduino-forked-updated-arduino-websocket-library-now-in-development/</link>
		<comments>http://chemicaloliver.net/arduino/websocket-arduino-forked-updated-arduino-websocket-library-now-in-development/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 13:20:43 +0000</pubDate>
		<dc:creator>chemicaloliver</dc:creator>
				<category><![CDATA[arduino]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[web sockets]]></category>

		<guid isPermaLink="false">http://chemicaloliver.net/?p=742</guid>
		<description><![CDATA[After consultation with the original developer of the only existing Arduino (@razorbeans) websockets library I have forked the project to allow me to take over maintenance. Over the coming weeks and months I intend to: Migrate the library to use the new bundled string library rather than the WString library (mostly done) Tidy up the code Add functions for [...]]]></description>
			<content:encoded><![CDATA[<p>After consultation with the original developer of the only existing Arduino (<a href="http://twitter.com/razerbeans">@razorbeans</a>) websockets library I have forked the project to allow me to take over maintenance. Over the coming weeks and months I intend to:</p>
<ul>
<li>Migrate the library to use the new bundled string library rather than the WString library (mostly done)</li>
<li>Tidy up the code</li>
<li>Add functions for onconnect, onmessage and allow sending of strings at a time determined by the Arduino, not just in response to a message from the client.</li>
<li>Update the library to allow recent browsers to connect. Currently the library supports the version 75 handshake protocol but most browsers have now moved to the more recent 76 protocol..</li>
</ul>
<p>The project is available to <a href="http://github.com/chemicaloliver/WebSocket-Arduino">download on Github</a> currently this will only work with versions of Google chrome before 6.0.414.0 but this will hopefully change soon as the handshake is updated.</p>
]]></content:encoded>
			<wfw:commentRss>http://chemicaloliver.net/arduino/websocket-arduino-forked-updated-arduino-websocket-library-now-in-development/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

