<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Site-Server v6.0.0-30621-30621 (http://www.squarespace.com) on Sat, 16 Oct 2021 12:08:18 GMT
--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://www.rssboard.org/media-rss" version="2.0"><channel><title>Technology, Business and stuff :-)</title><link>http://www.simonmhawkins.com/</link><lastBuildDate>Fri, 05 Aug 2016 22:26:48 +0000</lastBuildDate><language>en-GB</language><generator>Site-Server v6.0.0-30621-30621 (http://www.squarespace.com)</generator><description><![CDATA[]]></description><item><title>Systems Management</title><dc:creator>Simon Hawkins</dc:creator><pubDate>Tue, 30 Jul 2013 20:51:00 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2013/7/30/systems-management</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:51f77eb8e4b06887950bcfa6</guid><description><![CDATA[<p>Two great newer frameworks to consider...&nbsp;</p><p>Ansible &amp; Salt</p><p></p><p>http://missingm.co/2013/06/ansible-and-salt-a-detailed-comparison/&nbsp;</p><p>&nbsp;</p><p>Currently my money is on Ansible as it's dependencies are so little, no initial deploy or setup is required on minion servers - a huge win.<br></p>]]></description></item><item><title>Postgres Backup</title><category>Servers</category><category>Cloud Computing</category><category>Database</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Thu, 23 May 2013 08:11:21 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2013/5/23/postgres-backup</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:519dcd9be4b03e792399d82c</guid><description><![CDATA[<p>A great utility to backup Postgres directly to S3. Provides script for base backup of db and then a script for continual backup of WAL file to S3 by setting the archive parameters in the postgres.sql config file.<br></p><p><a href="https://github.com/wal-e/wal-e">https://github.com/wal-e/wal-e</a></p><p></p>]]></description></item><item><title>Server backup to S3 without having AWSAccessKey and AWSSecretKey on server</title><category>Servers</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Thu, 25 Nov 2010 14:08:29 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2010/11/25/server-backup-to-s3-without-having-awsaccesskey-and-awssecre.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c19a</guid><description><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img src="/static/5047cef524acc51286f5c247/5047cfa0e4b07543d963c163/5047cfa0e4b07543d963c19b/1290697801086/1000w" alt="" width="377" height="283" /></span><span class="thumbnail-caption">Backups are good!  (http://www.flickr.com/photos/49024304@N00/47244105/)</span></span>Having multiple servers dotted around with different backup solutions I wanted to consolidate on one consistent backup solution utilising S3 for the actual storage.</p>
<p>While researching using S3 for storage it is clear that the usual principle requires your AWSAccessKey and AWSSecretKey to be copied onto each server where uploading to S3 is required.</p>
<p>But as Amazon states...</p>
<blockquote>
<p>IMPORTANT: Your Secret Access Key is a secret, and should be known only  by you and AWS. You should never include your Secret Access Key in your  requests to AWS. You should never e-mail your Secret Access Key to  anyone. It is important to keep your Secret Access Key confidential to  protect your account.</p>
</blockquote>
<p>&nbsp;Ideally I wanted a solution that didn't require the AWSAccessKey and AWSSecretKey to be copied onto every server requiring backup, increasing the likelihood of the AWS account being compromised if any server became compromised.</p>
<p>The solution to this comes from the Browser based uploads using POST.</p>
<p>This is designed to allow visitors to your web site to upload content directly to your S3 account with out going through your server and without you passing any credentials to the web browser.</p>
<p>It has two features that allow us to use this for server backup.</p>
<ol>
<li>A signature that is generated from the AWSAccessKey and AWSSecretKey</li>
<li>An expiration that can be set to a long time in the future</li>
</ol>
<p>So the solution is to created a signature that allows uploads to a bucket that doesn't expire until well into the future. Then use curl to POST to S3 using the signature.</p>
<p>Generating the correct policy document and curl parameters to make this happen took some time. So in case anyone would like to do this here's a bit of Ruby code to generate the curl command line...</p>
<blockquote>
<p>require 'base64'<br />require 'openssl'<br />require 'digest/sha1'<br /><br />aws_access_key_id = '*** AWS ACCESS KEY ***'<br />aws_secret_key = '*** AWS SECRET KEY'<br />content_type = 'application/octet-stream'<br />bucket = '** BUCKET ***'<br />acl = 'private'<br />key_prefix = '***FOLDER****/'<br /><br />policy_document = '{<br />&nbsp; "expiration": "2012-01-01T12:00:00.000Z",<br />&nbsp; "conditions": [<br />&nbsp;&nbsp;&nbsp; {"bucket": "' + bucket + '" },<br />&nbsp;&nbsp;&nbsp; {"acl": "' + acl + '" },<br />&nbsp;&nbsp;&nbsp; ["starts-with", "$key", ""],<br />&nbsp;&nbsp;&nbsp; ["starts-with", "$Content-Type", ""],<br />&nbsp; ]<br />}'<br /><br />policy = Base64.encode64(policy_document).gsub("\n","")<br /><br />signature = Base64.encode64(<br />&nbsp;&nbsp;&nbsp; OpenSSL::HMAC.digest(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenSSL::Digest::Digest.new('sha1'), <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aws_secret_key, policy)<br />&nbsp;&nbsp;&nbsp; ).gsub("\n","")<br /><br /><br />print 'curl '<br />print "-F 'key=#{key_prefix}${filename}' "<br />print "-F AWSAccessKeyId=#{aws_access_key_id} "<br />print "-F acl=#{acl} "<br />print "-F policy=#{policy} "<br />print "-F signature=#{signature} "<br />print "-F Content-Type=#{content_type} "<br />print "-F file=@FILENAMEHERE "<br />print "-F Submit=OK "<br />print "http://#{bucket}.s3.amazonaws.com"<br />print "\n"</p>
</blockquote>
<p>Just fill in the variables with the required information and run the script.</p>
<p>The curl command line generated will then upload any file to S3. Just replace FILENAMEHERE in the command line with the required filename (leave the @ before the filename).</p>
<p>Also, rate limiting is possible with curl. For example --limit-rate 20K will keep curl to only using 20K/s of your bandwidth. Handy for stopping the backup using the full bandwidth of your connection.</p>
<p>&nbsp;</p>]]></description></item><item><title>Dark Ages 2.0</title><category>Photography</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Wed, 24 Feb 2010 23:06:22 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2010/2/24/dark-ages-20.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c18f</guid><description><![CDATA[<p>This is a talk I gave at the&nbsp;<a href="http://oxford.geeknights.net/2010/feb-17th/">Geek Night</a>&nbsp;in Oxford. Complete <a href="http://www.simonmhawkins.com/talks/">Slides</a>&nbsp;of the talk.</p>
<h2>A summary of the talk.</h2>
<p>With photographs and written word on paper backup/storage is passive, barring physical damage the content will be readable for years or even hundreds of years. With digital media backup/storage is active, if you don't keep testing it, duplicating &amp; moving forward in media format your content will be unusable over time. Compare the box of photos and notes left in the loft for 50 years to a stack of CD-R. Will the discs be readable, will you even have a drive to read them? Chances are the paper will be. This is a problem for all of us as time passes and we collect more content in digital format.</p>
<h2>Full Talk</h2>
<p>The first dark age&nbsp;occurred&nbsp;around 410AD after the collapse of the Roman empire. The period last until shortly after 1000AD and historically very little is known about this period.</p>
<p>I think we are creating a new dark age. Not like the first one, but a dark ages for family social history, this will be caused by a loss of data.</p>
<p>I've been thinking about this a lot recently, as we now have a daughter. Taking&nbsp;photographs is now part of recording the family history for my daughters future generations. Currently I have around 8000 photos stored in iPhoto all tagged with descriptions, all of which is stored in it's proprietary database, hmmm.</p>
<p>This is a recent phenomenon, the problem is&nbsp;occurring&nbsp;now and the effects of it will not be seen until the future.&nbsp;Photographing&nbsp;has been around since 1850, yet it's only since 2000 that digital cameras have been in common use.</p>
<p>The two big issues are</p>
<ul>
<li>Backups</li>
<li>Cataloging</li>
</ul>
<h2>&nbsp;Backups/Storage</h2>
<p><span class="full-image-float-left ssNonEditable"><span><img src="/static/5047cef524acc51286f5c247/5047cfa0e4b07543d963c163/5047cfa0e4b07543d963c191/1267034592553/1000w" alt="" width="222" height="167" /></span></span>We have a photo of my daughter's great great great grandmother, the picture is over 123 years old. All being well, will my daughter's great great great grandchildren in 123 years time be able to view the photographs we have taken now? The work to make sure this is possible will be much more than just putting photographs into a box like our ancesters did. It's this 'active' management that is going to be the cause of the 'Dark Ages 2.0'.</p>
<p>Since photographs were invented around 1850 'backups' have been easy, just chuck the negatives and photos in a box. This is what most families have done and it's worked well for generations.</p>
<p>Now we have digital backups to carry out. There are many media options for storing backups and over time these degrade and fall out of use. We have to continually recreate backups, test them and move them forward as new media formats are developed - a lot of 'active' management.&nbsp;</p>
<p><span class="full-image-float-right ssNonEditable"><span><img src="/static/5047cef524acc51286f5c247/5047cfa0e4b07543d963c163/5047cfa0e4b07543d963c192/1267034677637/1000w" alt="" width="212" height="160" /></span></span>Just imagine a hard drive got 'stuck in the loft' like a box of photos might. After 50 years the photos would be fine. The hard drive? Even if it would spin up, would the data on the disk be readable, and with a USB connection finding a computer to plug it into might prove difficult. 50 Years ago personal computers didn't exist. The progress in the next 50 years will make it very difficult to read media from this era. I found a few old copies of Computer magazines in the back of a cupboard from around the mid 90s with floppy disks on the cover. I can still read the magazine, but I don't even own a 3.5" floppy drive any more to be able to read the disks.</p>
<p><span class="full-image-float-left ssNonEditable"><span><img src="/static/5047cef524acc51286f5c247/5047cfa0e4b07543d963c163/5047cfa0e4b07543d963c193/1267034774137/1000w" alt="" width="183" height="138" /></span></span>This is all something as technical people we understand, but even as technical people we know we probably don't back up enough. So what chance does an 'average person on the street' stand trying to keep on top of this. I personally know of non-tech friends who have lost photos, some of very important family history moments; weddings, babies, loved ones no longer with us. It's that digital backups are an 'active' process that causes the problem.</p>
<p>Previously&nbsp;backing up/storage was a passive process, by putting things in a box it was done, they would always come out roughly in the same condition they went in. And this passive process has meant that family photos have survived down the generations, now the process is 'active' how much will survive over time?</p>
<h2>Meta-Data</h2>
<p><span class="full-image-float-right ssNonEditable"><span><img src="/static/5047cef524acc51286f5c247/5047cfa0e4b07543d963c163/5047cfa0e4b07543d963c194/1267034705797/1000w" alt="" width="225" height="169" /></span></span>There are two options with where to store meta-data</p>
<ul>
<li>In the image file</li>
<li>In a&nbsp;separate&nbsp;database</li>
</ul>
<p>Looking at our old photographs as an example of what to do - if we're lucky somebody wrote the date the&nbsp;photograph&nbsp;was taken and who is in the photograph straight on the back of the&nbsp;photograph. This has stood the test of time well as it's commonly the only way we know who features in the photographs.&nbsp;</p>
<p><span class="full-image-float-left ssNonEditable"><span><img src="/static/5047cef524acc51286f5c247/5047cfa0e4b07543d963c163/5047cfa0e4b07543d963c196/1267034737073/1000w" alt="" width="226" height="169" /></span></span>Now image that instead of writing the meta-data on the back of the&nbsp;photograph&nbsp;they wrote a number. Then in a separate&nbsp;notebook next to that number they wrote all of the meta-data. Over time the photos and the notebook must always be kept together. What happens if the photos get shared out to&nbsp;different&nbsp;family members, would the notebook get split up or copied (by hand, unless it's in the last 30 years). Also if the notebook got lost then all of the meta-data for all of the photos would be lost for ever. Overall it&nbsp;doesn't sound a very good solution and thankfully most people just wrote on the back of the photographs.</p>
<p>Many photo software packages do store the meta-data exactly as described above, in a&nbsp;separate&nbsp;proprietary database. iPhoto is one such program. When backing up photographs the database needs to be backed up as well. They must always be kept together and in sync. iPhoto provides options for this, but in 50 years time would iPhoto 59 be able to restore a backup from iPhoto 9 with all the meta-data restored? Also what other program would be able to load this proprietary database and extract the meta-data. How much work would be required to obtain this data. Also if this one database file becomes corrupt then all of the meta-data for every photograph will be lost.</p>
<p><span class="full-image-float-left ssNonEditable"><span><img src="/static/5047cef524acc51286f5c247/5047cfa0e4b07543d963c163/5047cfa0e4b07543d963c197/1267034895023/1000w" alt="" /></span></span>The other option is to store the meta-data within the image file; jpg or RAW (preferably though for archiving convert your RAW images to <a href="http://www.adobe.com/products/dng/">DNG</a> as this open standard will stand much greater chance of continued support in the future). As the old adage goes in computing we like standards - that's why we have SO many of them. And so it is with image meta-data, with the following standards; <a href="http://en.wikipedia.org/wiki/Exchangeable_image_file_format">EXIF</a>, <a href="http://www.adobe.com/products/xmp/">XMP</a>, <a href="http://www.iptc.org/cms/site/index.html?channel=CH0086">IPTC</a> &amp; <a href="http://en.wikipedia.org/wiki/Exchangeable_image_file_format#MakerNote_data">MakerNotes</a>. By using a combination of these standards it is possible to store all of the meta-data required about images directly within the image files.</p>
<p>MakerNotes throws a bit of a spanner in the works as it's internal contents is not a defined standard but a 'binary blob' of data that records all of the camera details when the photo was taken. The ISO, Lens type, shutter speed etc. Unfortunately there is no standard for this data and each manufacture has come up with their own format, and not all of them are documented. If that wasn't bad enough the data has absolute references within it, so changes to the rest of the meta-data can corrupt the MakerNotes. Picassa is one such program that helpfully stores all tags and descriptions in the EXIF/XMP headers but unfortunately does not understand MakerNotes and therefore can corrupt this information in your images files.</p>
<p>Two programs that do handle all meta-data within the image files and correctly handle the MakerNotes are <a href="http://www.digikam.org/">DigiKam</a> &amp; <a href="http://www.adobe.com/products/photoshoplightroom/">Adobe Lightroom 2</a>. DigiKam is open-source and works on Linux, Windows and Mac OS X.</p>
<p>I think that for the storage of photographs a set of plain file system folders with images in jpg or <a href="http://www.adobe.com/products/dng/">dng</a> format with all meta-data contained within the images will be the most resilient and most likely to endure archival system for the future.</p>
<p>Even keeping to this very simple storage structure, frequent testing, duplication and transfer across media formats will be required to maintain the archives for future generations.</p>
<p>What's your strategy?</p>
<p>&nbsp;</p>
<p>Since giving this talk an article along similar lines has been published in American Scientist called <a href="http://www.americanscientist.org/issues/pub/2010/3/avoiding-a-digital-dark-age/1">Avoiding a Digital Dark Age</a> which is also worth a read.</p>]]></description></item><item><title>Javascript - The Final Big Language FBL</title><category>Software</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Tue, 05 Jan 2010 15:35:16 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2010/1/5/javascript-the-final-big-language-fbl.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c189</guid><description><![CDATA[<p>JavaScript will not just be the NBL (Next Big Language) it will be the FBL - Final Big Language.</p>
<p>Big statement, but I think the pieces are falling into place to make this&nbsp;happen and I think&nbsp;Node.js will be a big driver of this process. It will be the driver for JavaScript server side as <a href="http://rubyonrails.org/">Rails</a> was for driving Ruby for server side development.</p>
<p>Rails crystallised many great ideas in how to develop web applications and Ruby's design allowed this to be coded in a very clean way. Many of the ideas had been around for a while but it took <a href="http://www.loudthinking.com/">DHH</a> using Ruby to seed&nbsp;the community around a Rails. Just look how it's transformed web development over the past 6 years, and how it has influenced so many other frameworks in other languages.</p>
<p>I see node.js as the seed for JavaScript on the server side. OK it's lower down the stack than Rails, but it's seeded the idea of what is possible with JavaScript on the server, just look <a href="http://hornbeck.wordpress.com/2009/07/19/node-js/">at</a> <a href="http://simonwillison.net/2009/Nov/23/node/">how</a>&nbsp;<a href="http://www.nakedjavascript.com/going-evented-with-nodejs">interest</a>&nbsp;<a href="http://britg.com/2009/07/01/server-side-javascript-continued-node-js-plus-example/">is</a>&nbsp;<a href="http://debuggable.com/posts/node_js:4ab4d9d7-b788-41d4-85c0-1b51cbdd56cb">developing</a>. Already frameworks taking the best of Rails/Django are starting to <a href="http://wiki.github.com/ry/node/">appear</a> running on node.js, and the performance for such young frameworks hint at what will be possible in the near future.</p>
<p>The crucial factor in JavaScript being the FBL is the server programming language now matches the client. Do not underestimate the impact of this. Since web development began we've moved through various languages server side... &nbsp;PERL, Java, PHP, ASP, Python, Ruby, and many more. On the client side we've just had JavaScript since 1994 - 16 years! (ok Microsoft did have a go with VBScript in the browser, enough said).</p>
<p>Once you can develop on the server and client side in one language, unless the client side changes, it would seem unlikely on the server side you would move on to another language. As a developer why would you go from working with one common language and common set of libraries covering both server &amp; client side to learning a&nbsp;separate&nbsp;language when you are still going to be developing in JavaScript on the client side. The&nbsp;benefits&nbsp;of a new server side language would need to be substantial to break from having one consistent language.</p>
<p>I'm not saying JavaScript is the 'best' language (however you define that), just that it will become <strong>very</strong> popular.</p>
<p><span class="full-image-float-right ssNonEditable"><span><a href="http://nodejs.org/"><img src="http://nodejs.org/logo.png?__SQUARESPACE_CACHEVERSION=1263716805320" alt="" /></a></span></span><a href="http://nodejs.org/">node.js</a> will lead this, event driven server side programming that by it's nature allows very <a href="http://four.livejournal.com/1019177.html">high performance</a>&nbsp;(even for such a new system), and&nbsp;JavaScript&nbsp;provides a very natural environment for callback based development. Take a look at the <a href="http://github.com/ry/node_chat">chat example</a> to see how the environment provides such a natural fit and the code reduction that comes from this.</p>
<p>JavaScript is being built into many technologies, just look at&nbsp;<a href="http://couchdb.apache.org/">CouchDB</a> using JavaScript for it's view language and as I've <a href="http://www.simonmhawkins.com/blog/2009/5/15/javascript-is-slowly-becoming-the-next-big-language-nbl.html">previously written</a>, JavaScript in Yahoo's query language and many other services &amp; obviously the browser.</p>
<p><span class="full-image-float-left ssNonEditable"><span><a href="http://www.appcelerator.com/"><img src="http://www.appcelerator.com/wp-content/themes/appcelerator/img/APPC_logo.png?__SQUARESPACE_CACHEVERSION=1264501527735" alt="" /></a></span></span>How about developing apps for iPhone &amp; Android in JavaScript. No problem just take a look at <a href="http://www.appcelerator.com">Appcelerator</a></p>
<p>The progress seems unstoppable, will we all be JavaScript developers in the future?</p>]]></description></item><item><title>Google Chrome OS - The most interesting bit</title><category>Google</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Wed, 08 Jul 2009 08:28:34 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2009/7/8/google-chrome-os-the-most-interesting-bit.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c184</guid><description><![CDATA[<p>Well Google have gone and <a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html">announced</a> they're creating their own operating system. This is big news in itself and is being covered all over the web, but I think the most interesting part of the announcement is where they state;</p>
<blockquote>
<p>Google Chrome running within a<strong> new windowing system</strong> on top of a Linux kernel.</p>
</blockquote>
<p>Google are not going to use <a href="http://en.wikipedia.org/wiki/X_Window_System">X Window System</a>!</p>
<p>They're going to provide their own windowing system and they are going to <strong>open-source the code</strong>. This is huge, X has so many <a href="http://en.wikipedia.org/wiki/X_Window_System#Limitations_and_criticisms_of_X">limitations and issues</a>. Tweaks and workarounds like the <a href="http://en.wikipedia.org/wiki/Direct_Rendering_Infrastructure">Direct Rendering Infrastructure</a> to take better advantage of video hardware are being made, but these are all hamstrung by they underlying architecture of X11.</p>
<p>As one of the Apple Quartz developers, Mike Paquette <a href="http://en.wikipedia.org/wiki/X_Window_System#Competitors_to_X">explained</a> about Apple's decision to develop Quartz rather than use X11<a href="http://en.wikipedia.org/wiki/X_Window_System#Competitors_to_X">;<br /></a></p>
<blockquote>
<p>once Apple added support for all the features it wanted to include into X11, it would not bear much resemblance to X11 nor be compatible with other servers anyway.</p>
</blockquote>
<p>With Google providing a new window system, they have the opportunity to design from scratch a modern architecture for a windowing system. To take advantage of modern video hardware, deal with multiple displays, handle displays DPI correctly, font handling at the lowest levels. All without having to take account of a windowing architecture designed in the 80's where even the lowest power graphics chip of today would have been unimaginable.</p>
<p>With a whole open source operating system based on this being released with at least one large example application (Google Chrome) maybe a real competitor to X Windows will emerge, and adoption by other projects will occur?</p>
<p>I'm looking forward to seeing this happen.</p>]]></description></item><item><title>Google App Script - bigger than Google Wave?</title><category>Cloud Computing</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Fri, 05 Jun 2009 23:47:43 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2009/6/6/google-app-script-bigger-than-google-wave.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c17c</guid><description><![CDATA[<p>Google made an <a href="http://googleenterprise.blogspot.com/2009/05/old-tool-new-tricks.html">announcement</a> of a limited test of <strong>App Script</strong> at the same time that <strong>Google Wave</strong> was announced. Wave gained much of the attention but App Script has the potential to be far more important. Initially App Script is just available in Google Docs&nbsp; spreadsheets for a limited number of users, but this will expand over time.</p>
<p>So what is it?</p>
<p>Well <a href="http://www.google.com/google-d-s/scripts/scripts.html">App Script</a> allows you to write functions in Javascript that run directly on Google's servers. Just to repeat the code runs <strong>on</strong> Google servers not in the browser. This really is the next step in the 'programmable web'. So now instead of having to write a full Google App Engine application or set up Amazon EC2 instances with a full server environment you can just write a Javascript function and have it running on Googles servers. (Yahoo are also providing a service where you write Javascript that executes on their servers - <a href="http://developer.yahoo.net/blog/archives/2009/04/yql_execute.html">YQL Execute</a>)</p>
<p>This will allow <a href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)">mash-ups</a> on the server side, whereas currently mash-ups have resided within the browser. As more web services allow server-side scripting the web really will turn into a fully scriptable environment. Previously applications that would have required complete custom development will just require integrating together of sevices with scripting to provided the desired application.</p>
<p>With Javascript becoming the <a href="http://www.simonmhawkins.com/blog/2009/5/15/javascript-is-slowly-becoming-the-next-big-language-nbl.html">universal language</a> and <a href="http://en.wikipedia.org/wiki/JSON">JSON</a> providing the standard for data transfer along with <a href="http://oauth.net/">oAuth</a> for security - all of the pieces are falling into place to provide a complete distributed development environment hosted within the cloud and based on the cloud, rather than the old model of a single development environment by a single supplier.</p>
<p>The potential for this cannot be overestimated, Google Wave is fantastic but with App Scripting it will be just a messaging service that is tied into cloud hosted applications using many other services.</p>]]></description></item><item><title>The Big Switch</title><category>Cloud Computing</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Wed, 27 May 2009 21:00:31 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2009/5/27/the-big-switch.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c175</guid><description><![CDATA[This is a talk I gave at the Geek Night in Oxford. Slides of the talk.

Changes of computing model are rare in our industry. In the roughly 50 
years our industry has been in existence, we have had only 3 computing 
models, and we're just at the start of the 3rd. A change of computing model 
is a big thing.]]></description><content:encoded><![CDATA[<p>This is a talk I gave at the <a href="http://oxford.geeknights.net/2009/may-27th/">Geek Night</a> in Oxford. <a href="https://simon-hawkins-uvx9.squarespace.com/talks/">Slides</a> of the talk.</p><p>Changes of computing model are <strong>rare</strong> in our industry. In the roughly 50 years our industry has been in existence, we have had only 3 computing models, and we're just at the start of the 3rd. A change of computing model is a <strong>big thing</strong>.</p><img src="http://farm1.static.flickr.com/29/61952845_d633fe97bc_m.jpg?__SQUARESPACE_CACHEVERSION=1243334566295" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7564">The first model of computing was <strong>Centralised</strong> : Mainframe &amp; Supercomputer - Big glass walled rooms, very expensive, very reliable, with everything centrally managed.</p><img src="http://farm1.static.flickr.com/22/31436961_33399f4066_m.jpg?__SQUARESPACE_CACHEVERSION=1243334637644" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7575">The second model of computing was <strong>client/server</strong> : The 1980's saw the emergence of personal computers and unix workstations. This model was built on the idea of relatively low cost, simple systems with typically one server dedicated to a single application. This flexibility and low cost along with the GUI on the client PC saw a huge growth in new applications.</p><img src="http://farm4.static.flickr.com/3519/3462607995_150a6b2624_m.jpg?__SQUARESPACE_CACHEVERSION=1243334702575" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7584">The mid 1990's saw the development of web applications, the start of the <strong>Internet Model</strong>. The number of users able to access these systems massively increased and the servers needed to be more scalable, reliable and have better management capabilities. Suddenly running a web app required the discipline of the old mainframe world. This would lead to the emergence of a cloud computing marketplace.</p><img src="http://ecx.images-amazon.com/images/I/41Sy00MHZNL._BO2,204,203,t,35,-76_AA240_SH20_OU02_.jpg?__SQUARESPACE_CACHEVERSION=1243334921188" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7591">This has many parallels to the use of electricity back in the 1900's. I recommend to everyone reading 'The Big Switch' by Nicolas Carr. Nicholas describes in great detail how before 1900 every manufacture was in 2 businesses. The product they were producing &amp; energy production. Initially energy production was mechanical then electricity took over as a far more controllable source of energy. Electric energy had the unique property that it could be transmitted very efficiently, allowing the source of energy production to be distant from it's use. It also meant that production of electricity could be centralised.</p><img src="http://farm1.static.flickr.com/55/147732345_39d9f831af_m.jpg?__SQUARESPACE_CACHEVERSION=1243335064632" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7597">Initially companies could not imagine outsourcing the generating of electricity to another company. Factory owners knew that a glitch in the power supply would bring their production to a halt. At the turn of the century virtually all electric was privately produced. Thomas Edison at General Electric was making huge profits supplying all of the hardware to set-up these private electric plants.</p><p id="yui_3_10_1_1_1392678700126_7602">But two technologies where to change all of this, the steam turbine and alternating current.</p><img src="http://farm3.static.flickr.com/2327/2452227272_037aff0fc2_m.jpg?__SQUARESPACE_CACHEVERSION=1243335136707" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7608">These two technologies allowed for massive power stations and distribution over far greater distances. These immense stations would be able to supply the demands of even the largest companies, and at far lower costs than possible before. A positive feedback occurred. As more customers are served the efficiencies increase, reducing prices, attracting more customers. By 1920 70% of all US electricity production was by the utilities, at the start of the century it was virtually zero.</p><h2 id="yui_3_10_1_1_1392678700126_7611">How does this relate to EC2 &amp; App Engine?</h2><img src="http://media.amazonwebservices.com/logo_aws.gif?__SQUARESPACE_CACHEVERSION=1243335183319" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7615">Using Amazon's EC2 (Elastic Computer Cloud) your working with machine images (just a disk image and config files) that can be run on servers completely separate from Amazon.</p>












 

  
  
    

      

      
        <figure class="
              sqs-block-image-figure
              intrinsic
            "
        >
          
        
        

        
          
            
          
            
              <img class="thumb-image" data-image="https://images.squarespace-cdn.com/content/v1/5047cef524acc51286f5c247/1346883488993-89XXCR8N75CK4BEVG9VO/image-asset.png" data-image-dimensions="125x118" data-image-focal-point="0.5,0.5" alt="" data-load="false" data-image-id="5047cfa0e4b07543d963c176" data-type="image" src="https://images.squarespace-cdn.com/content/v1/5047cef524acc51286f5c247/1346883488993-89XXCR8N75CK4BEVG9VO/image-asset.png?format=1000w" />
            
          
        
          
        

        
      
        </figure>
      

    
  



<p id="yui_3_10_1_1_1392678700126_7619">This flexibility is where the generator from Aldi comes in. Standards in electricity means your electrical appliances can be plugged into the mains or you can pop to Aldi, buy a genny and plug your appliances into that. Or you can hire a genny from a hire company - whatever the appliance will work. Likewise using EC2 the option is always there to be able to run your service locally or at another hosting company with minimal effort to move the images around.</p><img src="http://code.google.com/appengine/images/appengine_lowres.gif?__SQUARESPACE_CACHEVERSION=1243335344826" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7623">Compare that with Google App Engine. Being tied to the App Engine datastore, and other requirements on their Python and Java environments means you are developing your app to run entirely on their system. For deployment of a live application your only option is App Engine. If you're developing a new product in your start-up would you feel comfortable betting your whole company on App Engine and the services it provides.</p><p id="yui_3_10_1_1_1392678700126_7626">With EC2 your just renting a machine to run your image and you can do that via many routes.</p><p id="yui_3_10_1_1_1392678700126_7631">You can see the effect of this today, with the number of commercial businesses using each system. Until their are other routes to hosting App Engine applications in a live environment I can not see App Engine exploding in business use.</p><h2 id="yui_3_10_1_1_1392678700126_7634">What does it mean for your Start-up / Business?</h2><p id="yui_3_10_1_1_1392678700126_7637">If you are not considering using a hosted service, a competitor <strong>will be</strong> and they will end up providing the service at lower cost or making more margin - all the while not having to deal with the digital 'power supply' that your company is. They will be able to react quicker as they are running <strong>one</strong> business while you are running <strong>two</strong>.</p><img src="http://upload.wikimedia.org/wikipedia/en/thumb/2/24/OS2_2.0_upgrade_box.png/497px-OS2_2.0_upgrade_box.png?__SQUARESPACE_CACHEVERSION=1243335461052" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7650">As were are at the start of a new model in computing there are going to be many options, some of which will be dead ends. For us today it means trying to keep your options open while taking advantage of this new model. You need to consider what your product is about. Which bits are unique, which bits are the energy production and which bits I can outsource to a utility company.</p><p id="yui_3_10_1_1_1392678700126_7653">Virtually all power production went to utilities in just a 20 year period. In IT 20 years is nearly half the life of our industry, the transition to a cloud future is going to be rapid.</p><p id="yui_3_10_1_1_1392678700126_7656">Eventually people began to trust power generation as the utilities proved themselves over time. Even the London Underground stopped generating their own electric, which then resulted in complete shut down of the Underground when there was a failure of the national grid to supply power.</p><p id="yui_3_10_1_1_1392678700126_7659">But as this shows it gets to the point where the risk is so low we just live with it and the odd occasion when it does fail. As the alternative of generating it ourselves or having a backup is no longer economically viable.</p><img src="http://farm1.static.flickr.com/81/247946950_484d146d59_m.jpg?__SQUARESPACE_CACHEVERSION=1243335552504" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7665">As the reliability of the services increase to the point where you just 'plug' something in and it always works, the same will happen with the cloud. We will end up with very large utility companies with server farms offering services at a cost that is so low any other option will not be economically viable. Just as Edison was trying to hold back the inevitable;</p><img src="http://farm4.static.flickr.com/3222/3149760367_dcd5169791_m.jpg?__SQUARESPACE_CACHEVERSION=1243335615006" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7671">As Nicholas Carr puts it:</p><p id="yui_3_10_1_1_1392678700126_7674">"In the end the savings offered by utilities become too compelling to resist, even for the largest enterprises. The grid wins."</p><p id="yui_3_10_1_1_1392678700126_7677">Change leads to opportunity. By making the right choices the rewards can be great, just watch out for those other choices!</p><h3 id="yui_3_10_1_1_1392678700126_7680"><strong>References</strong></h3><img src="http://www.assoc-amazon.co.uk/e/ir?t=simonmhawkins-21&amp;l=as2&amp;o=2&amp;a=0393062287" title="" alt=""/><p id="yui_3_10_1_1_1392678700126_7685"><a href="http://www.amazon.co.uk/gp/product/0393062287?ie=UTF8&amp;tag=simonmhawkins-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0393062287">The Big Switch  Our New Digital Destiny</a> by Nicholas Carr ISBN 978-0-393-06228-1</p><p id="yui_3_10_1_1_1392678700126_7690"><a href="http://blog.irvingwb.com/blog/2009/04/cloud-the-emergence-of-a-new-model-of-computing.html">Irving Wladawsky-Berger</a> : The emergence of a new model of computing</p><h3 id="yui_3_10_1_1_1392678700126_7695"><strong>Images</strong></h3><p id="yui_3_10_1_1_1392678700126_7699"><a href="http://www.flickr.com/photos/carrick/61952845/">Mainframe</a> : http://www.flickr.com/photos/carrick</p><p id="yui_3_10_1_1_1392678700126_7704"><a href="http://www.flickr.com/photos/sylvar/31436961/">Client/Server Room</a> : http://www.flickr.com/photos/sylvar</p><p id="yui_3_10_1_1_1392678700126_7709"><a href="http://www.flickr.com/photos/torkildr/3462607995/">'Cloud' Server room</a> : http://www.flickr.com/photos/torkildr</p><p id="yui_3_10_1_1_1392678700126_7714"><a href="http://en.wikipedia.org/wiki/File:OS2_2.0_upgrade_box.png">OS/2 Image</a> : http://en.wikipedia.org/wiki/File:OS2_2.0_upgrade_box.png</p><p id="yui_3_10_1_1_1392678700126_7719"><a href="http://www.flickr.com/photos/timdorr/147732345/">Generator</a>: http://www.flickr.com/photos/timdorr</p><p id="yui_3_10_1_1_1392678700126_7724"><a href="http://www.flickr.com/photos/37117644@N00/2452227272/">FerryBridge power station</a> : http://www.flickr.com/photos/37117644@N00</p><p id="yui_3_10_1_1_1392678700126_7729"><a href="http://www.flickr.com/photos/mrfaber/247946950/">Large server room</a> : http://www.flickr.com/photos/mrfaber</p><p id="yui_3_10_1_1_1392678700126_7734"><a href="http://www.flickr.com/photos/sunpig/3149760367/">Electricity Pylons</a> : http://www.flickr.com/photos/sunpig</p>]]></content:encoded></item><item><title>Javascript is slowly becoming the next big language (NBL)</title><category>Software</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Fri, 15 May 2009 17:07:00 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2009/5/15/javascript-is-slowly-becoming-the-next-big-language-nbl.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c16a</guid><description><![CDATA[<p>Over time the perception of Javascript has changed from a language suitable for small bits of coding on a web page, to one where serious applications can be developed. With the language having an EMCA standard and with Douglas Crockford's excellent book <a href="http://www.amazon.co.uk/gp/product/0596517742?ie=UTF8&amp;tag=simonmhawkins-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0596517742">JavaScript: The Good Parts</a><img src="http://www.assoc-amazon.co.uk/e/ir?t=simonmhawkins-21&amp;l=as2&amp;o=2&amp;a=0596517742" border="0" alt="" width="1" height="1" /> showing you how to make the most of the language while avoiding the unfortunate historical yuckky bits, it has the underlying capabilities of a serious language.</p>
<p>With the AJAX movement and serious clients (GMail &amp; Google Calender to name two) demonstrating what's possible in the wild. We also have new Javascript engines coming up in several browsers (Chrome, Firefox &amp; Safari) that are an order of magnitude faster in performance. These will allow for a major jump in the functionality of applications running in the browser.</p>
<p>&nbsp;Below I've listed just some technologies that are programmed with Javascript.&nbsp;</p>
<h3>Client Side</h3>
<ul>
<li>Web Browser</li>
<li>Flash</li>
<li><a href="http://www.adobe.com/products/air/">Adobe AIR</a></li>
<li><a href="http://www.qtsoftware.com/products">QT Application Framework</a></li>
</ul>
<ul>
<li><a href="http://widgets.yahoo.com/">Yahoo Widgets</a></li>
<li><a href="http://www.google.com/webmasters/gadgets/">Google Gadgets</a></li>
<li><a href="http://developer.yahoo.com/yql/">Yahoo Query Language</a></li>
</ul>
<ul>
<li><a href="http://research.sun.com/projects/lively/">Lively Kernel</a></li>
<li><a href="http://cappuccino.org/">Cappuccino</a></li>
</ul>
<ul>
<li><a href="http://developer.palm.com/webos_book/book1.html">Palm Pre</a></li>
<li><a href="http://www.betavine.net/bvportal/web/guest/widgetzone/getstarted">Mobile Widgets (Vodaphone)</a></li>
<li><a href="http://na.blackberry.com/eng/developers/rapidappdev/">Blackberry Rapid Application Development</a></li>
</ul>
<h3>Server Side</h3>
<ul>
<li>Over 35 different options for running JavaScript on the server. Take a look at the <a href="http://en.wikipedia.org/wiki/Server-side_JavaScript">list</a> on wikipedia</li>
</ul>
<p>Just a couple of highlights from the list are;</p>
<ul>
<li><a href="http://www.appjet.com/">AppJet</a></li>
<li><a href="http://www.aptana.com/jaxer/">Jaxer</a></li>
<li><a href="http://www.ejscript.org/">Ejscript</a></li>
<li><a href="http://dev.helma.org/">helma.org</a></li>
</ul>
<p>&nbsp;</p>
<p>What other language allows you to target so many platforms, from a web browser to a mobile phone to a web server. Also with services like the Yahoo YQL, you can now run fragments of Javascript on their servers rather than developing whole applications.</p>
<p>With application and srvices created as mash-ups of other services, in the future Javascript is going to be the glue on the server as well as the client that will tie it all together. Yahoo YQL hints at where this might go in the future, where your 'application' is just Javascript code located across many servers coordinating other services, rather than a whole application installed on a server.</p>
<p>This is why Javascript will be the NBL. Not because it's the 'best' language, has the most features, is the only language developers want to use. But because one language will allow you to target so many platforms. As the javascript engines performance increases it will move into more and more development areas, it is only a matter of time...</p>
<p>&nbsp;</p>]]></description></item><item><title>An evening of music</title><category>Review</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Thu, 14 May 2009 09:35:50 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2009/5/14/an-evening-of-music.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c173</guid><description><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img src="http://www.phil-king.net/images/thumbs/007.jpg?__SQUARESPACE_CACHEVERSION=1242341731392" alt="" /></span></span><span class="full-image-float-right ssNonEditable"><span><img src="http://www.sam-holmes.co.uk/images%5Cbio_pic_sm.jpg?__SQUARESPACE_CACHEVERSION=1242341067838" alt="" /></span></span>Wednesday night was live gig night at the <a href="http://www.bee-hive.co.uk/">Beehive</a> in Swindon. Playing were <a href="http://www.phil-king.net/">Phil King</a> and <a href="http://www.sam-holmes.co.uk/">Sam Holmes</a>. I've previously seen Phil King play in Bath. That evening he was accompanied by a Cellist and Bass guitar, this time it was just Phil and his guitar, and again sounding incredible. The range of sounds he can extract from the guitar is phenomenal, an absolute pleasure to hear and watch.</p>
<p>First time I've seen Sam Holmes and already looking forward to seeing her again. A mix of Lisa Loeb, Gem &amp; Suzanne Vega - really great voice and lyrics, songs that draw you in.</p>
<p>Would recommend both of them to anyone who enjoys chill out acoustic solo sets, you will not be disappointed.</p>
<p>&nbsp;</p>]]></description></item><item><title>What is the minimum cost to run a software company?</title><category>Business</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Thu, 30 Apr 2009 22:23:10 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2009/4/30/what-is-the-minimum-cost-to-run-a-software-company.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c165</guid><description><![CDATA[<p>OK, so you have a great idea for a web app, and you're going to start a business around this product idea charging a monthly fee for the app. Let's keep things really simple and say you're going to charge &pound;19.99 a month (of course in the real world you may have a range of plans).</p>
<p>Here's a list of the minimum of what you'll need to provide your application on a monthly basis. (We'll ignore one-off items for now such as company registration and a computer);</p>
<ul>
<li>Annual Accounts &pound;100</li>
<li>PAYE Paperwork &pound;20</li>
<li><a href="http://aws.amazon.com/">Server</a> &pound;100</li>
<li><a href="http://www.zen.co.uk/Broadband/S_Business.aspx">ADSL</a> &pound;25</li>
<li>Phone &pound;20</li>
<li><a href="http://www.xero.com/pricing/">Accounting Software</a> &pound;20</li>
<li>Office/<a href="http://space.carsonified.com/">Desk</a> &pound;245</li>
</ul>
<p>Gives a total monthly cost of &pound;530 (an office isn't necessary for the absolute minimum, but imagine you have a busy/noisy house and need to escape somewhere to work)</p>
<p>Assuming the company will be VAT registered then the VAT part of &pound;19.99 is &pound;2.61</p>
<p>Also assume you'll be using PayPal or some other payment gateway and merchant account. Either way you'll be looking at nearly 4% as a handling fee, which equates to &pound;0.80</p>
<p>So after these costs each &pound;19.99 is worth &pound;16.58 to us.</p>
<p>Our minimal costs above of &pound;530 equates to 32 customers.</p>
<p>Next is a salary, so far we just covered the minimum to run the company. If we're looking for a annual salary of say &pound;30,000 with employers national insurance of ~10% on top this gives us ~&pound;33,000, which is &pound;2750 per month or 166 customers. (Another assumption we're throwing in here is that 1 person can run the whole company.)</p>
<p>We have a total monthly paying customer requirement of 227 paying customers.</p>
<p>I came across <a href="http://www.accmanpro.com/2009/03/31/the-xero-hockey-stick/">this</a> article by the ever interesting Dennis Howlett, referencing an article on <a href="http://blog.xero.com/2009/03/the-hockey-stick/">xero.coms</a> web site, with this chart.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://blog.xero.com/wp-content/uploads//2009/03/xerohockeystick.png?__SQUARESPACE_CACHEVERSION=1240573642803" alt="" /></span></span></p>
<p>Using Xero here as an example as they have published their customer figures, you can see from this chart it took Xero 14 months to break the 200 customer barrier. Their blog article points to interim accounts, which show they are burning through millions of dollars and have 55 staff on the books. And it took them 14 months to break 200 customers. Positively for them, the chart also shows that in Jan 09 their uptake has jumped massively and that reaching a certain volume of customers seems to validate the product and a hockey stick uptake can occur.</p>
<p>As with everything in business it will come down to product and execution. If you come up with a product that really solves a problem, deliver it well, the uptake could be very rapid. Xero is probably a good yard stick as accounting software is an app every business needs, so for a generic product their figures are a good reference. Therefore to assume a customer growth faster than theirs would require a very defined route to market.</p>
<p>In summary running a SAAS company providing a product at &pound;19.99 a month, requires a minimum of 227 paying customers to cover company costs and pay an annual salary of &pound;30,000. And reaching that level of paying cutomers will in all likelyhood take well over a year and possiblely many more. Not impossible to do, but provides a reality check when thinking 'I've got a good idea for a web app'.</p>
<p>Do these figures look valid to you, is there anything you would add or remove from the minimum costs? Please leave a comment and I'll update the costs, the aim is to detail accurately the minimum costs to running a SAAS company, or do you think the possibility of bootstrapping a SAAS business has now passed and a large initial capital injection is required?</p>]]></description></item><item><title>SQUARESPACE - The publishing solution</title><category>Review</category><dc:creator>Simon Hawkins</dc:creator><pubDate>Tue, 28 Apr 2009 19:25:00 +0000</pubDate><link>http://www.simonmhawkins.com/blog/2009/4/28/squarespace-the-publishing-solution.html</link><guid isPermaLink="false">5047cef524acc51286f5c247:5047cfa0e4b07543d963c163:5047cfa0e4b07543d963c16f</guid><description><![CDATA[<p>After considering several blog publishing platforms SQUARESPACE has won me over with the quality of their solution and ease of use.</p>
<p>I'll post a full review of their system after I have spent more time with it, but given how smooth the setup has been currently it's giving a warm glowing feeling :-).</p>]]></description></item></channel></rss>