Sunday, June 27, 1999

Bringing up the Rear

This article appears in slightly different form in the May/June 1999 issue of IEEE Micro © 1999 IEEE.

The last few years have seen substantial changes in the enterprise applications market. The traditional client/server architecture is giving way, except on Windows platforms, to multi-tier distributed architectures with generic browser clients.

The installed base is large enough to justify new client/server applications in the Windows environment. As Roger Sessions explained in his book COM and DCOM -- Microsoft's Vision for Distributed Objects (Micro Review, Mar/Apr 1998), Microsoft has a coherent strategy for distributed applications. This strategy leads to architectures somewhere between Windows-specific clients on a Windows-specific network and generic browsers on a generic intranet.

While strategists lay out grand plans on the marketing front, application developers and customizers scramble to identify and learn to use appropriate tools. This column looks at some old tools that assume new significance in this situation: Visual Basic, Perl, and online help authoring tools.

Visual Basic

Microsoft's Visual Basic 6 comes with excellent documentation. Within the framework of Visual Studio and the MSDN library, Microsoft has put together an exemplary package of procedural help and tutorial examples. Nonetheless, large numbers of third-party books try to complement the Microsoft documentation.

The three authors whose books on Visual Basic appear here look at the elephant from different viewpoints. Steven Holzner begins with Visual Basic fundamentals and small local problems. After the first 600 pages or so, he introduces more global issues, and by the time he reaches the index, he has covered everything thoroughly.

Dan Appleman doesn't bother with the material in Holzner's first 600 pages. He jumps into global issues from the beginning and focuses on giving you a thorough understanding of how to approach the design of reusable components. By the time he reaches the index, he has given back most of that 600-page head start. If Holzner wants to answer all your questions, Appleman wants to give you a deep understanding of the fundamental principles.

Ted Pattison uses only 300 pages to get from the introduction to the index. He covers much of the same material as Appleman, but a lot more concisely. He also gives examples of how to interface with Microsoft transaction processing capabilities. Pattison's book is more about Visual Basic's environment than it is about Visual Basic itself.

Visual Basic 6 Black Book by Steven Holzner (Coriolis, Scottsdale AZ, 1998, 1132pp plus CD, ISBN 1-57610-283-1,, $49.99)

Holzner and the team at Coriolis have put together a logically arranged, attractive, well designed, and extremely thorough book. It's a small thing, but I appreciate the fact that, except for the first and last fifty pages or so, the book lies flat and open to whatever page you turn to.

Holzner makes it easy to find out how to accomplish specific tasks. Most chapters begin with a table with columns labeled "If you need an immediate solution to" and "See page." After a brief "in depth" section, the chapter provides the promised solutions in short, well illustrated procedural essays.

If you plan to work with Visual Basic and expect to have questions like "How do I add buttons to a toolbar at runtime" or "How do I use a code component without creating an object," this is the book for you.

Developing COM/ActiveX Components with Visual Basic 6: A Guide to the Perplexed by Dan Appleman (Sams, Indianapolis IN, 1998, 888pp plus CD, ISBN 1-56276-576-0,, $49.99)

Appleman's subtitle imitates the title of a set of 800-year-old talmudic commentaries by Maimonides. Appleman's point is that he hopes to augment the Microsoft documentation, not replace it. You may wish to draw other parallels between Appleman's book and talmudic commentary.

ActiveX (the technology formerly known as OLE) is a collection of object-oriented capabilities based on COM. Visual Basic is the front end that successfully hides ActiveX's complexities -- making it possible for average programmers to develop powerful reusable software components in minimal time.

Appleman's complaint is that Visual Basic hides ActiveX's complexities so successfully that programmers are left in the dark. The philosophy behind the Microsoft documentation is something like "You don't need to know how a car works to drive it." Appleman's answer might be "Yes, but you ought to know enough to understand why it's a bad idea to drive on a rough road or into a river or off a cliff."

Appleman's definition of an expert is someone who understands the fundamentals of a subject. He hopes to give you such a good grounding in using Visual Basic for ActiveX and COM development that you'll think all the techniques he describes are obvious.

Appleman's day job is creating reusable components for sale. That forces him to focus continually on all the right issues. He wrote this book from that perspective. If you want to build reusable components of high quality, this book is a very good place to start. 

Programming Distributed Applications with COM and Microsoft Visual Basic 6.0 by Ted Pattison (Microsoft Press, Redmond WA, 1998, 344pp plus CD, ISBN 1-57231-961-5,, $44.99)

Pattison thinks COM is the most important thing a Windows programmer can learn. Unfortunately, the early COM documentation was hard to understand without thorough grounding in C++. Pattison wrote this book to help Visual Basic programmers understand COM and to help C++ programmers understand how Visual Basic handles COM.

Pattison's book is short on examples, but the accompanying CD contains complete, functioning examples that you can run and examine. This is in keeping with Pattison's general approach. The material is all there. It's concise. You have to figure out the subtleties for yourself.

If you're a fairly sophisticated programmer and you want a quick tour of the COM basics without someone holding your hand, this book is an excellent choice.


Larry Wall's Perl language (Micro Review, October 97) is a wonderful example of collaborative software development. A key to making this collaborative effort successful has been the commitment and support of Tim O'Reilly and his company, O'Reilly associates. Originally known for a few definitive Unix books, O'Reilly Associates has grown into the leading publisher of books about Perl, Linux, Apache, Python, Tcl, and other collaborative open source projects.

The common gateway interface (CGI) is the standard protocol for using server-side computer programs to add dynamic content to web pages. Perl has become the leading language for CGI programming.

Perl Resource Kit for Windows (O'Reilly, Sebastopol CA, 1998, 4 volumes plus CD, ISBN 1-56592-409-6,, $149.95)

The software in this kit is free. You pay for the books and the CD.

Perl is a moving target. As soon as a book or CD appears it begins to become outdated. Nonetheless, this kit is a definitive Perl distribution for the Windows environment. It includes hundreds of Perl modules from the comprehensive Perl archive network (CPAN). You have to start somewhere, and this snapshot of Perl is as good a place as any.

The Perl distribution contains both client side and server side components. The Perl Utilities Guide by Brian Jepson, one of the four books in the kit, leads you through the complexities of installing and configuring those components. It also gives you an overview of how to write, debug, and run Perl programs within the framework of the Windows component object model (COM).

Programming with Perl Modules by Erik Olson, the second book in the kit, gives examples of how to use the most popular CPAN modules to develop applications. He devotes a chapter to Lincoln Stein's, a module to support CGI applications.

The Perl community values and rewards good documentation. Perl programmers produce documentation for their modules using a markup language called pod (for plain old documentation). The final two books in the kit contain David Futato's compilation of written documentation for many of the CPAN modules.

Learning Perl/Tk by Nancy Walsh (O'Reilly, Sebastopol CA, 1999, 376pp, ISBN 1-56592-314-6,, $32.95)

Visual Basic provides designers an easy, visual way to specify, arrange, customize, and program graphical elements. This has made it the most popular tool for producing graphic user interfaces (GUIs) for distributed applications.

The Tk toolkit, originally developed for the Tcl language, gives Perl many of the same GUI development tools that Visual Basic has. This book explains how Perl and Tk work together, and it provides step-by-step instructions for using all of Tk's graphical elements.

Unlike Visual Basic, which hides such details, Tk makes its geometry management explicit. Walsh covers this material carefully in a lengthy chapter. Reading it is a good way to learn to use Tk effectively.

The book does not teach Perl programming, but it is a worthwhile introduction to Perl/Tk.

Perl and CGI for the World Wide Web by Elizabeth Castro (Peachpit, Berkeley CA, 1999, 272pp, ISBN 0-201-35358-X,, $18.99)

The Peachpit Visual Quickstart Guide series, and Elizabeth Castro's books in particular, are examples of user help at its best.

Do you want to know how to reverse the contents of an array? Look in the index. Turn to page 99. There you find the simple procedure, an example of the code in context, two helpful (but tiny) screen shots, and three tips, including one that refers to the material about sorting arrays on page 98.

If you need to do Perl and CGI programming from time to time, this is a good reference to keep nearby.

Online Help Authoring Tools

Online help was once almost exclusively a Windows phenomenon. Help authors prepared RTF files and passed them through the Windows help compiler. Microsoft's WinHelp engine was the only way to display the resulting HLP files.

Nowadays there are other possibilities. The WinHelp engine, as it exists in current Windows systems, is more powerful than its predecessors. Nonetheless, Microsoft is phasing it out in favor of HTML Help. HTML Help is still Windows based and compiled, but an ActiveX-enabled browser can view much of an HTML Help file on any platform. More important from Microsoft's point of view is the fact that HTML Help blends seamlessly with web content.

At the same time, Sun and Netscape, trying to support their own views of distributed computing, have introduced formats for HTML-based online help. These have evolved into WebHelp, which uses both a Java applet and an ActiveX control to display help files on any platform.

Steve Wexler's book describes HTML Help and Microsoft's tools for producing help systems in that format. But the best tool for all formats, including HTML Help, is RoboHELP from Blue Sky Software.

The Official Microsoft HTML Help Authoring Kit by Steve Wexler (Microsoft Press, Redmond WA, 1998, 312pp plus CD, ISBN 1-57231-603-9,, $39.99)

Steve Wexler is a well respected expert in the field of online help for Windows systems. He is the ideal person to describe Microsoft's approach.

The WinHelp engine is a Windows executable program. It stands alone and only runs on Windows systems. The HTML Help engine, on the other hand, is an ActiveX control, so it integrates tightly with a container application -- including an ActiveX enabled browser on any platform.

If you want a clear description of how this works and how to use Microsoft's tools to produce HTML Help systems, this is the definitive book.

RoboHELP Office 7.0 (Blue Sky Software, La Jolla CA,, $799)

I have talked about RoboHELP many times in these columns (see Micro Review, May/June 1998). Blue Sky has long been the premier producer of tools for creating online help, and they are working aggressively to stay that way. Building on the basic RoboHELP package, which originally supported only WinHelp development, Blue Sky has moved to support development of all online help formats.

Blue Sky uses a two-pronged approach to this problem. They offer a single source capability based on the original RoboHELP approach. They also provide a separate authoring environment, with essentially the same user interface, for producing HTML Help. From this environment, you can import a WinHelp-oriented project, then fine tune it for HTML Help.

Version 7 also introduces a number of productivity improvements to earlier versions. These make it easier to produce indexes, browse sequences, and modular help systems, and they simplify macro programming.

If you need to produce online help in any format for any platform, this is the product to use, even if you hate Windows.