<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Gobán Saor &#187; S3</title>
	<atom:link href="http://blog.gobansaor.com/category/s3/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gobansaor.com</link>
	<description>A country datasmith.</description>
	<lastBuildDate>Fri, 27 Jan 2012 10:22:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.gobansaor.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/67e164f5d51c2b3115a7819b84505c13?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Gobán Saor &#187; S3</title>
		<link>http://blog.gobansaor.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.gobansaor.com/osd.xml" title="Gobán Saor" />
	<atom:link rel='hub' href='http://blog.gobansaor.com/?pushpress=hub'/>
		<item>
		<title>Excel as a book of record.</title>
		<link>http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/</link>
		<comments>http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 12:48:06 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[HAMMER]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Steam Powered Server]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Excel JSON]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[VBA JSON]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=2264</guid>
		<description><![CDATA[In the past I&#8217;ve talked about Excel as a tool to develop Really Simple Systems. Such &#8220;systems&#8221; usually occupy the middle ground between continuing to do a task by hand or  investing time/money in using a packaged/bespoke &#8220;proper system&#8221;. When &#8230; <a href="http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=2264&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/book_of_record/" rel="attachment wp-att-2279"><img class="alignleft size-full wp-image-2279" title="book_of_record" src="http://gobansaor.files.wordpress.com/2011/11/book_of_record.jpg?w=500" alt=""   /></a>In the past I&#8217;ve talked about Excel as a tool to develop <a href="http://blog.gobansaor.com/2011/04/19/really-simple-systems/">Really Simple Systems</a>. Such &#8220;systems&#8221; usually occupy the middle ground between continuing to do a task by hand or  investing time/money in using a packaged/bespoke &#8220;proper system&#8221;.</p>
<p>When such systems are primarily reporting in emphasis, the justification for using Excel is usually straight forward and compelling (and getting even more compelling with the appearance on the scene of Excel 2010&#8242;s  PowerPivot.) But, alarm bells sound across the world of professional IT when Excel is proposed as a &#8220;book of record&#8221; i.e. when it&#8217;s to be used to store and maintain a business critical dataset. And, with some considerable justification, the nightmare that is linked (or even worse, shared) workbooks is very real indeed. But yet, businesses continue to do so, and do so quite successfully.</p>
<p>I myself record my business as a series of Excel documents (Invoices, Timesheets, Expenses) in a set of folders (Financial Years subdivided into major customers).  Essentially a <a class="zem_slink" title="Document-oriented database" href="http://en.wikipedia.org/wiki/Document-oriented_database" rel="wikipedia">document-oriented database</a>.</p>
<p>In the past I simply then used a VBA powered workbook to open the required &#8220;documents&#8221; and extracted the data necessary for whatever report I required (VAT, year-end etc.).  To better automate (i.e. less bespoke VBA) this task I&#8217;ve have made changes to <a href="http://www.gobansaor.com/microetl">HAMMER</a> to help with this and with similar tasks for clients.</p>
<p>The following list of commands will be added to the next release of HAMMER. (In the meantime these new functions <a href="http://bit.ly/rss_example1">can be previewed here</a> &#8230;)</p>
<h2>LISTOFFILES</h2>
<p>This command takes a single argument, the folder to search, and will return a table of files in that folder and in any sub-folders. The result can then be used to select a list of files for further processing.</p>
<p>Example:</p>
<p>=HAMMER(&#8220;C:\a\rss&#8221;,&#8221;LISTOFFILES&#8221;)</p>
<p><a href="http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/listoffiles/" rel="attachment wp-att-2267"><img class="aligncenter size-full wp-image-2267" title="listoffiles" src="http://gobansaor.files.wordpress.com/2011/11/listoffiles.png?w=500&#038;h=93" alt="" width="500" height="93" /></a></p>
<h2>_XLTOJSONDOC</h2>
<p>This command takes a list of workbooks, opens each one, checks for a list of named ranges and generates a <a class="zem_slink" title="JSON" href="http://en.wikipedia.org/wiki/JSON" rel="wikipedia">JSON</a> document. The command is intended to be called from within a VBA macro (as opening and closing workbook breaks the &#8220;no side effects&#8221; rule of UDFs). Most &#8220;_&#8221; commands such as &#8220;_MD5&#8243; etc. are likewise intended for &#8220;programming use&#8221;, but any command beginning with &#8220;_XL&#8221; must be restricted to macro (i.e. non-UDF) use.</p>
<p>See the example workbook FetchInventory for an example of this function in action. The function takes one argument (the name of the document to load) and expects a table where the last column is the full name of the workbook to open. Any columns in the source table will be copied to the new &#8220;JSON document&#8221; table with an additional column called &#8220;Document&#8221; which will hold a JSON document representing the key-name pairs and table(s) extracted from the workbook.</p>
<p>On opening a workbook, it is searched for a named range with the name of document concatenated with &#8220;_fields&#8221; (e.g. INVENTORY_fields). The value of this range is expected to be a CSV list of fields and tables to load. A single Excel &#8220;document&#8221; could contain multiple logical documents (each specified by its own &#8220;_fields&#8221; list) .</p>
<p>See the PartsInventory_bin4 for an example of a multi-document workbook (INVENTORY and EXAMPLE). The EXAMPLE document in this workbook also demonstrates the various types of tables handled.</p>
<p>Example:</p>
<p>lJSONObjects = oHammer.HAMMER(&#8220;C:\a\rss\StockTake1&#8243;,&#8221;LISTOFFILES&#8221;,&#8221;Select name,fullname from table2 limit 1&#8243;,&#8221;SQL&#8221;,&#8221;INVENTORY&#8221;,&#8221;_XLTOJSONDOC&#8221;)</p>
<p>lReturn = oHammer.HAMMERToRange(lJSONObjects,&#8221;Sheet2!A27&#8243;)</p>
<p>&#8230; will output</p>
<p><a href="http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/documentrow/" rel="attachment wp-att-2270"><img class="aligncenter size-full wp-image-2270" title="documentrow" src="http://gobansaor.files.wordpress.com/2011/11/documentrow.png?w=500&#038;h=72" alt="" width="500" height="72" /></a></p>
<h2>JSONDOCVIEW</h2>
<p>This command is where the previous commands are leading to, i.e. extracting some real information value from your documents. It converts JSON documents into Excel friendly tables. It is, in essence, a Map function as in <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a>. In a previous example I used a <a href="http://blog.gobansaor.com/2011/05/05/excel-document-oriented-database-with-python-map-sql-reduce/">Python Map and a SQL Reduce</a>, here, both Map and Reduce are via SQL (the command uses a series of SQL commands to perform its task).</p>
<p>Before I describe the function let me explain why I use an intermediate JSON format. I could just extract the data directly from each document and either store directly in Excel or create tables in SQLite of Access to hold this data. And in fact, that&#8217;s what I would have done in the past (see<a href="http://blog.gobansaor.com/2010/03/02/excel-as-a-document-oriented-nosql-database/">Excel as a document-oriented NoSQL database</a>). Now , however, I tend to favour using a free-format (i.e. no need for a fixed database schema) structure like a JSON document, so as the source documents evolve over time (which tends to happen not just during design stages but as the system matures) this will not break older documents.</p>
<p>So, for example, original Invoice workbooks might not have a backing time-sheet while newer Invoices do. As long as new and old documents share a core sub-set of data fields they can continue to be analysed together.</p>
<p>The command takes 5 arguments and a driving table (a record so far for HAMMER commands, most have a max of two arguments). The driving table&#8217;s last column is assumed to contain the JSON document to process, columns prior to this (if any) will be output unchanged for each resulting row.</p>
<p>The first argument specifies the name of the &#8220;inner&#8221; table to fetch (if any). Most real life documents consist of header details (the &#8220;outer&#8221;document) and one or more tables (&#8220;inner&#8221; details). Invoices, time-sheets,  stock-takes, all tend to follow this pattern. This command will effectively join each document&#8217;s outer details to a single inner table (if more than 1 inner table, a call for each one is required).</p>
<p>The second (field list in SQL format) and third (<a href="http://en.wikipedia.org/wiki/Where_(SQL)#Predicates">SQL where predicate format</a>) arguments specify what inner fields to extract (if blank, then all) and what restrictions to impose (if any). So &#8220;InvNo, Date&#8221;,&#8221;InvNo &gt; 12&#8243; would only fetch documents where the InvNo &gt; 12 and only include the InvNo and Date fields.</p>
<p>The fourth and fifth arguments do the same for the outer table (i.e. Header data).</p>
<p>If any of the columns specified  (inner or outer) can not be found, or if the predicates (inner or outer) result in no selection, no error is returned, the document simply returns no rows. Likewise if an inner table is specified and no such table exists, then no rows are returned for that document &#8211; in other words this is not an outer join, which is not usually a problem as in most cases a &#8220;header&#8221; without detail lines is meaningless. If an outer join is required, then extract the headers (outers) and details (inner tables(s)) separately and join using SQL.</p>
<p>Example:</p>
<p>=HAMMER(&#8220;Select Name,FullName,Document from invoice_docs&#8221;,&#8221;SQL&#8221;,&#8221;table_2&#8243;, &#8220;[PART NUMBER],QTY&#8221;, &#8220;QTY &gt;30&#8243;, &#8220;Bin_Number&#8221;, &#8220;Bin_Number &gt; 1&#8243;, &#8220;JSONDOCVIEW&#8221;)</p>
<p>would result in:</p>
<p><a href="http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/jsonview/" rel="attachment wp-att-2271"><img class="aligncenter size-full wp-image-2271" title="jsonview" src="http://gobansaor.files.wordpress.com/2011/11/jsonview.png?w=500&#038;h=64" alt="" width="500" height="64" /></a></p>
<p>For more complex JSON objects use the <a href="http://blog.gobansaor.com/2011/08/14/hammer-inside/">JSON command</a> to incrementally parse the text or use the VBA JSON module within<a href="http://www.gobansaor.com/microetl"> microETL</a>. But for most situations (especially if you control the expected format) JSONDOCVIEW should handle it.</p>
<p>As JSON is fast becoming the preferred transport format for web and mobile applications having the ability to parse and produce JSON form within Excel is very useful. It is possible, for example, to use a simple web technology such as <a href="http://bit.ly/jsonwidget">http://robla.net/jsonwidget/</a> to craft another type of Really Simple System. This time with the collection happening on the web (most likely using <a href="http://aws.amazon.com/articles/1434">AWS S3 pre-signed forms</a>, so no HTML server required &#8211; keep it simple) but with the control and reporting remaining within Excel (a variation on my<a href="http://blog.gobansaor.com/2011/03/16/steam-powered-powerpivot/"> Steam Powered Server</a> idea).</p>
<p>For an example of a <a href="http://bit.ly/rss_example1">really simple system  download this</a>.</p>
<p><a href="http://blog.gobansaor.com/2011/11/22/powerpivot-vba-refesh-code-bug-fix/">Latest version of HAMMER including the above commands now released &#8230;</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/2264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/2264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/2264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/2264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/2264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/2264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/2264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/2264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/2264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/2264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/2264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/2264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/2264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/2264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=2264&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2011/11/05/excel-as-a-book-of-record/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/11/book_of_record.jpg" medium="image">
			<media:title type="html">book_of_record</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/11/listoffiles.png" medium="image">
			<media:title type="html">listoffiles</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/11/documentrow.png" medium="image">
			<media:title type="html">documentrow</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/11/jsonview.png" medium="image">
			<media:title type="html">jsonview</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerPivot mini-me server!</title>
		<link>http://blog.gobansaor.com/2011/04/08/powerpivot-mini-me-server/</link>
		<comments>http://blog.gobansaor.com/2011/04/08/powerpivot-mini-me-server/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 18:45:49 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[microETL]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Steam Powered Server]]></category>
		<category><![CDATA[Excel as a queue responder]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1522</guid>
		<description><![CDATA[I&#8217;ve been extending microETL&#8217;s functionality to make using it as a &#8220;Steam Powered&#8221; server easier and more automated. The major addition this week is an Excel friendly JSON parser. This will allow me to use JSON objects for interchange messages and &#8230; <a href="http://blog.gobansaor.com/2011/04/08/powerpivot-mini-me-server/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1522&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.gobansaor.com/2011/04/08/powerpivot-mini-me-server/minime/" rel="attachment wp-att-1528"><img class="alignleft size-medium wp-image-1528" title="minime" src="http://gobansaor.files.wordpress.com/2011/04/minime.gif?w=234&#038;h=300" alt="" width="234" height="300" /></a>I&#8217;ve been extending microETL&#8217;s functionality to make using it as a <a href="http://blog.gobansaor.com/2011/03/16/steam-powered-powerpivot/">&#8220;Steam Powered&#8221; server</a> easier and more automated. The major addition this week is an Excel friendly JSON parser. This will allow me to use JSON objects for interchange messages and for configuration files. I was going to use XML as there&#8217;s already an element of support within Excel for the format via XML Maps and the like, but I decided that JSON was too common a format to ignore, so I modified this<a href="http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html"> existing VB6 example</a> for my purposes. The major change, other than VBA-enabling it, is the use of detached  ADO Recordsets to handle list-of-lists structures (aka tables).</p>
<p>So what&#8217;s the likely use for my brand new shiny JSON objects? (By the way don&#8217;t be put off by the talk of objects and the like, JSON is essentially a simple text based format<a href="http://en.wikipedia.org/wiki/JSON"> see here for a description</a>.)</p>
<p>I&#8217;ve demonstrated that <a href="http://blog.gobansaor.com/2011/02/12/python-powered-powerpivot/">Excel with the help of microETL can function as a Web Service endpoint</a>; whereby, a web request is send to the TCP/IP port Excel is listening on; Excel then processes that request (in the meantime blocking any further requests as Excel is single threaded); and then issues a response with the necessary data and/or error messages.</p>
<p>This is not ideal. Excel is not a server product and while it can be used as one in very low-traffic environments it has the potential to be a serious bottle-neck. But, if you approach this problem using Excel as responder to a queue rather than as a always-on TCP/IP port listener, it becomes surprisingly fit-for-purpose as a server.</p>
<p>What do I mean by a queue-responder? An example will best explain.</p>
<p>Say, you&#8217;ve developed a very useful PowerPivot model that you wish to share with your co-workers. Unfortunately they&#8217;re a mixed bunch, some have access to Excel 2010 and potentially PowerPivot but most are still on Excel 2003, and another set are outside contractors who use a web gateway to access your internal systems.</p>
<p>Now when I say model, I mean the data relationships, cleansed data and measures you&#8217;ve developed not the imagery created on the workbook rendered via pivot tables, charts or the like. If you need to share at this level you can do so by sending the workbook to those colleagues with Excel 2010 (0r 2007 for non-dynamic view) or by investing in a SharePoint farm. Neither option is a runner in this case, as you don&#8217;t have the money nor technical resources to set-up SharePoint and the detail data behind the model is not suitable for sharing. So what to do?</p>
<p>Well if you had  microETL &#8220;server edition&#8221;  installed (remember,this is vapour-ware but most of the building blocks are in place) you would:</p>
<ol>
<li>Create one or more<a href="http://blog.gobansaor.com/2011/03/22/powerpivot-show-details/"> flattened PivotTables</a> based on your super-duper model. Static elements would be &#8220;column&#8221; fields while &#8220;client selectable&#8221; elements would be assigned to either &#8220;pages&#8221; or &#8220;<a href="http://www.technospot.net/blogs/what-and-how-of-slicers-in-excel-2010/">slicers</a>&#8220;.</li>
<li>Run the &#8220;service discovery&#8221; microETL function which would create one or more &#8220;service manifests&#8221; based on the flattened pivots and associated pagers and slicers. This manifest would be published as a JSON object and would be &#8220;discoverable&#8221; via a standard &#8220;discovery service&#8221;. The function would auto-build the <a href="http://blog.gobansaor.com/2011/03/04/sqlscript-microetls-sql-sequencer-utility/">SQLScripts </a>necessary to handle the discovery service and the &#8220;services&#8221; associated with each flattened pivottable.</li>
<li>Start a <a href="http://blog.gobansaor.com/2011/03/27/expand-excels-horizons-look-to-the-cloud/">TIMER</a> on the now microETL-server-enabled workbook. It would check a &#8220;resource&#8221; for any &#8220;<em>requestMD5hash</em>.request&#8221; JSON messages. If either an equivalent &#8220;<em>requestMD5hash</em>.busy&#8221; ( &amp; not older than a certain time) or &#8220;<em>requestMD5hash</em>.response&#8221; exists then ignore; if not, create a &#8220;<em>requestMD5hash</em>.busy&#8221; file; open the .response file; process the required service using the data parameters supplied and write back a .response file.</li>
<li>Repeat until  the TIMER is disabled.</li>
</ol>
<p>So what&#8217;s this &#8220;resource&#8221; and what&#8217;s the <em>requestMD5hash</em> stuff? The &#8220;resource&#8221;, in its simplest implementation, would be a &#8220;client accessible&#8221; folder; so it could be a Windows or Samba shared folder, or a folder on the same machine as the Excel &#8220;server&#8221; with the JSON messages being push/pulled to/from that folder by a simple web server. But it could also be an<a href="http://blog.gobansaor.com/2011/03/30/s3-as-an-excel-hub/"> AWS S3 bucket</a> or an <a href="http://aws.amazon.com/sqs/">AWS SQS queue</a>. In fact, the .<em><strong>request-&gt;.busy-&gt;.response cycle</strong></em> is a simple queue implementation.</p>
<p>The <em>requestMD5hash</em> stands for the MD5 hash of the .request JSON message. This will uniquely indentify the message (i.e. the hash of the the service, the parameters and optionally any security IDs or time stamps) and will be used to both track the request and to provide a simple type of request caching.</p>
<p>Also as the MD5 hash can be calculated on the client-side so those situations where the &#8220;resource&#8221; is a &#8220;dumb folder&#8221; can be handled, as it provides a server-free means of generating an Unique ID (rather than the more usual server powered &#8220;<em>here&#8217;s my request and a server sends back an ID</em>&#8221; cycle).</p>
<p>So what about the clients? Those with Excel, would use an cut-down version of the microETL add-in (or macro-enabled workbook) to handle: <em>The Request (encode in JSON) -&gt; Wait for a response or come back later -&gt; Response (decode JSON) </em>cycle.</p>
<p>Those who access via a web gateway would delegate this cycle to a web app. The app might repackage the JSON response as a pretty web page or simply as a basic HTML table or XML Map (for import into un-macro&#8217;d Excel or other spreadsheets) or pass on the JSON as is.</p>
<p>The web app could also handle the wait period by doing some AJAXy &#8220;please wait&#8221; magic with a timeout message like &#8220;Excel servers not responding &#8211; Please resubmit at a later stage&#8221;. In this case if the server managed to catch up before the resubmit the response would be waiting and recognised via its &#8220;.request&#8221; MD5 hash.</p>
<h3>What about security?</h3>
<p>The &#8220;discovery&#8221; service would have the option of linking in with a simple User/Role facility, which would:</p>
<ol>
<li>Filter the &#8220;slicer&#8221; elements at the discovery stage (a manifest would default to sending a list of single column tables each one associated with a slicer, listings all the possible elements that can be filtered through that slicer). A security filter could restrict such lists.</li>
<li>Validate the filters requested to ensure that the &#8220;allowable&#8221; slicer elements where not doctored to include blocked elements. (The slicer lists provided by the discovery service would ideally be used by the client workbooks or web apps to populate lookup lists to provide an element of client-side validation.)</li>
</ol>
<h3>Would it scale?</h3>
<p>If you mean would it scale to handle your growth as you went from a small firm to a mega world-wide empire, no it wouldn&#8217;t. But it could scale to handle linear growth by simply making a copy of the workbook and starting it on another Excel process, or on another machine if front-ended by a simply round-robin assigner. The MD5 identifiers would also enable a simple caching mechanism enabling the handling of traffic spikes. Any client who contracts to interact with such servers would operate in a two message cycle (send the request, then send a separate series of one or more &#8220;is it ready&#8221; requests). This overhead is handled by the client and/or dumb-hubs and/or intermediate web-services, allowing Excel to concentrate on churning the model.</p>
<p>Anyway enough, it&#8217;s 20C outside which is very unusual for early April in Ireland, I&#8217;m off to act as a &#8220;server&#8221; of different sort, on barbecue duty &#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1522/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1522/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1522&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2011/04/08/powerpivot-mini-me-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/04/minime.gif?w=234" medium="image">
			<media:title type="html">minime</media:title>
		</media:content>
	</item>
		<item>
		<title>S3 as an Excel hub</title>
		<link>http://blog.gobansaor.com/2011/03/30/s3-as-an-excel-hub/</link>
		<comments>http://blog.gobansaor.com/2011/03/30/s3-as-an-excel-hub/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 16:11:08 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[xlAWS]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[boto]]></category>
		<category><![CDATA[AWS IAM]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1497</guid>
		<description><![CDATA[In my Steam Powered PowerPivot post I explained the concept of powered-spoke based Excel systems. One of the hub options was Amazon&#8217;s Simple Storage Service, S3. I&#8217;ve been using S3 both as a simple backup service and as a &#8220;systems &#8230; <a href="http://blog.gobansaor.com/2011/03/30/s3-as-an-excel-hub/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1497&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://gobansaor.files.wordpress.com/2011/03/amazons3_bucket.jpg"><img class="alignleft size-medium wp-image-1500" title="amazons3_bucket" src="http://gobansaor.files.wordpress.com/2011/03/amazons3_bucket.jpg?w=300&#038;h=216" alt="" width="300" height="216" /></a>In my <a href="http://blog.gobansaor.com/2011/03/16/steam-powered-powerpivot/">Steam Powered PowerPivo</a>t post I explained the concept of powered-spoke based Excel systems. One of the hub options was <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/gsg/?ref=get-started">Amazon&#8217;s Simple Storage Service, S3</a>. I&#8217;ve been using S3 both as a simple backup service and as a &#8220;systems hub&#8221; since the service began in 2006. Back then, it was not necessarily the easiest to use or the most suitable, but it was cheap and reliable. The code I used to access S3 from Excel can be found here <a href="http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/">http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/</a></p>
<p>Over the years, lots of new features have been added to S3 that have made the service more useful and easier. The final big missing, for me at least, was the lack of multiple  authorisation credentials  for a single account i.e. the ability to set-up multiple users with their own access policies. Last year, with the launch of <a href="http://aws.amazon.com/iam/">IAM (Identity &amp; Access Management) Service</a>, that last major problem was removed.</p>
<p>Although currently IAM is accessible only by the API that&#8217;s not a problem as my favourite tool for managing S3 (and AWS in general) is Python&#8217;s boto package, and it has <a href="http://www.elastician.com/2010/09/using-identity-access-management-iam.html">that, and everything else you might wish to do S3 -wise, covered</a>.<a href="http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/"></a></p>
<p>Although Boto does most of my heavy lifting (particularly on the server-side), I still have need for a VBA based S3 utility. Boto is fine for situations where I&#8217;m using microETL with Python enabled, but in many situations this is not ideal or even possible, particularly on the client-side of systems. Here, even a single file add-in may not be possible which often means a macro-enabled workbook is the only option.</p>
<p>MicroETL has a noSQL compile option which enables a lot of the code to operate without the SQLite libraries, thus allowing it to be used as a single-file VBA add-in or embedded in a workbook.</p>
<p>Up until now my S3 code depended on the xliteSha1Hmac.dll to provide SHA1-HMAC hashing (necessary to authorise access to S3) meaning that only pre-signed S3 URLS could be used in single-file deliverables. Even if this was not the case, prior to IAM, pre-signed URLs (usually with time limits) were often the only option as sharing an S3 account&#8217;s single authorisation credentials with all and sundry was not ideal from a security point of view. But post IAM, being able to set-up sub-accounts with specific access policies means the full power of S3 can now be used at client-level.</p>
<p>I&#8217;m in the process of adding a pure VBA HMAC-SHA1 facility (32 bit only at the moment, 64 bit continues to require the xliteSha1Hmac.dll). I&#8217;m also adding a JSON encode/decode module to allow tables to be more easily shared with non-Excel programs, currently I default to using tables encoded using ADO&#8217;s export XML schema to share via S3, but the JSON option will make it easier to share with a pure Python server (such as a PiClound based service, see my <a href="http://blog.gobansaor.com/2011/03/27/expand-excels-horizons-look-to-the-cloud/">Expand Excel&#8217;s Horizons &#8211; look to the cloud</a> post).</p>
<p>Cloud-shared tables can not only pass datasets back and forth but can pass <a href="http://blog.gobansaor.com/2011/03/04/sqlscript-microetls-sql-sequencer-utility/">SQLScripts</a> (which are, after all, simply tables) for processing elsewhere.</p>
<p>For example, client workbooks not having Python  (or SQLite ) functionality installed could write a script, post it to S3; that script table could then be picked up by a &#8220;server&#8221; microETL workbook (or by a pure Python server), executed, and the results posted back to S3 to be picked up by the client (possibly waiting a response using a <a href="http://blog.gobansaor.com/2011/03/27/expand-excels-horizons-look-to-the-cloud/">TIMER</a>).</p>
<p>Server processes could also do the opposite; passing down SQLScripts for client-side execution.</p>
<p>When people think of utilising the cloud, this sort of scenario is not what comes to mind, thinking that Excel is a desktop product so it cannot take advantage of the enormous cost-advantages of cloud-based solutions. Not so, it&#8217;s now very easy to integrate the likes of S3 into existing processes, adding that cloud magic but keeping those existing <em>works-so-don&#8217;t-fix-it</em> processes firmly on the ground.</p>
<p>If you need help figuring out how to take advantage of S3 (or other AWS services) and how to integrate them with your existing technology base <a href="http://blog.gobansaor.com/contact/">do contact me</a>. I&#8217;ve been working with this technology for over 5 years (and have 30 odd years of experience with good-old reliable &#8220;ground-based systems&#8221;,</p>
<h6><em>What&#8217;s with the bucket picture? S3 calls its primary data storage unit a bucket.</em></h6>
<p>UPDATE:</p>
<p><em>IAM is now available from the AWS Management Console <a href="http://aws.typepad.com/aws/2011/05/identity-and-access-management-console-support.html">http://aws.typepad.com/aws/2011/05/identity-and-access-management-console-support.html</a></em></p>
<p><em><br />
</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1497/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1497&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2011/03/30/s3-as-an-excel-hub/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/03/amazons3_bucket.jpg?w=300" medium="image">
			<media:title type="html">amazons3_bucket</media:title>
		</media:content>
	</item>
		<item>
		<title>Steam Powered PowerPivot</title>
		<link>http://blog.gobansaor.com/2011/03/16/steam-powered-powerpivot/</link>
		<comments>http://blog.gobansaor.com/2011/03/16/steam-powered-powerpivot/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 12:19:05 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[PowerPivot]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Steam Powered Server]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[microETL]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1430</guid>
		<description><![CDATA[In previous posts I described various options for enabling PowerPivot models (or indeed any Excel model) as the hub in a hub&#8217;n'spoke application. This thin&#8217;n'core approach is the norm for web apps as it was for the client server applications &#8230; <a href="http://blog.gobansaor.com/2011/03/16/steam-powered-powerpivot/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1430&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://gobansaor.files.wordpress.com/2011/03/steam-engine-driven-wheel.jpg"><img class="alignleft size-full wp-image-1436" title="steam engine driven wheel" src="http://gobansaor.files.wordpress.com/2011/03/steam-engine-driven-wheel.jpg?w=500" alt=""   /></a>In previous posts I described <a href="http://blog.gobansaor.com/2011/02/12/python-powered-powerpivot/">various</a> options for enabling <a href="http://blog.gobansaor.com/2011/02/06/excel-as-a-diy-web-service/">PowerPivot models (or indeed any Excel model) as the hub</a> in a hub&#8217;n'spoke application. This thin&#8217;n'core approach is the norm for web apps as it was for the client server applications that preceded them.</p>
<p>But as we know, Excel &#8220;applications&#8221; rarely follow this pattern.</p>
<p>They tend to follow a more peer-to-peer topology, often with each player being an &#8220;equal&#8221;; collaboration being the primary aim rather than service provision.</p>
<p>But even in such scenarios there usually is a hub at the centre providing the communication linkages. Most likely the company&#8217;s email system or a &#8220;<a href="http://en.wikipedia.org/wiki/Shared_resource">shared drive</a>&#8221; of some sort. In fact, on many corporate teams or projects, you know you&#8217;ve been accepted into the fold when the project manager says the magic words &#8220;I&#8217;ll get you access to the shared drive&#8221;.</p>
<p>But sometimes, hub-like service provision or a single controller role is required and in such situations one of the <em>spokes</em> takes over that responsibility. For example, in a budgeting scenario one <em>spoke</em> may be the source of historical stats, in effect, performing a service role.</p>
<p>If classic client-server uses the powered-hub-driving-the-client-spokes like the driven wheels of a car as an analogy, then many Excel systems could be compared to a steam engine&#8217;s driven wheels; where the hub provides a centre to rotate about but it&#8217;s a particular spoke that does the driving due to its linkages to the piston arm.</p>
<p>Such systems built around the sending back and forth of workbooks or CSV files via email or shared drives are common and most of us have seen them in action. Most tend to be manual, in that they require user action on both client and server side, but with a bit of VBA magic one or both can be automated. Options for doing so on the server side are:</p>
<ul>
<li>A VBA loop that sleeps and checks for change, process any changes and sleeps &#8230;</li>
<li>Trigger a <a href="http://blog.gobansaor.com/2011/03/04/sqlscript-microetls-sql-sequencer-utility/">microETL.SQLScript</a> using a COM automation call from a external program like that used in <a href="http://blog.gobansaor.com/2011/02/12/python-powered-powerpivot/">this scenario</a>.</li>
<li>Trigger a script using an <a href="http://msdn.microsoft.com/en-us/library/aa140059(v=office.10).aspx">RTD Serve</a>r that checks for new activity.</li>
<li>Use a &#8220;Javascript&#8221; timer as per <a href="http://www.excelhero.com/blog/2010/05/multi-threaded-vba-update.html">Excel Hero&#8217;s neat trick</a>.</li>
</ul>
<p>RTD servers are rarely encountered in the wild as they only appeared on the scene in Excel XP and were not the easiest things to code or understand but now new tools such as <a href="http://blog.gobansaor.com/2007/10/04/javascript-as-an-excel-scripting-language-via-exceldna/">ExcelDNA</a> makes coding RTDs much more approachable and useful.</p>
<p><a href="http://www.excelhero.com/about/about.html">Daniel Ferry</a>&#8216;s JSTimer idea is a simpler VBA alternative to an RTD and is non-blocking unlike a pure VBA sleep-check-sleep loop. It also has the advantage that no add-in is required so the client-side could be a single-file macro-enabled workbook.</p>
<p>Using a <a class="zem_slink" title="Shared resource" href="http://en.wikipedia.org/wiki/Shared_resource" rel="wikipedia">shared folder</a> or email as the conduit for passing data back and forth and using Excel files or CSVs as the data artefacts may be the obvious choices but other &#8220;more modern&#8221; alternatives exist.</p>
<p>For example, for situations where a shared folder isn&#8217;t an option why not use something like<a href="http://aws.amazon.com/s3/"> Amazon&#8217;s S3</a>? S3 is secure (much more secure than external email), reliable, simple to use and extremely cheap. A modern-day alternative to an FTP server. Ideal for big corporates,SMEs and sole-traders.</p>
<p>Orchestrating the processing of files on S3 is very simple using tools such as <a href="http://code.google.com/p/boto/">Python&#8217;s Boto</a> (another good reason for having Python in-built in microETL). For the client-side, pure VBA could  be used, see <a href="http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/">my xlAWS code</a>.</p>
<p>Likewise, using workbooks as the medium of data exchange is usually the first option, with CSV files a close second. But since Excel 2003 Professional, Excel has had excellent support for the exchange of XML files via <a href="http://office.microsoft.com/en-us/training/so-that-s-how-using-xml-in-excel-2003-RZ001131077.aspx">XML Maps</a>. Although not useful for highly complex schemas or <a href="http://blog.gobansaor.com/2011/02/12/python-powered-powerpivot/">very large datasets</a> (both of which are anyway the work of the devil <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), XML Maps are really good at handling relatively simple dialog and configuration inter-change requirements.</p>
<p>The process of importing/exporting data via XML can be easily automated using basic VBA but can also be safely left under manual control. XML files can also be generated and read by non-Excel components.</p>
<p>So when you&#8217;re confronted with a PowerPivot model that is not suitable for direct sharing, due to:</p>
<ul>
<li>technical constraints e.g. non-2010 clients</li>
<li>or business reasons e.g. detail data behind model, or the model itself, needing to be kept secret</li>
<li>or model complexity reasons i.e. too complex for a single PowerPivot model &#8230;</li>
</ul>
<p>&#8230; investing in a top-of-the-range <a class="zem_slink" title="Microsoft SharePoint" href="http://en.wikipedia.org/wiki/Microsoft_SharePoint" rel="wikipedia">SharePoint</a> farm is not your only option. By utilising some of the enormous power that comes as standard with Excel such as VBA, XML Maps, RTDs etc. further empowered by an Excel-focused ETL tool such as <a href="http://blog.gobansaor.com/category/microetl/">microETL</a> a lot can be achieved on a relatively small budget.</p>
<p>If you need help designing or configuring such a scenario or need help in understanding where PowerPivot can fit in to your decision making and information distribution requirements, <a href="http://blog.gobansaor.com/contact/">contact me</a>. <a href="http://www.gobansaor.com/">My job in life is to provide than help &#8230;</a></p>
<p>Download latest version of microETL from <a href="http://www.gobansaor.com/microetl">http://www.gobansaor.com/microetl</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1430/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1430/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1430/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1430&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2011/03/16/steam-powered-powerpivot/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<georss:point>53.204039 -6.574340</georss:point>
		<geo:lat>53.204039</geo:lat>
		<geo:long>-6.574340</geo:long>
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2011/03/steam-engine-driven-wheel.jpg" medium="image">
			<media:title type="html">steam engine driven wheel</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows on EC2 = SMEs on EC2</title>
		<link>http://blog.gobansaor.com/2008/10/26/windows-on-ec2-smes-on-ec2/</link>
		<comments>http://blog.gobansaor.com/2008/10/26/windows-on-ec2-smes-on-ec2/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 16:51:18 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[EC2 Windows desktop]]></category>
		<category><![CDATA[Jungle Disk]]></category>
		<category><![CDATA[parallels]]></category>
		<category><![CDATA[Win2003]]></category>
		<category><![CDATA[Windows on EC2]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=549</guid>
		<description><![CDATA[The announcement that Win2003 is now an an option on EC2, is very significant, that and EC2&#8242;s exit from beta status with an SLA in tow, means that AWS is now very much more appealing to the great unwashed, the &#8230; <a href="http://blog.gobansaor.com/2008/10/26/windows-on-ec2-smes-on-ec2/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=549&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://aws.amazon.com/windows/">announcement that Win2003</a> is now an an option on EC2, is very significant, that and EC2&#8242;s exit from beta status with an SLA in tow, means that AWS is now very much more appealing to the great unwashed, the SMEs. i.e. the businesses who form the backbone of most of our economies.</p>
<p>Large companies and start-ups are comfortable in the world of Linux servers but most small companies are Windows to the core.  This may not be &#8220;right&#8221;, this may not be how it &#8220;should be&#8221;, but it is so.   Even within large companies, departmental computing is largely a Windows only enclave, with MS Office (and Excel in particular) as the backbone and MS SQL Server as the database of choice (or is that, no choice).</p>
<p>The other interesting thing is that <a href="http://blog.gobansaor.com/2008/10/01/clouds-not-longer-pass-by-windows/">my fear that EC2 SQL Server Standard instances would be licensed as per Oracle</a> has not come to pass (Oracle while making a &#8220;big thing&#8221; of their recent EC2 cloud conversion, still insist on traditional licensing for EC2 database instances). SQL Server Standard is available on a pay-as-you-go model, brilliant!.</p>
<p>Even if running Win2003 as a server doesn&#8217;t catch your fancy and in fact you would much rather get rid of your existing Window&#8217;s laptop to be replaced by a cool new Apple Mac. Unfortunately you still need the ability to run Windows-only software, why not use EC2 as your on-demand pay-as-you-go Window&#8217;s desktop replacement?  Simply configure a Windows AMI with your required software (you may have to use something<a href="http://blogs.techrepublic.com.com/window-on-windows/?p=42"> like this</a>, if software is only available on CD); you could then use <a href="http://www.jungledisk.com/">Jungle Disk</a> to easily share data (via S3) between your new shiny Mac and the AMI.  Power up and down as required, easier than using VMWare or <a href="http://www.parallels.com">Parallels</a> and @ 12.5c per hour, probably cheaper too.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/549/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/549/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/549/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=549&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/10/26/windows-on-ec2-smes-on-ec2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>Amazon&#8217;s SAN in the cloud is a mirage&#8230;</title>
		<link>http://blog.gobansaor.com/2008/08/09/amazons-san-in-the-cloud-is-a-mirage/</link>
		<comments>http://blog.gobansaor.com/2008/08/09/amazons-san-in-the-cloud-is-a-mirage/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 13:44:18 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[EBS]]></category>
		<category><![CDATA[Elastic Block Store]]></category>
		<category><![CDATA[Elastic IP]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=446</guid>
		<description><![CDATA[This morning I got very excited.  While quickly scanning the headlines of the 1000+ unread feeds that had accumulated in my Google Reader this week, one heading in particular caught my attention, &#8220;Amazon Elastic Block Store goes live!&#8220;. The post &#8230; <a href="http://blog.gobansaor.com/2008/08/09/amazons-san-in-the-cloud-is-a-mirage/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=446&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This morning I got very excited.  While quickly scanning the headlines of the 1000+ unread feeds that had accumulated in my <a href="www.google.com/reader">Google Reader</a> this week, one heading in particular caught my attention, &#8220;<strong>Amazon Elastic Block Store goes live!</strong>&#8220;.</p>
<p>The post from the <a href="http://blog.rightscale.com/">Right Scale folks</a> gives a detailed overview of the new  Amazon ‘<a href="http://en.wikipedia.org/wiki/Storage_area_network">SAN storage</a> in the cloud’ service, aka Elastic Block Store, aka EBS.  Alas, this particular cloud offering was a mirage, the post was subsequently removed (but can still be viewed on <a href="http://www.google.com/reader/shared/14480565058256660224">Robert Scoble&#8217;s Shared Items</a>) it seems the post was a work-in-progress and not intended for publishing, yet!</p>
<p>Why was I so excited?  <a href="http://aws.amazon.com/ec2">Amazon EC2</a> had two major shortcomings when it launched 2 or so years ago; the first, ephemeral IP addresses, was solved by the new <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1346">Elastic IP feature</a>; the second, ephemeral storage volumes (when you shutdown an instance the disks are wiped!) is due to be solved by EBS.  With both of these problems solved, EC2, already near perfect, would be perfect.</p>
<p>The article does a good job of explaining the new service&#8230;</p>
<blockquote><p>EBS starts out really simple: you create a volume from 1GB to 1TB in size and then you mount it on a device on an instance, format it, and off you go. Later you can detach it, let it sit for a while, and then reattach it to a different instance. You can also snapshot the volume at anytime to S3, and if you want to restore your snapshot you can create a fresh volume from the snapshot.</p></blockquote>
<p>The thing that caught my eye in the above paragraph was the snapshot facility.  Snapshots are to be stored on <a href="http://aws.amazon.com/s3">S3</a> via an EC2-specific incremental-snapshot API.  This means the volumes will come with a built-in back-up facility. This is important as EBS drives reside in one <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1347">availability zone</a> (that of the instance that they are mounted against) and do not have the data replication security offered by S3.  It also means that disk systems can be restored quickly and simply from snapshots without the overhead  (and bugs!) of writing an S3 specific incremental backup and restore utility.</p>
<p>Back to waiting&#8230;</p>
<p><strong>UPDATE: 20th August</strong></p>
<p><a href="http://blog.rightscale.com/2008/08/20/amazon-ebs-explained/">Wait over&#8230;</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/446/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/446/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/446/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=446&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/08/09/amazons-san-in-the-cloud-is-a-mirage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>Amazon S3; there&#8217;s a holdup on the buckets, Dear Liza&#8230;</title>
		<link>http://blog.gobansaor.com/2008/07/20/s3-down/</link>
		<comments>http://blog.gobansaor.com/2008/07/20/s3-down/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 22:58:15 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[S3]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=405</guid>
		<description><![CDATA[Amazon&#8217;s S3 service has been down since 9.00am PDT but I only noticed an hour ago (2.30pm PDT) when a EC2 instance launch failed. Am I worried? No, but as I become more and more dependent on such services, perhaps &#8230; <a href="http://blog.gobansaor.com/2008/07/20/s3-down/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=405&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Amazon&#8217;s S3 service has been down since 9.00am PDT but I only noticed an hour ago (2.30pm PDT) when a EC2 instance launch failed.</p>
<p>Am I worried? No, but as I become more and more dependent on such services, perhaps I will, but then again at least I&#8217;ll not be alone.  WordPress.com and countless others will be using the same excuse to their customers and unlike <a href="http://www.leonardrossiter.com/reginaldperrin/Train.html">Renginald Perrin</a> who had a different excuse every day for his train&#8217;s late arrival&#8230;</p>
<p><span style="font-family:Tahoma;">Ep.1   &#8220;Eleven minutes late, staff difficulties, Hampton Wick.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.1   &#8220;Eleven minutes late, signal failure at Vauxhall.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.1   &#8220;Eleven minutes late, staff shortages, Nine Elms.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.1   &#8220;Eleven minutes late, derailment of container truck, Raynes Park.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.1   &#8220;Eleven minutes late, seasonal manpower shortages, Clapham Junction.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.2   &#8220;Eleven minutes late, defective junction box, New Malden.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.4   &#8220;Eleven minutes late, overheated axle at Berrylands.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.4   &#8220;Eleven minutes late, defective axle at Wandsworth.&#8221;</span><br />
<span style="font-family:Tahoma;">Ep.5   &#8220;Eleven minutes late, somebody had stolen the lines at Surbiton.&#8221;</span></p>
<address>&#8230; <strong>a whole industry will shout in unison </strong>&#8220;6 hours late (and counting), overheated axle on US Buckets&#8230;&#8221;</address>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/405/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/405/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/405/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=405&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/07/20/s3-down/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>New Banner, New Logo, New Disk and a new S3 Firefox extension.</title>
		<link>http://blog.gobansaor.com/2008/05/31/new-banner-new-logo-new-disk-and-a-new-s3-firefox-extension/</link>
		<comments>http://blog.gobansaor.com/2008/05/31/new-banner-new-logo-new-disk-and-a-new-s3-firefox-extension/#comments</comments>
		<pubDate>Sat, 31 May 2008 17:35:45 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Ballinafagh]]></category>
		<category><![CDATA[Blessington]]></category>
		<category><![CDATA[Firefox V3]]></category>
		<category><![CDATA[logo]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=374</guid>
		<description><![CDATA[I&#8217;ve just uploaded a new banner image based on a photo of Ballinafagh Lake at dusk with my new logo layered over it using Paint .NET. The previous banner was based on this photo of willow &#8216;down&#8217; covering a lake-side &#8230; <a href="http://blog.gobansaor.com/2008/05/31/new-banner-new-logo-new-disk-and-a-new-s3-firefox-extension/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=374&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just uploaded a new banner image based on a photo of Ballinafagh Lake at dusk with my new logo layered over it using <a href="http://www.getpaint.net/index.html">Paint .NET.</a><a href="http://gobansaor.files.wordpress.com/2008/05/snowinjune.jpg"><img class="alignright alignnone size-full wp-image-373" style="float:right;" src="http://gobansaor.files.wordpress.com/2008/05/snowinjune.jpg?w=500" alt=""   /></a></p>
<p>The previous banner was based on this photo of willow &#8216;down&#8217; covering a lake-side tree at Russeltown on  Blessignton Lake.</p>
<p>Both lakes are in fact man-made.  <a href="http://www.southdublintourism.ie/index.php?option=com_content&amp;task=view&amp;id=167&amp;Itemid=210">Blessington</a> is a reservoir for the Pollahuca hydroelectric plant and is now the major water source for most of North Kildare and large parts of Dublin City.  <a href="http://www.wikisandbox.com/page/Ballinafagh+Lake?t=anon">Ballinafagh</a> is an abandoned reservoir for the <a href="http://www.sip.ie/sip070/A%20History%20of%20the%20Grand%20Canal.html">Grand Canal system</a> and is a magical spot, particularly when visited on a summer&#8217;s evening or at dusk in winter.</p>
<p>I&#8217;ve also discovered <a href="http://overstimulate.com/projects/s3">s3://</a>, a new Firefox extension for accessing Amazon S3.  Really simple to use, rather than an FTP type approach, it uses the URLbar.  By going to s3:// you can add your Amazon S3 credentials and then manage your buckets, upload new files, or delete existing files.</p>
<p>Big plus, it works with Firefox 3; <a href="http://overstimulate.com/projects/s3">S3Fox</a> has not yet made the leap (even using <a href="http://www.oxymoronical.com/web/firefox/nightly">Nighly Tester Tools</a> extension to force compatibility wouldn&#8217;t work &#8211; same applies to the EC2 management extension, <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609">Elasticfox</a> ).  In fact a whole heap of extensions are not Firefox 3 RC compatible, so much so, when I rebuilt my machine this week after a disk failure, I reverted back to V2.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/374/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/374/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/374/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=374&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/05/31/new-banner-new-logo-new-disk-and-a-new-s3-firefox-extension/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>

		<media:content url="http://gobansaor.files.wordpress.com/2008/05/snowinjune.jpg" medium="image" />
	</item>
		<item>
		<title>xlAWS &#8211; 100,000 downloads?</title>
		<link>http://blog.gobansaor.com/2008/04/02/xlaws-100000-downloads/</link>
		<comments>http://blog.gobansaor.com/2008/04/02/xlaws-100000-downloads/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 18:08:30 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Proto]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SimpleDB]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[xlAWS]]></category>
		<category><![CDATA[xLite]]></category>
		<category><![CDATA[Community Code]]></category>
		<category><![CDATA[VB6]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=358</guid>
		<description><![CDATA[Not sure, but this morning I received my monthly AWS bill, and it was double its usual amount! When I investigated the extra cost it was due to 133GBs of downloads from my www2.gobansaor.com bucket. This is the S3 bucket &#8230; <a href="http://blog.gobansaor.com/2008/04/02/xlaws-100000-downloads/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=358&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Not sure, but this morning I received my monthly AWS bill, and it was double its usual amount!  When I investigated the extra cost it was due to 133GBs of downloads from my www2.gobansaor.com bucket.  This is the S3 bucket in which I store the xlAWS zip file, <a href="http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/">xlAWS being a &#8220;library-of-sorts&#8221;</a> of VBA/VB6 helper code for accessing <a href="http://www.amazon.com/gp/browse.html?node=16427261">Amazon S3</a> and <a href="http://www.amazon.com/SimpleDB-AWS-Service-Pricing/b/ref=sc_fe_l_2?ie=UTF8&amp;node=342335011&amp;no=3440661&amp;me=A36L942TSJ2AJA">SimpleDB</a>.</p>
<p>It&#8217;s linked to from <a href="http://blog.gobansaor.com/projects/xlaws/">this page</a> on my blog (which has had 200 or so hits this month) and from this <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1275&amp;categoryID=114">AWS Community Code page</a>.  The excessive hits on the bucket started on the 28th of Feb , the day the xlAWS code was published on Amazon and continued through most of March.  Talking the size of the zip file, 133GB represents approximately 100,000 downloads.  I don&#8217;t have server logging enabled on the bucket, so I can&#8217;t be sure how much is due to the other public files in the bucket (all belonging to the VBA/Proto SQLite <a href="http://blog.gobansaor.com/projects/xlite/">xLite project</a>), but as that project has been available for months and is accessible only through my website (who&#8217;s stats show a consistent 5-10 downloads per week) I&#8217;m guessing the downloads are for xlAWS.</p>
<p>Who would have though that there would be such interest in VBA/VB6 code for accessing AWS services!  I wonder was it the Excel VBA side of the house or the <a href="http://www.bitwisemag.com/copy/features/vb6/strangedeathofvb.html">dispossessed  (and p*ssed off) VB6 developer hoards</a> who downloaded it the most? Leave a comment if you downloaded and used the library, I&#8217;d love to know.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/358/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/358/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/358/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/358/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/358/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/358/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/358/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/358/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/358/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/358/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/358/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/358/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/358/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/358/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/358/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/358/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=358&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/04/02/xlaws-100000-downloads/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
		<item>
		<title>Postgres Plus Cloud Edition is boring &#8230;</title>
		<link>http://blog.gobansaor.com/2008/03/27/postgres-plus-cloud-edition-is-boring/</link>
		<comments>http://blog.gobansaor.com/2008/03/27/postgres-plus-cloud-edition-is-boring/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 20:52:45 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[olap]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SimpleDB]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Elastra]]></category>
		<category><![CDATA[EnterpriseDB]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=357</guid>
		<description><![CDATA[&#8230; and that&#8217;s good. That&#8217;s how I like my databases, boring, reliable, consistent, easy to use. SimpleDB on the other hand is not boring, it&#8217;s an exciting new shiny thing that opens up a myriad of new possibilities; but first, &#8230; <a href="http://blog.gobansaor.com/2008/03/27/postgres-plus-cloud-edition-is-boring/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=357&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230; and that&#8217;s good.  That&#8217;s how I like my databases, boring, reliable, consistent, easy to use.</p>
<p><a href="http://blog.gobansaor.com/2007/12/14/simpledb-s3-distributed-document-centric-database/">SimpleDB</a> on the other hand is not boring, it&#8217;s an exciting new shiny thing that opens up a myriad of new possibilities; but first, I and the rest of the developer community, need to tool up and cast aside some of our cherished database design patterns (oh like, 3rd normal form, strong typing, joins, nothing major) and embrace a slightly different way of thinking, however, as much as I like a challenge, I also like to get things done.</p>
<p>That&#8217;s where <a href="http://www.enterprisedb.com/products/postgres_plus_as/cloud.do">EnterpriseDB&#8217;s new Postgres Plus Cloud Edition</a> comes in, this is an Amazon Ec2/S3 hosted edition of their Oracle compatible PostgreSQL-based product that offers the scalability of SimpleDB but the familiarity of a traditional relational database.  The <a href="http://www.elastra.com/products/elastra-cloud-server/">&#8220;magic&#8221; is supplied by Elastra</a>, who are also offering the same functionality against MySQL and standard PostgreSQL databases.</p>
<p>A <a href="http://www.talend.com">Talend ETL</a> job which I had been developing for a client, had been tested against a &#8220;normal&#8221; EnterpriseDB instance.  This ETL job was part of a BI prototype trialling a Postgres Plus Cloud Edition (the new name for EnterpriseDB&#8217;s cloud offering) as the back-end database. So, I exported the job as a Java executable, fired up an EC2 instance, copied up the generated JAR files, changed the database&#8217;s hostname to that of the Postgres Plus  &#8220;cloud&#8221; database, ran the ETL job and it worked. As I said, boring, nothing to report, it just worked.</p>
<p>Now you may be wondering what&#8217;s so special about these Elastra powered databases, surely EC2 is no different from any other Linux  virtual  machine, why not simply install a standard database?  The problem with EC2, and it is a problem to those of us (i.e. practically every IT pro on the planet) who have come to expect highly reliable RAID backed disk storage, is the non-permanence of its disk systems.</p>
<p>When an EC2 instance is powered down or fails, the disk system is wiped!</p>
<p>That, combined with fixed (if generous) disk sizes (160GB, 850GB or 1690GB), means that often a clustered database environment is a necessity, adding considerably to the complexity.   It&#8217;s this sort of complexity that SimpleDB and Elastra address.</p>
<p>The obvious use-case for both Elastra and SimpleDB  is as data stores for <a href="http://en.wikipedia.org/wiki/OLTP">OLTP applications</a> but Elastra&#8217;s ability to handle S3-backed massive databases means the possibility of using EC2 as a data warehousing platform is also considerably strengthened.  Although not obvious at first glance, SimpleDB could also act as an <a href="http://en.wikipedia.org/wiki/Olap">OLAP</a> data store; SimpleDB massively indexed tuples as &#8220;sparse dimensions&#8221; pointing to S3 objects (SQLite databases?) that hold the fact data combined with dense/&#8221;partioning&#8221;  dimensions (e.g. Time).  Possible ? Yes. Fun to do? Yes.  A solution that I can apply tomorrow? No, that&#8217;s why I&#8217;m glad EnterpriseDB and Elastra are delivery such a boring product!</p>
<p>UPDATE Ec2:</p>
<p>The other big EC2 missing &#8211; non-permanent IP addresses &#8211; has at last been addressed. EC2 now offers &#8220;Elastic IP Addresses&#8221;, addresses associated with an account not an instance. If the instance fails or is shut down, the IP address can either be immediately re-assigned to a new instance (no more waiting for Dynamic DNS propagation)<span class="small"></span>  or &#8220;reserved&#8221; for future use at a cost of USD0.01c per hour.    Also, the new &#8220;multiple locations&#8221; facility puts the API changes in place to allow for location selection, hopefully a sign that we here in Europe will have &#8220;local&#8221; EC2 instances to match our European S3 buckets!</p>
<p>UPDATE EnterpriseDB:</p>
<p>It looks like <a href="http://www.johnmwillis.com/enterprisedb/ibm-invests-in-enterprisedb/">IBM have invested in EnterpriseDB</a>, possibly as a counter-weight against Sun&#8217;s acquisition of MySQL (EnterpriseDB&#8217;s targeting of Oracle&#8217;s customer base would also be an added benefit!).</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/357/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/357/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/357/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=357&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/03/27/postgres-plus-cloud-edition-is-boring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b714f82b5e24beb3b74779615b6ad969?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">gobansaor</media:title>
		</media:content>
	</item>
	</channel>
</rss>
