21 February 2008

Herding Cats

I wrote a book review for IEEE Software a few years ago (published online only) of Herding Cats: A Primer for Programmers Who Lead Programmers by J. Hank Rainwater. I had bookmarked it with TinyURL.com because IEEE uses a CMS (content mangling system) to run its web site, but I can't find the old bookmark. So here it is again.

[Obligatory Mark Twain reference]

Maybe there will still be work for me when I'm ready to move into semi-retirement. Tam Harbert reports on demand and supply for COBOL programmers (for Computerworld, naturally).
Some 75% of the world's businesses data is still processed in Cobol, and about 90% of all financial transactions are in Cobol, according to Arunn Ramadoss, head of the academic connections program at Micro Focus International PLC...

15 February 2008

DotNetNuke: Early returns

We did our first code drop to QA last week on our first project that employed DotNetNuke. DotNetNuke is gaining popularity because it allows developers and administrators to take a Chinese menu approach to web site design. It's a framework for developing apps within ASP.NET: developers code modules of functionality (traditionally in VB.NET, but C# works just fine) which can be rearranged on web site pages without recoding.

Typically, a module is written as three user controls: a View, an Edit, and a configuration Settings combination view/edit. The View control might present a grid or list of entities (blog posts, say), and then the Edit control would be used to edit one existing entity or create a new one. Or the View module might just be a widget that encapsulates content from another source, like a stock ticker or a Google map, and there would be no Edit module.

DotNetNuke (ugly name, that) is open source, and the weak API documentation reflects this fact. The search engine is often overloaded, so I've taken to using Google to search within the site. And it's usually the case that a method or property just isn't described in sufficient detail. Sometimes the only hits are someone's unanswered question in a forum: "Does anybody know how this thing works?" There is a book from Wrox of middling quality, Professional DotNetNuke 4.

One of the services that the DotNetNuke framework provides is caching of module content. If your module is serving semi-static text (like a Welcome box) or slowly-changing data like automobile traffic reports, you probably don't need the content to be refreshed second-to-second, and the admin can configure an appropriate cache timeout. But if your module provides any interactivity and validation (for instance, a new user registration control that collects name and address), you really don't want anything to be cached. When you, the developer, prepare a module for deployment, you can specify a default cache timeout of 0 seconds. But you can't count on that value being used in all deployments. I predict that a lot of our support calls will center on caching issues.

We've also noticed some problems, not well-described, with ASP.NET validator controls running client-side, and so we've specified EnableClientScript="false" for everything.

04 February 2008


Jeff Atwood of Coding Horror annotates Steve Yegge's Five Essential Phone-Screen Questions, orginally posted in 2004. The kernel of Yegge's post is that the phone interview should actually do some screening:
Please understand: what I'm looking for here is a total vacuum in one of these areas. It's OK if they struggle a little and then figure it out. It's OK if they need some minor hints or prompting. I don't mind if they're rusty or slow. What you're looking for is candidates who are utterly clueless, or horribly confused, about the area in question.

Yegge's five questions, or rather categories of questions, are:

  • Coding
  • Object-oriented Programming
  • Scripting and Regular Expressions
  • Data Structures
  • Bits and Bytes

Yegge's example coding questions use C++ and Java, and would be appropriate for C# and JavaScript. For our own purposes, I'd be inclined to include some questions that called for HTML and perhaps some SQL.