Tech Blog

Jay's Technical blog

Prelude to How To Select Data Reporting and Analysis Components

23 September 2005
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

I'm currently in the midst of writing another How-To-Select (tm) Guides.  I actually just started last week and have a lot to do.  This one is on Data Reporting and Analysis components.  It essentially covers Reporting Engines, Reporting Servers, Report Building GUI components, Various GUI Querying tools (like OLAP Grids), and Mathematical Analysis tools (I'm way above my head on that last one, but that will change as I immerse myself into this).

The list of products that we will be covering are Component One's Reporting tools (for .NET and ASP.NET); Developer Express'
XtraReports, XtraPivotGrid, and XtraPrinting Library; 9Rays' Reporting Sharp-Shooter (for ASP.NET and for Windows FOrms) and OLAP Grid Kit; Centerspace's Nmath Core, Nmath Matrix, Nmath Stats, and Nmath Analysis; Stimulsoft's StimulsoftReport.Net; Gnostice eDocEngine ActiveX/.NET; Aspose's Aspose.Word, Aspose.Report, and Aspose.Adhoc; Radar Software's HierCube Library (for ASP.NET and For WIndows Forms) UniSwift's SwiftReports; Synaptris' Intelliview Suite; and Syncfusion's Essential Grouping. [We're also covering 4 open source products - dnAnalytics, RLIB, EasiReports, and PdfCreator... that's 26 total products... ].

About 10 of these are reporting tools (11 if you include Developer Express' XtraPrinting Library which is really a cool plugin for their control-based products).  So what's missing?

Well, how about the tool that ships with Visual Studio?  No, I'm not talking about SQL Reporting Services <grin />; I'm talking about Crystal Reports.

<shameless_plug_to_encourage _vendor_signup>
We actually have a couple vendors with contracts waiting to sign up (you should know who you are...)  I really believe in this whole Guide thing, so I want us to produce the best guides possible.  A guide without Crystal seems incomplete to me (but I won't include them unless they sign up).  I would also really like to have ColaReport and IntelliMerce's Snowflake as well (there were a few others who weren't interested that I won't embarass).  You have until Friday as far as I'm concerned (and I will make the powers that be let you in -- especially since I'm the guy who says you can be in after signing up at this point).
</shameless_plug_to_encourage _vendor_signup>

VB NEXT thoughts

14 September 2005
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

I'm currently reading the overview of VB 9 (aka Orcas) here

And I just read something that made me want to stand up and applaud the VB team!  Here's the statement

"Because types of local-variable declarations are inferred by default, no matter what the setting of Option Strict is, access to such variables is always early-bound. The programmer must explicitly specify late binding in Visual Basic 9.0, by explicitly declaring variables as of type Object.. "

Finally, we are taking a step back away from this whole variant mess... Ok, let me explain.  I started with VB in version 3.  VB3 had both Object and Variant back in those days.  Variant meant that you wanted to allow any type, and object meant that you were dealing with some kind of external late bound object (usually an OLE Server like Word or Excel... for those who don't know what an OLE Server is, it's more or less the same thing as a COM object).  Variant was something you avoided like the plague because it slowed down performance. 

Along came ASP and guess what, there are only variants!  That thing you avoided in VB3 (and VB4) was now the norm.  BTW, object was still available in VB4, Vb5, and VB6, but they meant late bound (to be avoided at all costs)

A few years later, VB.Net (or VB 7) came onto the scene and variant was history (I applauded this), but object was the replacement (and like many others I was confused by this).  Many of us came to understand that the .Net Object was still a late bound way to refer to things, but it felt a little more powerful here... you weren't stuck with object; you could recast it as something else.

The real issue in .Net was the whole "Option Strict On/Off" issue.  Let's start with an example to explain this.
Option Explicit off
Public MyClass
Int2 = "2"
Int1 = 1
    Public Function GetValue() as String
      Return Int2 + Int1
    End Function
    ' More mock class methods would follow
End Class

Ok, so we have a class that has 2 class variables (not sure the above would work, since I never write code like this).  What is the type of the Str and Int1 variables?  Pencils down.  The answer is obviously Object since that is the default type.  So what happens when the someone calls the GetValue method what returns?  Honestly off the top of my head I don't know, but the problem is that the compiler will convert the variables from object to some common type... my guess is string, so you will get "21" instead of 3... or maybe you'll get 3 instead of "21."  The real issue is that the runtime has to guess what type you want to use... yuck!  Now it would be a little simpler if instead of defaulting to Object that the compiler would see the "2" and say 'Hey, "2" is a string... Int2's real type is string,' and it would see the 1 and say 'Hey, 1 is an integer' and would assign Int1's real type to Integer... now none of this really solves the GetValue thing, but soon (ok, a long time from now) we will no longer accidently use object.

BTW, another cool thing is with For.. Next loops.  I can say
For x = 0 to 10

instead of

For x As Integer = 0 to 10

I like that! 

Desktop Widgets and a way to make bad publicity...

13 September 2005
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

I have been playing with desktop GUI widgets the last week or so (mainly because of a Sahil post --  I have Konfabulator up and running and besides the memory footprint it seems to be pretty cool.  This caused me to wonder if there were other types of GUI widgets.  I found a few...
- Samurize
- DesktopX (commercial)
- AVE Desktop
- Konfabulator (of course)
- Kapsules
After playing with all of them, I can easily tell you my thoughts.

Samurize seems to be more than just a widget kit; So much so that I can't figure out what to do with it or where the widgets are (so I didn't do much with it beyond download and install it)

I've played with this in the past.  Nice product if you want to pay money for this type of thing (I don't... I want to have a couple widgets on my screen and I want to maybe develop a couple widgets)

AVE Desktop
This is a pretty cool product.  Basically it takes the widgets for StarDock's (the creator of DesktopX) free ObjectBar product and lets you take them off the bar and throw them onto the screen.  Very cool, but the ones I tried were very big (there's probably a way to tweak that); beyond that I just wasn't satisfied with the selection.  There are a couple things I want to have and could really find what I wanted.

Fabulous!  That's what I think!  Konfabulator is the product that way cool when it comes to pure functionality.  They have a large number of desktop widgets.  My only major complaint is that each widget requires a separate instance of Konfabulator.  This can get expensive from a memory perspective.

A while ago I read about Kapsules and tried to use an earlier version.  Quite frankly it was a memory pig.  It seems to be less of one now.  There is a single instance of Kapsules running in memory (as far as I have seen), and while the instance can eat a decent amount of memory, the footprint is not nearly as great as the one from all the Konfabulator instances.  It is an awful lot like Konfabulator, but it does not have as many widgets defined.  It also requires having the Windows Scripting host (Win XP ships with it) and .Net Framework installed (if you read this blog you probably don't have a problem with that).

Konfabulator vs Kapsules for creation
I actually started researching both engines to see about creating my own widget.  Most of the widgets that I found for Konfabulator were created in a scripting language (VB Script, JScript, PerlScript, etc.)  There are a few widgets on the confabulator site that mention that they no longer require the .Net Framework which implies that you can use .Net to build a widget, but most of what I found refers to building widgets with a scripting language.
Kapsules widgets can be built in a scripting language or in a .Net Framework language (for instance you can create widgets using VB.Net).  The API seems to be well thought out (for instance you can set up global keyboard hooks that trigger events in your widget)

Bad Publicity
So I would love to follow all this up with a "Here's where you can get Kapsules!"  Unfortunately, the folks at Carbon 6 ( makers of Kapsules ( want us all to know about there is a new release 0.99... and they have pretty much shut down their site.  There are a few places you can get to if you use google or read here (note: this may not work too far in the future)

Kapsules Development Online Documentation -
Kapsules Widgets Forge -
Kapsules FAQ/User Docs WIKI -
Kapsules Support Page -

So why so many links, Jay?  Because I want to remember them all.

[UPDATE: I just got a mail message from Andrew over at Carbon6 with this explanation on why they have shutdown the downloads - 

 The new version that we're preparing the site for is above and beyond the current one available, and I saw no reason why I should let people continue to use an inferior build.

I know I was a little rude in the end of this post, and I apologize, but I was just frustrated that I had downloaded and installed this on one of my machines at work and couldn't get it installed on my other box]

[UPDATE2:  Kapsules 0.99 is now live.  I don't know what has changed, but I have installed it on most of my machines.  I really like it. head to to get it]