Category Archives: Proto

xlAWS – 100,000 downloads?

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, xlAWS being a “library-of-sorts” of VBA/VB6 helper code for accessing Amazon S3 and SimpleDB.

It’s linked to from this page on my blog (which has had 200 or so hits this month) and from this AWS Community Code page. 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’t have server logging enabled on the bucket, so I can’t be sure how much is due to the other public files in the bucket (all belonging to the VBA/Proto SQLite xLite project), but as that project has been available for months and is accessible only through my website (who’s stats show a consistent 5-10 downloads per week) I’m guessing the downloads are for xlAWS.

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 dispossessed (and p*ssed off) VB6 developer hoards who downloaded it the most? Leave a comment if you downloaded and used the library, I’d love to know.

Proto – desktop BI tool.

I see that Proto have repositioned their excellent VBA scripted mash-up product as a “desktop business intelligence system”. This is to be welcomed as the first time I used it I described it as a “mash-up tool for adults” and although it has the ability to play hard ball with the other Web2.0 mash-up kids, its DNA is firmly within the business world, more BI2.0 than Web2.0. It is in effect, a “reporting tool on steroids”.

The “free for non-commercial purposes” product is no more, but you can still download a 30-day free trial and the really good news is the new price of $300 for the Proto Individual product.

Also, another business-oriented mash-up tool, RSSBus, is partially out of beta, RSSBus Server RC1 is now available. Still no information on final pricing for the server product. A new Beta 5 release of the free desktop edition is also available for download. As I’ve said before, RSSBus Server front-ended by Proto would be a very powerful combination.

Apatar – a few extracts short of a load

I’ve been meaning to try out the Apatar ETL/Mashup tool for sometime and today being yet another rainy day in this the worst Irish summer that I can remember (and Irish summers are not renowned for the lack of rainfall) I decided to give it a try out. Not impressed I’m afraid; comes up short when compared to either Kettle (Pentaho PDI), Proto, RSSBus or Talend. Very few database connectors (e.g. no SQLite,DB2 or Firebird support) this wouldn’t be a problem if the product offered a generic JDBC or ODBC connector. It does have one nice feature the others (other than RSSBus) haven’t, an Amazon S3 connector. But the thing that I find amazing is that a product that’s positioning itself as an Enterprise 2.0. mashup tool doesn’t have the ability to read and write Excel files! And no, CSV files don’t count.

Google Gears – SQLite Killer App

The announcement of Google Gears is of course a game changer for those working in the development of online apps; its addition to Goggle Reader alone would make it worth while for me and I’m sure we’ll see it integrated into Google Docs and GMail in the near future. If you had any plans to develop a web based app or already deploy one you need to give this technology some quality time.

But it is the use of SQLite as the client-side persistence engine that excites this datasmith’s old heart. Since first coming across SQLite (while learning Ruby on Rails) I’ve been convinced that this “good enough” micro-database on steroids was a winner. Since then, as well as using it with Ruby ,I’ve integrated it with excel to use as a micro-ETL tool, I was instrumental in getting SQLite support added to Kettle (Pentaho PDI), I wrote a SQLite custom module for Proto, in fact the first thing I now do when checking out a data manipulation tool is to check if it supports SQLite.

I’m looking forward to investigating further what Google Gears can add to my existing datasmithing tool set, and I’m certainly glad I invested the time in learning JavaScript. Exciting times.

What’s up Docs & Spreadsheets?

Google Spreadsheets now supports simple graphs and named ranges; see the announcement on the google-d-s.blogspot.com blog. I’ve also just noticed that my Google Apps account now includes Docs & Spreadsheets; finally I can move my business documents from my private GMail account into Goggle Apps. Looks like a presentation tool is also on the way.

This confirmation of Google’s continued commitment to D&S is opportune as I had decided a few weeks ago to invest some time finally getting my head around GData, in particular, the Spreadsheets and Calendar APIs. I investigated the APIs using VBA, as my main interest in interfacing with GoogleD&S & Calendar is as a back-end to Excel; i.e. using Excel as the front-end heavy duty data tool and Google Apps as the collaboration and orchestration tool (and Amazon S3 as the back-end data store). But I didn’t use VBA within Excel, instead as I was also investigating Proto I used this excellent Proto example as my starting point.

NOTE:

Proto Discount:

Byron Binkley CEO of Proto has kindly offered a total of 50 licenses (until July 13th 2007) at $79.50, a 90% discount to the listed price for Proto Individual (http://www.protosw.com/products/purchase). The offer applies to anybody mentioning this http://gobansaor.wordpress.com/2007/04/13/proto/blog post. I have no connection financial or otherwise with Proto Software, just a fan of the product.

I hope their intentions are honorable…..

I’ve said before that these two would make an ideal couple, I see the courting flirting has begun …..

RSSBus

Proto

Proto

In the two months since I first came across Proto I’ve worked my way through most of the tutorials and sample applications and I’ve come away with a very positive impression of the product. I hadn’t however managed to the find the time to create a VBA based component; that is until last weekend. It was the choice of VBA as the product’s macro language that first attracted me to Proto – that and its close integration with Excel – and to celebrate this victory of practically over fashion I decided to build something real (i.e. might just be useful in the real world not just another map mashup demo – I’m just jealous of the fact that Google Maps for my part of the world consist of major roads and nothing else;-)).

So what to build for my Proto debut? Well looking at Proto one of the things that struck me was the lack of a relational join feature. In a previous post I explained that other mashup tools tend to use XML as their “pipe transport protocol” rather the table-oriented nature of EntrySets. But these entrysets cannot be manipulated using relational operators, not even the ability to join two tables by a shared key. Although the tool doesn’t offer this facility it does offer the flexibility to create a component to solve the problem and somebody has already done so; simulating an Excel VLOOKUP “join”. But I wanted the full power of a relational engine, INNER and OUTER joins, UNION and MINUS, aggregations via GROUP BY, access to very large datasets and I already had the answer; an Excel VBA module, xLite.

To say that xLite is a standard generic piece of code would be to exaggerate, it is like most operational VBA code, a template of ideas that are manipulated from project to project to serve the needs of the day. It had started life as an excel-to-Oracle tool (when it was called xORA), morphed into a SAP master data extraction tool (by the name of xSAP), finally getting a bit of structure when I discovered SQLite as the ultimate desktop database (having occasionally being seduced by that grand old dame, MS Access). Its further transformation into a Proto module required more renovation work; replacing Excel Range objects with variant arrays and replacing the excellent but COM based LiteX SQLite wrapper with the simpler but more flexible PSSQLITE.DLL thus allowing registry-free deployment.

By why SQLite, why not MS Access or SQLServer? See “What’s So Good about SSQLite” for why I use SQlite but in this case two reasons stand out;

  • Manifest Typing:

SQlite doesn’t enforce column based types (i.e. VARCHARS,TEXT,INTEGER etc.) like Excel (more or less) it’s the content of the cell that determines its type – SQLite calls this manifest typing. This allows excel Ranges and Proto entrysets to be filtered through a relational join without type-conversion errors arising but at the same time allowing the database to recognise types where useful. For example;

Month SalesThisMonth
Jan07 1000
Feb07 2000
Mar07 Accounts not available!!!
Total 3000

Excel and SQLite will both give a Total of 3000 for SalesThisMonth column, most databases would choke on the accounts-not-available value.

  • In-Memory database:

SQLite does not need to be “installed” before it is used. Like MS Access the data resides in a single file but unlike MS Access even that single file can be dispensed with by using a “:memory:” database as I do within xLite.

The transformation from Excel to Proto VBA for both myself as the programmer and the code as the programmed proved to be trivial and rewarding. In this occasion I did most of the work and testing from the Excel IDE as I hadn’t yet fully comprehended the event firing mechanisms within Proto but I think in future I might develop and test under Proto and then port the code to Excel.

So any negatives?

With the development experience any negatives were generally to do with my inexperience with the platform (e.g. the above mentioned event firing causing me to “hang” the program once or twice) or features such as non-Excel “asset” management which are, I believe, on the product’s roadmap (e.g. I have to download my DLLs from the web rather than including them in the .PROTO manifest file as I would prefer).

My main two “problems” with Proto are not technical as such but market positioning misgivings:

  • Treating Excel as the add-on;

Proto will not run without Excel being installed. Excel is the prime piece of data-manipulating real estate on users’ desktops. They trust it and depend on it. It would be much easier to “sell” Proto to end-users if Proto was marketed and packaged as an add-on to Excel (see for example Palo OLAP ).

  • The Price;

Pricing software products is not easy (see this if you’ve never given the subject any consideration) and the last thing the good folks at Proto need is somebody on the other side of the ocean telling them they need to charge less per seat for their software. But I think they do if they intend to sell this software to individuals rather than to corporate IT purchasing departments. By individuals I mean the SMB owners/accountants/salesfolks, the large company departmental power-users, the freelance ‘data smiths’ like myself. Selling software into SMBs is not the same as selling to large companies (for some of the problems see http://supplychainventures.typepad.com/my_weblog/2006/04/tackling_the_sm.html) but equally selling something “new” into large company IT departments has in many cases become impossible unless that “new” product comes with a MS,Oracle,IBM or SAP badge on it.

But let’s not end on a negative, with its feet firmly on the ground where business computing currently operates (i.e Windows/MS Office, behind-the-firewall company intranets) but with an eye to the opening up of IT to the economics of the wider internet, Proto is one to watch.

UPDATE:

Byron Binkley CEO of Proto has pointed out in the comments below that the current dependency on Excel is temporary and will be removed in a future version. But he also reponds to my pricing concerns by offering ….

….a total of 50 licenses over the next 90 days (through July 13th 2007) at $79.50, a 90% discount to the listed price for Proto Individual (http://www.protosw.com/products/purchase)…

…this offer applies to anybody mentioning this blog post. This is pretty typical of my dealings to date with this young company; you raise a problem and they respond with a solution. Takes all the fun out of complaining.

Habemus Proto

I’ve just uploaded my first Proto module; a rewrite of a VBA module I’ve been using for many years to provide me with a bridge between the ease of use of desktop user-focused tools and the power of a SQL enabled database. In the past that database was Oracle (and occasionally MS Access) and the desktop tool was of course Excel; now the database is SQLite ,the client tool is still Excel but this time in a supporting role to Proto. Over the next few weeks I’ll document and publish both the Proto and the pure-Excel version of the this code, in the meantime check-out the work-in-progress project page for xLite (http://gobansaor.wordpress.com/projects/xlite).

VBA & JavaScript – glue languages

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 “I’m not a programmer” programmers, the great unwashed, the “normal” people out there who are just trying to get something done. VBA adds that “something special” 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 “good enough”.

Both languages can also transcend their “ugly duckling” status. If you want to take VBA development to a new level have a look at Professional Excel Development by Bullen et al. GMail, Google Docs & Spreadsheets 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.

VBA has been used in the past as the scripting language for corporate applications such as Siebel; now in an inspired move, Proto opted to use VBA as the scripting environment in their corporate focused mashup tool.

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 server side declarative tools (e.g. Kettle ETL, OpenLaszlo and Grazr). You can even use JavaScript to provide the complete server-side logic for a web application/service by using Zimki.(deadpool)

My decision to spend time to improve my JavaScript skills was as a result of my experience with Zimki. I initially created a web service to sign requests for uploading files to my Amazon S3 account; allowing me to give clients a small executable (developed in VBA’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’s Rhino based JavaScript environment 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 DOM with JavaScript (or more correctly, EMACScript) the language. Having looked further, I’ve discovered an elegant,simple yet powerful language that I’m tempted to think may become the universal glue-language.

UPDATE:

As Tom from Fotango (the Canon Europe company behind Zimki also in deadpool) points out, Zimki uses Mozilla’s C implementation of JavaScript, SpiderMonkey rather than Rhino.

UPDATE: Sep 2007

Cannon Europe are to close the Zimki service on Dec 24th, 2007

UPDATE: June 2010

See how I combined VBA and JavaScript, to make JavaScript an Excel scripting language http://blog.gobansaor.com/2010/06/04/javascript-as-an-excel-scripting-language-via-jsdb/

Mashup Match Making

I’ve been watching and trialing RSSBus since its initial public beta last May but had of late began to wonder had /N Software lost interest in the project.  But there appears to be light at the end of this particular beta tunnel with the announcement of the integration of the RSSBus engine into News Gataor’s NewsGator Enterprise Server (NGES), still no pricing info on either NGES or RSSBus server.

Another potential partnership that the folks at RSSBus should investigate is a link up withProto.  Both products are firmly positioned behind the corporate firewall with their emphasis on commercial data sources i.e. – dare I say it – mashup tools for adults. 

Proto is visually appealing (like Yahoo Pipes) and is Excel centric in both its table-based design philosphy and its choice of macro language, VBA; both sound design decisions in the market the product is aiming at – the power user.   It is however, lacking in some of the ‘heaving lifting’ tools that power-users depend on but are usually supplied to them by IT; this is where RSSBus comes in.  With its XML scripting language and its extensibility capability provided by C#/VB.NET its natural user base is the corporate IT developer.  RSSBus’s impressive list of pre-built connectors and the ease with which developers can add new ones, makes it an ideal partner to Proto’s more approachable user-focused front-end.

Tables Vs. XML; the data lingua franca debate.

Okay I’m exaggerating, there’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 something people used to design HTML web sites before they discovered the delights of CSS – or worse, the things that DBAs (those killjoys of the development world) are always going on about.

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.

Look at this recent comparison of mashup tools over on TechCrunch, if you look at the comparison table only one product uses tables (datagrids) as its “pipe transport protocol” (Input/Output feeds) the rest are all XML variations. The product in question is Proto which is significant as it’s the only mashup tool I know (other than RSSBus which wasn’t on the Techcrunch list) that deals with the current reality of Excel/”behind-the-firewall data sources” while also looking to the near-future where more and more (but not all) data migrates to the cloud.

I not saying that XML is always the wrong choice; RSS, OPML, MicroFormats and the unloved but powerful HTML <table> tag are here to stay and more and more tools offer out-of-the-box parsing for these standards (did you know that Excel can parse a HTML table?). 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).

One other line on the TechCrunch table (see how useful tables are) that intrigued me was the assigned level of Advanced 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 “mashups” everyday, for that constituency Proto would be by far the easiest tool to use.

Oh Danny Boy, the pipes, the pipes are calling…

What have these three fantastic products in common?

… you guessed it, pipes. The classic idea of the unix pipe has been given a new life in these three easy-to-use products, but this time the target audience is not the sysadmins and professional programmers of the past, this is programming for the masses.

Oh, in case you really were looking for Danny Boy.

Web2.0, make way for BI2.0

An article in www.intelligententerprise.com states that BI1.0 is over, prepare for BI2.0. Who will win this BI2.0 battle, will it be MS Excel/Sharepoint, will the old-school BI vendors abandon their bloatware practices, will Open Source or Google grap the initiative or maybe something like Proto? Interesting times ahead, methinks.