Perception, deception, reception

28 August 2007

This past few work days have been up and down. It's a bit like the old joke that starts off with "I have some good news and bad news..." and then gives us the bad news, and then the good, the joke being that the good news is worse than the bad but in a different way.

Well, I'm going to do this the other way round: first the good news and then the bad. By this masterful switch, the good is really, really good, and the bad is simply awful.

First off was a link that Dale Mitchell provided in a comment to my post on CodeRush and Refactor! Pro 2.5. The article is an interview with James Moore of Red Gate Software, a company that is mainly known for its line of SQL-related tools, but that is starting to diversify into .NET tools with their ANTS profiler. I won't comment too much on the content of the article, but will point out the second question and answer as being particularly relevant to us and our industry.

Yes, writing your own controls is fun and instructive and means that you can hone and gear it precisely to your particular situation, but in doing so you are increasing the amount of code you have to maintain, you're increasing the cost of the software you really should be writing, you're not adding to the bottom line. DXperience Enterprise, containing everything that we do for .NET, including all source code for the components, costs $1,300 at present. Say you cost your employer $100 an hour (you know, it'll be close with salary, medical, dental, vacation, 401(k), options, stock, etc, etc). That's 13 hours of your time, less than two days. Are you going to design, write, test, bug-fix a tree-view, for example, in that time?

(By the way, Mark Miller gave me a redacted question 2 answer with certain passages marked in bold. I decided not to use it, though I'll leave it as an exercise for the reader to reconstruct his version.)

Then I saw that Andrew Connell had made the results of his work in writing templates and plug-ins for CodeRush and Refactor! Pro available for all Sharepoint programmers. For free. Zero, nada, zilch. OK, you do have to buy CodeRush for about $250 (Refactor! Pro is included in that price, remember) to use them, but considering the amount of time this is going to save you, it's a mere pittance.

In reading the blog posts ( 1, 2, 3, 4, 5) where he talks about it all, frankly I'm stunned at the amount of work in the project and in the magnanimity of Andrew's gesture. Now, in my defense, I'm not a Sharepoint programmer, but Andrew is and he's distilled his knowledge and experience into these additions to CodeRush and Refactor! Pro that will make your life easier.

First and foremost, let me say this is awesome work, and secondly, and to a lesser extent, it validates the direction Mark and the team took in ensuring that both CodeRush and Refactor! Pro are fully extensible with a well thought out design and great support in the form of project templates and the like.

After that, I read Chris Bilson's blog entry on modifying a CodeRush template to help program with NHibernate. A nice little article on extending what we provide as part of the product to make it better and easier to use for your normal daily work. In Chris' case, it's declaring virtual properties for use with NHibernate, a well-regarded ORM derived from the Java Hibernate framework. He's got the screenshots, he's got the shaky mouse highlights (I'm there with you, Chris), resulting in a very succinct tasty article indeed.

Then after this surfeit of good news, this morning I read this rant about component vendors. I'm certainly not going to dissect who irascian is talking about so vehemently, but instead view it as a rant about all component vendors, of which we are certainly one, and reply on that level. He makes some (qualified) good points and some quite bad ones. I'll look at the ones that could apply to us.

- Support as an endless loop of responding to a question with another. We've been dinged on this one several times (it annoys me incredibly), and have recently been making changes to some of the answers we make in order to try and cut short this go-around.

But, having admitted that sometimes we're to blame, I'd invite you to look at the problem from our viewpoint: sometimes the question that's asked of us is ambiguous to the point of obscurity (I remember seeing one of Plato's answers recently: "Are you talking about the ExpressQuantumGrid, the XtraGrid, the ASPxGrid, or the ASPxGridView?"). After all, we can imagine that it's coming from a customer who's been living this issue of which they're complaining for the past several hours. They're fully intimate with the problem and the scenario and forget in the heat of writing an email to us that we're not. So sometimes, we're forced to respond with a question.

- View Source (for an aspx page containing some third party controls) provides "total gunk, debris and sheer volume of crap". Heh, message received and understood. I'll admit our editor controls are somewhat guilty, and we're looking into the TGDASVOC produced when they're used in the ASPxGridView and hope to show the new slimmer controls in version 2007.3.

But having said that, does the end-user care about TGDASVOC in the HTML? So long as it's rendered by the browser they're using, do they really care that it was 3K of HTML or 4K? The images on the page are going to be larger than that anyway. To me it's a little like arguing that XML should always be nicely indented for human readers. Er, no, it doesn't have to be; human readers fall into second place compared to the program readers, surely?

- "there's no real competition". Do what? The mind boggles. Is he saying that we, Infragistics, ComponentOne, Telerik, etc, are in cahoots? Price-fixing? That we're just four facets of the same shady reclusive shell company in Liechtenstein that doles out the sales? My mind has completely boggled over on this one and I'll have to move on before it comes out my ears.

- Side rant about Community Server 2007. Er, complain to Telligent. We do, and how. Don't assume that they're using a third- party vendor's components. Maybe they are, maybe they're not, maybe they've taken a commercial product and made lots of changes to suit them. Dunno. But they're the front line of support for Community Server.

Now having said all that, let me point out a few things. Compared with writing WinForms controls, writing useful ASP.NET controls is hard. Sorry to be the bearer of bad news, etc, but it is. For a start, they're written as C# (say), HTML, and Javascript. They're stateless, with some decidedly kludgey ways to try and make them stateful (which the component user tends to break quite frequently). HTML was not designed for fancy interactive UI work, although there is work going on in that area to make it so, and so requires all this kludgey Javascript. The browsers are all different (the DOMs aren't the same, neither is the Javascript) and even the script routines that determine what the browser supports make me laugh with amazement. (In fact, it was only ASP.NET 2.0 that made a real effort to determine which browser was what, and that work continues with Silverlight.)

Of course, that's why we're paid the big bucks — partly in order to fund magazines and conferences, it seems — therefore we should spend the time and effort to make sure our super-duper grid works in all the browsers, on all the operating systems, with minimal HTML and JS and Viewstate, with rock-solid state persistence, and blazing performance. Which we do, happily. And in doing so bugs are reported which we fix. And we tweak based on feedback from our customers. And customers can rely on us to do all that, because, as mentioned above, they get a lots of value for two days' worth of work.

I used to work for a company that decided early on that they would write their own grid for their ASP pages (no, this was before ASP.NET). It was geared to their application, it had loads of special case code everywhere, and nobody, but nobody, in the dev team wanted to touch it. Change one thing in one place and functionality changed somewhere else. With the best will and effort in the world, they ended up with a Frankengrid. More time was spent on the underlying infrastructure of the grid than on the application's UI. They're now rewriting with a third-party vendor's product. I'm sure that it's not optimal compared with the old custom one, but the way they look at it, is that they're in the business of selling an application, not a grid.

And that's what I find troubling about irascian's rant. It's easy to lash out at and blame your vendor for slippages and problems (or to lash out at the unnamed person or persons who decided on this choice of vendor), but I certainly believe in the end you will save money by using one. Just spend some quality time investigating which one to use. Use real code written by a real programmer and use real data. A week spent on this investigation will repay dividends.

As we like to say, Download, Compare, and Decide.

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.
No Comments

Please login or register to post comments.