<?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; programming</title>
	<atom:link href="http://blog.gobansaor.com/category/programming/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; programming</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>Really Simple Systems</title>
		<link>http://blog.gobansaor.com/2011/04/19/really-simple-systems/</link>
		<comments>http://blog.gobansaor.com/2011/04/19/really-simple-systems/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 13:43:18 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[excel]]></category>
		<category><![CDATA[microETL]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Really Simple Systems]]></category>
		<category><![CDATA[uzERP]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/?p=1554</guid>
		<description><![CDATA[Organisations large and small depend on packaged software solutions for their core processes, and this is how it should be, the idea of writing your own ERP system or word processor makes no economic sense even if your business model &#8230; <a href="http://blog.gobansaor.com/2011/04/19/really-simple-systems/">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=1554&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/19/really-simple-systems/keep-it-simple-clear/" rel="attachment wp-att-1665"><img class="alignleft size-medium wp-image-1665" title="keep-it-simple-clear" src="http://gobansaor.files.wordpress.com/2011/04/keep-it-simple-clear.png?w=300&#038;h=169" alt="" width="300" height="169" /></a>Organisations large and small depend on packaged software solutions for their core processes, and this is how it should be, the idea of writing your own ERP system or word processor makes no economic sense even if your business model is an extreme outlier. Differentiation does exist, the ERP system that a mining company would need would be significantly different from a chain of retail stores but most of the major (and minor) niches have packaged offerings to suit.</p>
<p style="padding-left:30px;"><em>(Unless you&#8217;re a certain <a href="http://www.severndelta.co.uk/">SME manufacturing company in the South-West of England</a> that couldn&#8217;t find a suitable and affordable ERP package for its type of business; well then, developing an open-source one to help you and your fellow SMEs is, it seems, a viable option, resulting in<a href="http://www.uzerp.com/"> uzERP</a>!)</em></p>
<p>Many organisations will commission changes to these packages to better fit their way of doing business . In fact, such modifications are a major source of revenue for package providers (and as a result a major cost to those customers who will not &#8220;bend&#8221; to the packages&#8217; default process flows).</p>
<p>The advice for those who either don&#8217;t have the money to commission changes (or who wish to avoid such costs) is to fit in with the package&#8217;s way of doing things (which as most will be &#8220;industry best practices&#8221; can often be a good thing) or use &#8220;off-line&#8221; processes to handle the exceptions. In some such cases a bespoke professionally delivered software solution might be the result; but for many the more usual &#8220;solution&#8221; to to those out-of-scope processes is &#8220;<em><strong>Simple!, you could easily do that in Excel</strong></em>&#8220;. Yet another recruit for the <a href="http://blog.gobansaor.com/2009/10/25/excel-as-the-ipod-of-downloaded-data/">Excel -driven world of <em><strong>Shadow IT</strong></em></a>.</p>
<p>Whether such &#8220;systems&#8221; are the casualties of <em>scope warfare</em> or the preferred means of <em>getting things done</em> by Excel-savvy end-users they are part of every organisation&#8217;s IT landscape. They&#8217;re not going away, yet they receive scant attention from professional IT who often regard them as &#8220;somebody else&#8217;s problem&#8221;.</p>
<p>The end result is sub-optimal; although the business logic encoded in these spreadsheets is often of the highest quality and extremely fit-for-purpose (as it&#8217;s the work of those with the greatest insight of the problems at hand) the processes of moving data in and out (and when inside, efficently processing such data) is usually highly time-consuming, manual and error prone. This is where I come in.</p>
<p>I can wrap such &#8220;Simple Systems&#8221; is a professional &#8220;envelope&#8221; that will automate the flow of data in, out and within the process while keeping the likely-to-change business logic in Excel. Even when the Excel formula-based business logic needs to be converted to &#8220;code&#8221; (perhaps for performance or automation reasons) most likely that code will be in VBA (a language familiar to many <em><a href="http://blog.gobansaor.com/2010/05/12/time-assets/">citizen programmers</a></em>) which can also be made configurable via a simple Excel &#8220;table&#8221; rather than some obscure XML dialect.</p>
<p>To get started, send me your existing workbooks (with or without data) with a short note describing the process they support and what you would like to automate or change. I&#8217;ll likely respond with some further questions re the process and perhaps made some further suggestions for automation. When we&#8217;ve agreed a &#8220;deliverable&#8221; I&#8217;ll get back to you with a fixed price quote.</p>
<p>The idea is to turn &#8220;Simple Systems&#8221; into &#8220;Really Simple System&#8221; not works of software art. The main interface will continue to be Excel enhanced by Excel-based tools (mainly my<a href="http://www.gobansaor.com/microetl"> microETL add-in</a> and perhaps add-ins such as <a href="http://blog.gobansaor.com/category/PowerPivot">PowerPivot</a> for added reporting goodness). Separating data-flow from business logic is usually the major change. It&#8217;s also important to be clear what parts of the process need to remain &#8220;user-configurable&#8221; and which parts are to be &#8220;professionally&#8221; automated.</p>
<p>The <em>user-configurable parts</em> will need to continue to be Excel-formula based or as code that&#8217;s at a level the user is happy to engage with, or as code controlled via <em>configuration tables</em>. The <em>professional parts</em> will be developed by a professional (me!) with the expectation that a professional (i.e somebody proficient in Excel, VBA and SQL) would be required to modify the (always supplied) source code.</p>
<p>Highly configurable solutions are sometimes more expensive than &#8220;black boxed&#8221; ones, with the most user-configurable option &#8211; leave as is &#8211; the cheapest (until you take into account the payroll costs of those staff repeating the same easily-automated task over and over again!).</p>
<p><a href="http://www.gobansaor.com/contact-tom">Contact Tom &#8230;</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/1554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/1554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/1554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/1554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/1554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/1554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/1554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/1554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/1554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/1554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/1554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/1554/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/1554/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/1554/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=1554&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2011/04/19/really-simple-systems/feed/</wfw:commentRss>
		<slash:comments>6</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/keep-it-simple-clear.png?w=300" medium="image">
			<media:title type="html">keep-it-simple-clear</media:title>
		</media:content>
	</item>
		<item>
		<title>Boy scratches Python&#8230;</title>
		<link>http://blog.gobansaor.com/2008/07/05/boy-scratches-python/</link>
		<comments>http://blog.gobansaor.com/2008/07/05/boy-scratches-python/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 18:42:00 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[education]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[Scratch]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=386</guid>
		<description><![CDATA[I&#8217;ve written before about Scratch, a teaching platform developed by MIT to introduce kids to the art of programming. My son has been playing around with Scratch for over a year and although he still enjoys it, he&#8217;s showing signs &#8230; <a href="http://blog.gobansaor.com/2008/07/05/boy-scratches-python/">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=386&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve <a href="http://blog.gobansaor.com/2007/02/19/want-your-kids-to-have-the-programming-itch-then-scratch-it/">written before about Scratch</a>, a teaching platform developed by MIT to introduce kids to the art of programming. My son has been playing around with Scratch for over a year and although he still enjoys it, he&#8217;s showing signs of needing to move to the next level, a &#8216;real&#8217; programming language.  I decided that Python, being <a href="http://blog.gobansaor.com/2008/04/11/python-the-new-vba/">one</a> of my own <a href="http://blog.gobansaor.com/2008/05/05/python-to-replace-vb6/">favourite languages</a>, would be an ideal next step, particularly when I discovered <a href="http://www.pygame.org/wiki/about">PyGame</a>, a Python library based on <a href="http://www.libsdl.org/">SDL</a>.</p>
<p>Using Pygame with its similar problem domain to that of Scratch would, I figured, make the transition to a grown-up platform easier, and so it has; concepts such as sprite, coordinates, animation etc. are common to both.  I took him through the <a href="http://www.pygame.org/docs/tut/chimp/ChimpLineByLine.html">&#8220;Pummel the Chimp&#8221; tutorial</a>, expecting his young eyes to glaze over within 10 minutes, but no, a hour later he was still engaged and learning.  Why? He already has a deep understanding of programming, particularly object oriented programming, all thanks to Scratch.</p>
<p>Most of this knowledge he acquired without any help for me, I simply introduced him to Scratch and explained one or two concepts (variables and messages/method calls) which he initially had trouble with, the rest he picked up from looking at other Scratch projects and from writing his own.</p>
<p>So if your kids (or even you) have an itch to learn the essence of programming in a fun and effective way, then <a href="http://scratch.mit.edu/">Scratch</a> it.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/386/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/386/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/386/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/386/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/386/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=386&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/07/05/boy-scratches-python/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>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>xlAWS &#8211; Excel VBA Code for accessing Amazon&#8217;s S3 and SimpleDB</title>
		<link>http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/</link>
		<comments>http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 19:34:12 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[SimpleDB]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[System.Security.Cryptography.HMACSHA1]]></category>
		<category><![CDATA[VB6]]></category>
		<category><![CDATA[VBA HMACSHA1]]></category>
		<category><![CDATA[xlAWS]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/?p=353</guid>
		<description><![CDATA[I&#8217;ve been using Amazon&#8217;s S3 service from within Excel for sometime now and as there are no libraries or examples for calling AWS services from VBA (or VB6) I had to roll my own. As with most things Excel, getting &#8230; <a href="http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/">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=353&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using Amazon&#8217;s S3 service from within Excel for sometime now and as there are no libraries or examples for calling AWS services from VBA (or VB6) I had to roll my own.  As with most things Excel, getting the job done always triumphs over elegance and industrial strength implementations, in other words it was all a bit of a &#8220;dog&#8217;s dinner&#8221;.   To remedy this and to share my experience of using S3 from within a VBA/VB6 environment, I decided to <a href="http://en.wikipedia.org/wiki/Refactor">re-factor</a> the code and to assemble it into a more re-usable form; the end result is <a href="http://blog.gobansaor.com/projects/xlaws/">xlAWS</a>.</p>
<p>It was going to be called xlS3, but while doing the exercise <a href="http://gigaom.com/2007/12/14/amazon-simple-db/">SimpleDB</a> appeared on the scene, so I decided to try accessing it from Excel, particularly as both products have a lot in common; both &#8220;simple&#8221;, both &#8220;schema-less&#8221; data stores.  Like the S3Helper code,  the simpleDBHelper module is less of comprehensive library, more a collection of useful functions which (hopefully) make working with AWS a bit easier.</p>
<p>To use this code library, you&#8217;ll need to have a good grasp of the <a href="http://www.amazonaws.com/s3">S3</a> and SimpleDB APIs and be reasonably proficient with VBA.  This is not an end-user tool, it&#8217;s for VBA (or VB6) developers.   There&#8217;s  a README and some basic examples within the  Excel VBA project to help you get started.  Code is released &#8220;in the spirit&#8221; of <a href="http://www.gnu.org/licenses/lgpl.html">LGPL</a>, you can use it how you wish, but if you add something new to the &#8220;library&#8221; (or find/fix a bug) do let the rest of us know.</p>
<p>As I&#8217;ve not been able to find a pure VBA implementation of the HMAC-SHA1 hash algorithm (and I couldn&#8217;t see an implementation within the standard &#8220;Microsoft Enhanced Cryptographic Provider&#8221; ) I&#8217;ve wrapped the open source <a href="http://xyssl.org/code/source/sha1/">XySSL  SHA1 HMAC </a>C code in a VBA friendly DLL.  This DLL (and the source, under <a href="http://www.gnu.org/licenses/lgpl.html">LGPL</a>) is included in the zip file as AWS authentication requires SHA1 HMAC signatures.</p>
<p>You&#8217;ll also obviously require an AWS account.  Credentials are stored within the workbook&#8217;s <a href="http://www.cpearson.com/excel/docprop.aspx">custom properties</a> and can be encrypted via a &#8220;key file&#8221; if required.  If you intend to use this code within VB6 (or <a href="http://www.protosw.com">Proto</a>) you&#8217;ll need to provide your own implementation of the AWSKeyData class in order to use a non-Excel persistence store.</p>
<p>You can download the project ZIP file from <a href="http://blog.gobansaor.com/projects/xlaws/">here</a>.</p>
<p>Have fun.</p>
<p><strong>UPDATE</strong></p>
<p><strong>The simpleDB signature code no longer works as it used Signature Version 1 (which it turns out was insecure), you must now use Signature Version 2. It should be simple enough to change, but as I no longer use SimpleDB I&#8217;ve not done so. Also, see below for the many non-DLL methods for calculating HMACSHA1 hashes. </strong></p>
<p>An alternative for calculating HMAC-SHA1 signatures in VBA/VB6 is a <a href="http://code.google.com/apis/checkout/samples/Google_Checkout_Sample_Code_ASP_InstallTxt.html">Google Checkout supplied COM DLL see http://bit.ly/9CIKtM</a></p>
<p>There&#8217;s the bones of a pure VBA HMAC-SHA1 implementation here <a href="http://www.eggheadcafe.com/software/aspnet/32187540/hmac-sha1-challenge.aspx">http://www.eggheadcafe.com/software/aspnet/32187540/hmac-sha1-challenge.aspx</a></p>
<p><strong>&gt;&gt;&gt;&gt;&gt;&gt;UPDATE: 17-April -1011</strong></p>
<p><strong>Here&#8217;s pure VB6 HMAC-SHA256 implementation<span style="text-decoration:line-through;"> it should be easily changed to provide</span> and it now includes a HMAC-SHA1 facility (see comment below)  <a href="http://www.vbforums.com/showthread.php?t=635398">http://www.vbforums.com/showthread.php?t=635398</a></strong></p>
<p><strong>&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</strong></p>
<p><strong>File this under: &#8220;Ya learn something new everyday&#8221;:</strong></p>
<p>It seems you can access a significant subset of .NET libraries from VB6/VBA/VbScript (including System.Security.Cryptography.HMACSHA1) see <a href="http://angrytechnician.wordpress.com/2011/02/11/replicating-phps-sha1-in-vbscript/">this</a> and <a href="http://www.eggheadcafe.com/software/aspnet/29496334/dotnet-in-vbscript.aspx"><em>dotNet in VBScript</em>.</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/353/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/353/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/353/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=353&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2008/02/22/xlaws-excel-vba-code-for-accessing-amazons-s3-and-simpledb/feed/</wfw:commentRss>
		<slash:comments>15</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>
	</item>
		<item>
		<title>Zimki &#8211; the spirt lives on &#8230;</title>
		<link>http://blog.gobansaor.com/2007/12/13/zimki-the-spirt-lives-on/</link>
		<comments>http://blog.gobansaor.com/2007/12/13/zimki-the-spirt-lives-on/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 17:36:24 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[AppJet]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Horuku]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[zimki]]></category>

		<guid isPermaLink="false">http://blog.gobansaor.com/2007/12/13/zimki-the-spirt-lives-on/</guid>
		<description><![CDATA[Although Zimki is to shut down on Christmas Eve, the ideas behind the service live on. Two new offerings, Horuku and AppJet, offer variations on the idea of hosted application development/deployment. AppJet, funded by Paul Graham&#8216;s Y-Combinator, is very similar &#8230; <a href="http://blog.gobansaor.com/2007/12/13/zimki-the-spirt-lives-on/">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=342&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Although <a href="http://blog.gobansaor.com/2007/09/25/zimki-rip/">Zimki is to shut down on Christmas Eve</a>, the ideas behind the service live on.  Two new offerings, Horuku and AppJet, offer variations on the idea of hosted application development/deployment.</p>
<p><a href="http://appjet.com/">AppJet</a>, funded by <a href="http://www.paulgraham.com/">Paul Graham</a>&#8216;s Y-Combinator, is  very similar to Zimki, being a server-side JavaScript platform.  No details yet as to what sort of paid options will be offered (all accounts are free at the moment).  Unlike Zimki there&#8217;s no plans to create an open-source version.  I like the easy &#8220;<a href="http://appjet.com/docs/guide/facebook">build a Facebook app</a>&#8221; feature; and I guess this is the sort of light-weight applications that they hope to attract.</p>
<p>Although <a href="http://heroku.com/">Heroku</a> uses Ruby-on-Rails technology, rather than JavaScript, it is closer to the original Zimki idea; but rather than take the hard (and ultimately unsuccessful in Zimki&#8217;s case) road of building an open-source platform from scratch, Heroku takes an already popular open-source project and offers it wrapped in  a full on-line development and deployment environment.  Again, being in beta, there&#8217;s no indication as to what pricing model it will operate under, but I would think that it will attract more &#8220;serious&#8221; projects than AppJet since anything developed under Heroku is pure Rails which means it can be migrated to any other Rails hosting environment; so no lock-in.    The online editor is excellent and whatever about its merits as a hosting service it&#8217;s by far the easiest way to learn and explore Ruby and Rails, even easier than <a href="http://blog.gobansaor.com/2007/06/25/ror-data-warehouse-on-ec2/">this&#8230;</a></p>
<p>If Facebook apps are your goal but you wish to use Ruby rather than AppJet&#8217;s JavaScript then not to panic, as being Ruby some bright young spark (no, not me I&#8217;m afraid) will already have done a lot of the <a href="http://blog.gobansaor.com/2007/07/19/facebook-apps-using-ruby-on-rails/">hard graft for you&#8230;</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/342/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/342/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/342/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/342/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/342/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=342&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2007/12/13/zimki-the-spirt-lives-on/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>JavaFX &#8211; a GUI DSL</title>
		<link>http://blog.gobansaor.com/2007/05/19/javafx-a-gui-dsl/</link>
		<comments>http://blog.gobansaor.com/2007/05/19/javafx-a-gui-dsl/#comments</comments>
		<pubDate>Sat, 19 May 2007 15:12:26 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[ETL]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Talend]]></category>
		<category><![CDATA[VBA]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/2007/05/19/javafx-a-gui-dsl/</guid>
		<description><![CDATA[Having mastered JavaScript (OK master is too strong a word &#8211; having become comfortable with both its syntax and usage patterns) my next port of call is JavaFX the recently announced Flash/Silverlight competitor. What led me to JavaFX Script was &#8230; <a href="http://blog.gobansaor.com/2007/05/19/javafx-a-gui-dsl/">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=278&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Having <a href="http://gobansaor.wordpress.com/2007/05/12/javascript-101/">mastered JavaScript</a> (OK master is too strong a word &#8211; having become comfortable with both its syntax and usage patterns)  my next port of call is <a href="http://www.sun.com/software/javafx">JavaFX</a> the recently announced Flash/<a href="http://blogs.zdnet.com/microsoft/?p=426">Silverlight competitor</a>.  What led me to JavaFX Script was not its role in this Flash/AJAX alternative platform  (<strike>which unless  Sun improves the JRE download experience i</strike><strike>s dead in the water</strike> they may have a chance with the <a href="http://weblogs.java.net/blog/enicholas/archive/2007/05/announcing_the.html">promised consumer JRE</a> ) but its status as the 2nd scripting language to be supported by the Java 6 <a href="http://java.sun.com/javase/6/docs/api/javax/script/ScriptEngineManager.html">ScriptEngineManager</a> &#8211; the first being JavaScript. Although the JavaFX  platform is still in alpha, the  important elements of the scripting language appear to be usable.</p>
<p>Why do I need another  scripting language? Well JavaFX Script is a DSL (<a href="http://en.wikipedia.org/wiki/Domain-specific_language">domain-specific  language</a>) and the domain in question  is  the GUI and  as a GUI DSL, JavaFX is impressive.</p>
<p>In my quest for a micro ETL environment the lack of a fast and powerful GUI tool has been a problem.   Admittedly, in my Excel/Sqlite  <a href="http://gobansaor.wordpress.com/projects/xlite/">xLite </a>suite GUI generation is not a problem as VBA forms are both fast to develop in and feature rich, but the other two options (Java and Ruby) both lack a cost-effective GUI tool (I know there&#8217;s Swing and <a href="http://www.rubycentral.com/book/ext_tk.html">Tk</a> but for somebody who&#8217;s used to the speed of development of tools such as VB forms or <a href="http://www.oracle.com/technology/products/database/application_express/index.html">Oracle&#8217;s Application Express</a>, neither appealed).  JavaFX changes all that, it&#8217;s elegant, powerful, fast to develop in and portable.  Further pushes me down the road of <a href="http://gobansaor.wordpress.com/2007/04/30/ive-got-talend-and-im-going-to-use-it/">using Talend</a> generated Java as my <a href="http://gobansaor.wordpress.com/2006/12/28/ruby-and-sqlite-a-micro-etl-environment/">micro-ETL environment</a> of choice.</p>
<p>It&#8217;s easy to dismiss JavaFX as hype but the technology behind the hype looks sound.  The language borrows powerful features from other languages, object literals from JavaScript,  list-comprehensions from Python/Erland/Haskell and first-class functions from JavaScript/Lisp all combined with the full power and glory of Java.  The end result:</p>
<blockquote><p>..is a declarative and statically typed programming language. It has first-class functions, declarative syntax, list-comprehensions, and incremental dependency-based evaluation. The JavaFX Script language makes intensive use of the Java2D swing GUI components and allows for easy creation of GUIs.</p></blockquote>
<p>Go the <a href="https://openjfx.dev.java.net/">community page</a> for FAQs, tutorials and <a href="https://openjfx.dev.java.net/JavaFX_Programming_Language.html">reference information</a>.  <a href="http:/http://www.oreillynet.com/pub/au/1738">Timothy O&#8217;Brien</a> has a good <a href="http://www.oreillynet.com/onjava/blog/2007/05/javafx_first_steps_hello_onjav_1.html">first pass</a> at calling JavaFX from a Java program and <a href="http://www.onjava.com/pub/a/onjava/2006/04/26/mustang-meets-rhino-java-se-6-scripting.html">this article</a> by <a href="http://www.oreillynet.com/pub/au/2429">John Smart</a> explains the basics of using ScriptEngineManager to call JavaScript.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/278/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/278/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/278/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/278/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/278/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=278&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2007/05/19/javafx-a-gui-dsl/feed/</wfw:commentRss>
		<slash:comments>4</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>JavaScript 101</title>
		<link>http://blog.gobansaor.com/2007/05/12/javascript-101/</link>
		<comments>http://blog.gobansaor.com/2007/05/12/javascript-101/#comments</comments>
		<pubDate>Sat, 12 May 2007 12:47:13 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[education]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/2007/05/12/javascript-101/</guid>
		<description><![CDATA[In a previous post I explained why I had decided to improve my JavaScript skills. The problem was finding a decent reference book as the ones I had looked at where amongst the worst technical books I had ever encountered; &#8230; <a href="http://blog.gobansaor.com/2007/05/12/javascript-101/">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=277&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In a<a href="http://gobansaor.wordpress.com/2007/03/22/vba-javascript-glue-languages/"> previous post I explained </a>why I had decided to improve my JavaScript skills.  The problem was finding a decent reference book as the ones I had looked at where amongst the worst technical books I had ever encountered; then I<a href="http://101out.com/js.php"> found this series of lectures</a> by <a href="http://javascript.crockford.com/">Douglas Crawford.</a> Not only are the presentations excellent but he also recommends a decent reference book,  <em><a href="http://www.amazon.com/exec/obidos/ASIN/0596101996/wrrrldwideweb">JavaScript: The Definitive Guide</a> </em>by <a href="http://www.davidflanagan.com/">David Flanagan.</a></p>
<p>More Douglas Crawford JavaScript/DOM related presentations can be found<a href="http://video.yahoo.com/?t=t&amp;p=douglascrockford"> here</a>.</p>
<p>The feature that impressed me most about JavaScript is its <a href="http://gobansaor.wordpress.com/wp-admin/funcional%20programming">functional programming</a> and <a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29">closure</a> support, a good introduction to the functional programming capabilities of JavaScript can be found <a href="http://http://www.hunlock.com/blogs/Functional_Javascript">here</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/277/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/277/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/277/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/277/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/277/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=277&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2007/05/12/javascript-101/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>VBA &amp; JavaScript &#8211; glue languages</title>
		<link>http://blog.gobansaor.com/2007/03/22/vba-javascript-glue-languages/</link>
		<comments>http://blog.gobansaor.com/2007/03/22/vba-javascript-glue-languages/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 13:14:33 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[excel]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[kettle]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Proto]]></category>
		<category><![CDATA[AmazonAWS]]></category>
		<category><![CDATA[zimki]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/2007/03/22/vba-javascript-glue-languages/</guid>
		<description><![CDATA[What have Javascript and VBA in common? Not much on the surface and their respective user bases rarely if ever overlap. What they do share are their roles as the imperative (the-if-then-else-loop-etc) programming languages of the &#8220;I&#8217;m not a programmer&#8221; &#8230; <a href="http://blog.gobansaor.com/2007/03/22/vba-javascript-glue-languages/">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=255&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What have Javascript and VBA in common?  Not much on the surface and their  respective user bases rarely if ever overlap. What they do share are their roles  as the imperative (the-if-then-else-loop-etc) programming languages of the &#8220;I&#8217;m  not a programmer&#8221; programmers, the great unwashed, the &#8220;normal&#8221; people out there  who are just trying to get something done.  VBA adds that &#8220;something special&#8221; to millions of Excel spreadsheets and MS Access databases. JavaScript does likewise  for millions of web pages.  Most of the code is copied from existing examples or  generated by macro recorders.  Often the code is not pretty, not well  structured, not adequately tested but it is usually &#8220;good enough&#8221;.</p>
<p>Both languages can also transcend their &#8220;ugly duckling&#8221; status.  If you want  to take VBA development to a new level have a look at <a href="http://www.oaltd.co.uk/ProExcelDev/Default.htm">Professional Excel  Development</a> by Bullen et al.  <a href="http://www.gmail.com">GMail</a>, <a href="http://docs.google.com">Google Docs &amp; Spreadsheets </a>and the  other AJAX powered applications of Web2.0 show the power of JavaScript.  Both languages  are now starting to move beyond their original home bases, particularly in the  case of JavaScript.</p>
<p>VBA has been used in the past as the scripting language for corporate  applications such as <a href="http://siebel.ittoolbox.com/documents/popular-q-and-a/microsoft-visual-basic-vs-siebel-visual-basic-427">Siebel</a>; now in an inspired move, <a href="http://www.protosw.com">Proto</a> opted to use VBA as  the scripting environment in their corporate focused mashup tool.</p>
<p>JavaScript is however showing the real expansionist streak. Along side its  traditional client-side role in web page DOM manipulation, Mozilla Firefox  extensions, widgets and within Flash applications under its ActionScript implementation, it can now be found providing the imperative flourish to many client and  <a href="http://en.wikipedia.org/wiki/Server-side_JavaScript">server side</a> declarative tools (e.g. <a href="http://kettle.pentaho.org">Kettle ETL</a>, <a href="http://www.openlaszlo.org/">OpenLaszlo</a> and <a href="http://www.grazr.com">Grazr</a>).  You can even use JavaScript to provide the complete server-side logic for a web application/service by  using <span style="text-decoration:line-through;">Zimki</span>.(deadpool)</p>
<p>My decision to spend time to improve my JavaScript skills was as a result of my  experience with <span style="text-decoration:line-through;">Zimk</span>i.  I initially created a web service to sign requests for  uploading files to my <a href="http://aws.amazon.com/s3">Amazon S3 </a>account; allowing me to give clients a small  executable (developed in VBA&#8217;s big brother VB6) with which to securely upload  data to S3 without the need to expose my Amazon account credentials.   This turned out to be so simple and elegant with Zimki&#8217;s <a href="http://www.mozilla.org/rhino/">Rhino based JavaScript  environment</a> that I decided this language deserved some quality time.  I had I  guess, like many others, confused the mess that is the browser-wars scared <a href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a> with JavaScript (or more correctly, EMACScript) the language.  Having looked  further, I&#8217;ve discovered an elegant,simple yet powerful language that I&#8217;m tempted  to think may become the universal <a href="http://en.wikipedia.org/wiki/Glue_language">glue-language</a>.</p>
<p>UPDATE:</p>
<p>As Tom from <span style="text-decoration:line-through;">Fotango</span> (the  Canon Europe company behind Zimki also in deadpool) points out, Zimki uses Mozilla&#8217;s C implementation of   JavaScript, <a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a> rather than <a href="http://www.mozilla.org/rhino/">Rhino</a>.</p>
<p>UPDATE: Sep 2007</p>
<p>Cannon Europe are to close the Zimki service on Dec 24th, 2007</p>
<p>UPDATE: June 2010</p>
<p>See how I combined VBA and JavaScript, to make JavaScript an Excel scripting language <a href="http://blog.gobansaor.com/2010/06/04/javascript-as-an-excel-scripting-language-via-jsdb/">http://blog.gobansaor.com/2010/06/04/javascript-as-an-excel-scripting-language-via-jsdb/</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/255/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/255/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/255/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=255&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2007/03/22/vba-javascript-glue-languages/feed/</wfw:commentRss>
		<slash:comments>2</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>
	</item>
		<item>
		<title>Tables Vs. XML; the data lingua franca debate.</title>
		<link>http://blog.gobansaor.com/2007/03/03/tables-vs-xml-the-data-lingua-franca-debate/</link>
		<comments>http://blog.gobansaor.com/2007/03/03/tables-vs-xml-the-data-lingua-franca-debate/#comments</comments>
		<pubDate>Sat, 03 Mar 2007 15:28:11 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[data]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Proto]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[DIYWeb]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/2007/03/03/tables-vs-xml-the-data-lingua-franca-debate/</guid>
		<description><![CDATA[Okay I&#8217;m exaggerating, there&#8217;s no debate, those using tables (mainly business-orientated techies/power-users) are blissfully unaware of the charms of XML; while those whose only answer to every data exchange problem is XML (or its Javascript cousin JSON) think tables are &#8230; <a href="http://blog.gobansaor.com/2007/03/03/tables-vs-xml-the-data-lingua-franca-debate/">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=253&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Okay I&#8217;m exaggerating, there&#8217;s no debate, those using tables (mainly business-orientated techies/power-users) are blissfully unaware of the charms of XML; while those whose only answer to every data exchange problem is XML (or its Javascript cousin <a href="http://en.wikipedia.org/wiki/JSON">JSON</a>) think tables are something people used to design HTML web sites before they discovered the delights of CSS &#8211; or worse, the things that DBAs (those killjoys of the development world) are always going on about.</p>
<p>Tables, aka datasets, aka datagrids, aka CSV or TSV files and the peoples favourite, the Excel Range, are alive and well and continue to drive most IT based  business processes.</p>
<p>Look at this <a href="http://www.techcrunch.com/2007/03/02/5-ways-to-mix-rip-and-mash-your-data/">recent comparison of mashup tools</a> over on TechCrunch, if you look at the <a href="http://www.techcrunch.com/wp-content/mashfeatcomp.png">comparison table</a> only one product uses tables (datagrids) as its &#8220;pipe transport protocol&#8221; (Input/Output feeds) the rest are all XML variations.  The product in question is <a href="http://www.protosw.com">Proto</a> which is significant as it&#8217;s the only mashup tool I know (other than <a href="http://www.rssbus.com">RSSBus</a> which wasn&#8217;t on the Techcrunch list) that deals with the current reality of Excel/&#8221;behind-the-firewall data sources&#8221; while also looking to the near-future where more and more (but not all) data migrates to the cloud.</p>
<p>I not saying that XML  is always the wrong choice; RSS, <a href="http://en.wikipedia.org/wiki/OPML">OPML</a>, <a href="http://microformats.org">MicroFormats</a> and the unloved but powerful HTML &lt;table&gt; tag are here to stay and more and more tools offer out-of-the-box parsing for these standards (did you know that <a href="http://webdesign.about.com/od/tables/a/aa071502a.htm">Excel can parse a HTML table</a>?). Likewise for formal robust interfaces between systems a bespoke XML protocol can be useful for professional developers.   But if a mashup product ignores tables as an input/output format, that product is ignoring the most common business focused data format there is (and the skills of  those who day-in day-out manipulate such datasets).</p>
<p>One other line on the <a href="http://www.techcrunch.com/2007/03/02/5-ways-to-mix-rip-and-mash-your-data/trackback/">TechCrunch</a>  table (see how useful tables are) that intrigued me was the assigned level of <em><strong>Advanced</strong></em> to the skill level required to use Proto.  There are at least 2 million VBA users out there without any formal programming training who construct corporate internal &#8220;mashups&#8221; everyday, for that constituency Proto would be by far the easiest tool to use.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/253/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/253/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/253/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=253&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2007/03/03/tables-vs-xml-the-data-lingua-franca-debate/feed/</wfw:commentRss>
		<slash:comments>8</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>Inventory Management for Developers</title>
		<link>http://blog.gobansaor.com/2007/02/28/inventory-management-for-developers/</link>
		<comments>http://blog.gobansaor.com/2007/02/28/inventory-management-for-developers/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 14:04:25 +0000</pubDate>
		<dc:creator>gobansaor</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[agile]]></category>

		<guid isPermaLink="false">http://gobansaor.wordpress.com/2007/02/28/inventory-management-for-developers/</guid>
		<description><![CDATA[The excellent Alistair Cockburn discuses why software development is remarkably like manufacturing and how we can learn from modern manufacturing theory to better structure our software delivery processes (or indeed any business process where the internal inventory item is the &#8230; <a href="http://blog.gobansaor.com/2007/02/28/inventory-management-for-developers/">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=252&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The excellent <a href="http://alistair.cockburn.us/index.php/Main_Page">Alistair Cockburn</a> discuses why <a href="http://alistair.cockburn.us/index.php/What_engineering_has_in_common_with_manufacturing_and_why_it_matters">software development is remarkably like manufacturing</a> and how we can learn from modern manufacturing theory to better structure our software delivery processes (or indeed any business process where the internal inventory item is the ‘yet-to-be-validated decision’).</p>
<p><img src="http://alistair.cockburn.us/images/XScreamProgramming.gif" alt="XScream Programming" align="middle" height="500" width="480" /></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/gobansaor.wordpress.com/252/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/gobansaor.wordpress.com/252/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gobansaor.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gobansaor.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gobansaor.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gobansaor.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gobansaor.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gobansaor.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gobansaor.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gobansaor.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gobansaor.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gobansaor.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gobansaor.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gobansaor.wordpress.com/252/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gobansaor.wordpress.com/252/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gobansaor.wordpress.com/252/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.gobansaor.com&amp;blog=110633&amp;post=252&amp;subd=gobansaor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.gobansaor.com/2007/02/28/inventory-management-for-developers/feed/</wfw:commentRss>
		<slash:comments>0</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://alistair.cockburn.us/images/XScreamProgramming.gif" medium="image">
			<media:title type="html">XScream Programming</media:title>
		</media:content>
	</item>
	</channel>
</rss>
