Developer Central http://www.adtmag.com/ October 1, 2003 - Vol. 3 #1 ================================================================= THIS ISSUE SPONSORED BY: - Are You Still Hand-Coding Your Database Layer? http://info.101com.com/default.asp?id=2951 - FREE eBook on Authoring .NET Installations http://info.101com.com/default.asp?id=2979 - IT Certification on the Cheap http://info.101com.com/default.asp?id=2690 ================================================================= In this issue : 1) Editorial Chatter 2) Weblinks 3) Improving Software Development: P2P Revisited 4) Briefing: Teamplate 4.0 5) Briefing: RoboHelp for FrameMaker 6) Briefing: Merant Professional 8 7) Review: Entegra 2.0 8) Review: DevPartner Studio 9) Review: InstallShield DevStudio 9 10) Review: DesaWare Licensing System 11) New and Notable 12) Web Resources for Developers 13) Reader Mail ********************************************************************* Sponsor: Are You Still Hand-Coding Your Database Layer? FREE SOFTWARE EVALUATION: Quickly generate .NET applications with advanced data grids and page controls, plus all the SQL. Auto-generate a suite of database access pages. Customize and regenerate. No orphaned code. Eliminate hand-coding of ASPX and SQL. Download your FREE EVAL of Iron Speed Designer. Now on sale starting at just $495. http://info.101com.com/default.asp?id=2951 --------------------------------------------------------------------- Editorial Chatter This issue marks the start of Developer Central's third year of publication. (It took the odd number of 35 issues to get through the first two years because we changed publication frequency a while back). I've had a lot of fun writing these things over the past two years, and I think this is one of the strongest issues yet. I got lucky enough to have a whole bunch of significant software releases to announce in this issue, as well as the usual medley of other content. But, you know, I'm never completely satisfied. While Developer Central is fun for *me*, the important thing is whether it meets *your* needs. So, does it? As always, you can reach me at MikeG1@larkfarm.com, and I try to answer every e-mail that I receive. (Well, every non-spam e-mail, anyhow). As you undoubtedly know, I've been pretty well focused on development with Microsoft tools and the .NET Framework. That's because this started out as a newsletter directed at MCAD and MCSD candidates. But it doesn't necessarily need to remain there. Should I work out some way to broaden coverage to include other development environments? Or do you prefer the tight focus? Let me know what you think about that, or anything else. One thing my e-mail seems to indicate is that you folks appreciate it when I spout off a bit. Engaging in punditry is one of the joys of owning some editorial space. One bit I didn't want to let get away this month is the "Java = SUV" equation proposed recently by Philip Greenspun (reasonably famous MIT prof and dot-com survivor). Here's the key part of his weblog posting, from http://blogs.law.harvard.edu/philg/2003/09/20#a1762: "I had an epiphany: Java is the SUV of programming tools. "A project done in Java will cost 5 times as much, take twice as long, and be harder to maintain than a project done in a scripting language such as PHP or Perl. People who are serious about getting the job done on time and under budget will use tools such as Visual Basic (controlled all the machines that decoded the human genome). But the programmers and managers using Java will feel good about themselves because they are using a tool that, in theory, has a lot of power for handling problems of tremendous complexity. Just like the suburbanite who drives his SUV to the 7-11 on a paved road but feels good because in theory he could climb a 45-degree dirt slope. If a programmer is attacking a truly difficult problem he or she will generally have to use a language with systems programming and dynamic type extension capability, such as Lisp. This corresponds to the situation in which my friend, the proud owner of an original-style Hummer, got stuck in the sand on his first off-road excursion; an SUV can't handle a true off-road adventure for which a tracked vehicle is required." Comments elsewhere on his blog make it clear that Greenspun considers SUVs to be just generally a bad thing, not a tool for a particular job. Well, "Java is the SUV of programming tools" is certainly pithy and catchy, and you might expect a rah-rad .NET supporter like me to leap at the chance to quote an Important Authority on this matter. Well, not a chance. Pithy it may be, but it's a silly thing to say. Condemning a particular language as an ungainly, impossible-to-use monster is just the flipside of the errant nonsense perpetuated by people who say "my language is the BEST language." No it isn't; there is no one language that is best suited for embedded development, real-time programming, Web applications, quick departmental GUI apps, distributed enterprise software, medical software, and every other type of software that you might care to write. Java is hardly the first language to be condemned as worthless. Plenty of similar scorn has been poured on COBOL over the years -- despite which, COBOL programming is alive and well, and the vast inventory of COBOL code in corporate America shows no signs of suddenly expiring. Real programmers, thoughtful programmers, pick the right tool for the job, instead of drawing silly lines in the sand. Certainly you need to consider a lot of factors when choosing a programming langauge: the type of project, the other systems you need to interface with, and your own skill levels (and those of your coworkers). In a lot of circumstances, Java (whether JSP or J2EE or some other flavor) is in fact a better tool than .NET for a particular job. Of course, in other circumstances, .NET is better. I can only imagine how cranky I would have been if I drove an SUV myself, instead of a honkin' 4WD pickup truck (which, yes, has been up some very steep slopes around here). On another note, if you're an MSDN subscriber and anxious to get started with Office 2003, go take a look at the subscriber download page (http://msdn.microsoft.com/subscriptions/downloads/default.asp). Most of the Office 2003 SKUs are there now: FrontPage, OneNote, Office Enterprise Edition, Project, Visio, SharePoint Portal Server, and the 13 tier 1 languages, among other things. I'll have some more thoughts on Office 2003 in the next issue in a couple of weeks. Till then, I hope to hear from you! ********************************************************************* Sponsor: FREE eBook on Authoring .NET Installations InstallShield presents "The Developer Shortcut Guide to Building Installations for .NET and .NET Compact Framework Applications". Written by .NET expert Olivier D'hose, this compact resource gives you a crash course on developing .NET installations. Download your copy today! http://info.101com.com/default.asp?id=2979 --------------------------------------------------------------------- Beware, as always, of long URLs below. They may well wrap to the next line. You might want to take a look at Chris Sells' UrlRun (http://www.sellsbrothers.com/tools) which can help with this problem. --------------------------------------------------------------------- Weblinks: Fresh Developer Content on 101's Web sites - SCM is not just about software http://www.adtmag.com/article.asp?id=8255 - Web services pressuring middleware makers http://www.adtmag.com/article.asp?id=8279 - Self-Healing Systems http://www.adtmag.com/article.asp?id=8132 - 4-1-1 on SUS http://mcpmag.com/columns/article.asp?EditorialsID=608 - Scripting for MCSEs: Using WMI Remotely http://mcpmag.com/columns/article.asp?EditorialsID=607 - Microsoft Ships MapPoint 2004 http://www.entmag.com/news/article.asp?EditorialsID=5955 - Microsoft Advances Real-Time Collaboration Technologies http://www.entmag.com/news/article.asp?EditorialsID=5952 - Special Report: Patch Management http://www.entmag.com/reports/article.asp?EditorialsID=49 --------------------------------------------------------------------- Improving Software Development: P2P Revisited I sent the club a wire stating, Please accept my resignation. I don't want to belong to any club that will accept me as a member. - Groucho Marx Remember Peer-to-Peer technology, more familiarly known as P2P? Over the last few years, P2P has followed a parabola that fits right in with the dot-com boom and bust. First came Napster, which splashed P2P all over the public consciousness and spawned a host of imitators (some of which have outlasted their once-proud but sued-out-of-existence parent). Then came a time when every struggling Internet company was going to add P2P features to their products ("I know! We'll be the best peer-to-peer banner-ad-driven dog-food sales company on the Net!"). Now that the dust has cleared, most of those projects have vanished, but there's still a hard core of P2P efforts left - and some of them can be very significant for developers. No, I'm not talking about file sharing that cloaks copyright violation in a veneer of freedom. Rather, I'm thinking about serious attempts to promote collaboration through software. There are three in particular you might want to look at, from Borland, Microsoft, and Groove. When P2P Just Works My first example of useful P2P technology is in a place you might not think to look: Borland's CodeWright text editor. CodeWright is a high-end programmer's editor with a $299 price tag; you can learn more about it at http://www.premia.com/ . While CodeWright has hundreds of features, I only want to mention one of them here: it's called CodeMeeting. What CodeMeeting does is embed a P2P communications layer directly in your text editor. When you enable CodeMeeting, you gain the ability to connect your editing session with that of another user (provided that you can make a TCP/IP connection with their computer). This gives you two things. First, there's a chat window that opens up so you can communicate by typing. Second, you can share documents. Shared documents can be edited by either user (though only by one user at a time), and changes show up on both computers. I see CodeMeeting fitting precisely at the intersection of two trends: telecommuting and pair programming. Need to pair with someone who's not in the office right now? Fire up your copies of CodeWright, load the current source file, and away you go! The simple "pass-the-baton" style of controlling who can edit in the file at any given time fits perfectly with the pair programming paradigm as well. Sure, you won't have quite the bandwidth typing comments that you would if you were sitting right there and listening to tone of voice (though voice over IP or videoconferencing might offer a nice complement to code-sharing), but you'll be way ahead of just sending anguished e-mail to the distributed members of your team. P2P From Redmond Exhibit B in this particular case is the Windows XP Peer-to-Peer SDK, part of the Windows Peer-to-Peer Networking initiative (you can find out more at http://www.microsoft.com/windowsxp/p2p/). Released in beta form early this year and made final this summer, the Peer-to-Peer SDK offers a set of APIs built on top of the low-level WinSock API. These APIs provide security, peer-to-peer name resolution, replication, and other very low-level services useful in writing P2P applications. Don't expect to find any finished applications in this SDK; that's not its purpose. Rather, expect future versions of Windows, as well as applications software from Microsoft and other vendors, to build on top of these APIs. Interestingly, the P2P APIs defined by Microsoft depend on IPv6, the next generation of TCP/IP, for their network layer. This represents a bit of a gamble on Microsoft's part, but may pay off if IPv6 takes hold and they already have software out to take advantage of it. If you're thinking about P2P applications and want to write on the lowest-level APIs available for performance reasons, this is where you ought to be looking in the Windows world. I would not be at all surprised to find a future version of Windows or Office requiring the installation of these services to enable collaborative scenarios that we can barely envision now. P2P In the Groove Microsoft isn't the only player in the P2P API space for Windows - nor, in my opinion, are they the leading contender. I'd give that crown to Groove Networks. Groove Networks (http://www.groove.net/) are the vendors of the Groove Workspace, a collaborative environment with the slogan "software that effortlessly keeps people, information, and PCs in sync." Groove has peer to peer underpinnings, but it's much more than a simple file-sharing program. To users, Groove is simple: it's a place to collaborate. That means you can open up Groove on your on machine, create a workspace, and invite other people to join in. Everyone in the workspace can share files, and calendars, and discussions, and other tools. Every user sees Groove as a local application (and, in fact, it replicates data to every computer involved in a workspace). But beneath this local application is an infrastructure that handles such issues as secure communication through firewalls, data compression, and replication with reconciliation. Like CodeWright, Groove doesn't especially brag about being P2P. Rather, it concentrates on implementing useful capabilities atop the basic Groove infrastructure. Groove includes tools to do things like collaboratively edit Microsoft Office documents or create outlines or browse the Web together. More importantly from the developer standpoint, Groove includes APIs to let applications from independent vendors take advantage of the Groove infrastructure. You can buy tools in areas such as project management, proposal development, and UML modeling from Groove's partners. Or, if you like, you can visit Groove's developer section and learn how to take advantage of these APIs yourself. Of special note in recent months is the release of the Groove Web Services set of APIs. While the first generation of Groove applications were hosted within the Groove user interface, Groove Web Services provide a standard SOAP-based way for external applications to take advantage of the security, transport, transaction, and other services supplied by Groove for peer-to-peer applications. So if it's so great, why isn't everyone using Groove? So far, they're suffering from the classic early-adopter problem. Networking is great when you can expect everyone you know to have the appropriate software; it doesn't work well for the first users, unless the people you know are also early adopters. Groove is working to change this by giving away the Preview Edition with enough functionality to be useful, but they have a ways to go before their infrastructure is pervasive. In addition, I've found the current Groove software to be somewhat resource-intensive, perhaps because of their use of non-standard graphics widgets. I've used Groove for some collaborative projects, and it's been wonderful - except for the problems of getting other people to install it. Whither P2P? If you've dismissed P2P as "that file-sharing stuff," I think it might be time to take another look. What unites the products from Borland, Microsoft, and Groove is the commitment to a P2P fabric as an infrastructure for applications where communication between clients without a server makes sense. This isn't about circumventing copyrights; it's about empowering people to work the way that they naturally do. I think we're headed towards having P2P connectivity be as ubiquitous as TCP/IP or even the telephone dial tone. In a world of dynamic teams and agile development, the tools that enable people to structure their workload for rapid information sharing and collaboration will be the tools that win in the market. Are you going to be the one who helps write those tools? Got an idea for a great P2P tool? Or are you ready to just pull yourself off the network and ignore all this stuff? Let me know your experiences either way by e-mail to MikeG1@larkfarm.com. I'll use the most interesting comments in a future issue of Developer Central. --------------------------------------------------------------------- Briefing: Teamplate 4.0 Teamplate 4.0, starting at $15,000 Teamplate, Inc. Calgary, Alberta, Canada (403) 668-6300 http://www.teamplate.com/ The folks over at Teamplate have released the fourth version of their all-encompassing workflow software, and I took a few minutes to chat with them about what's in the product this time around. They have a fairly ambitious goal: they want to provide an accessible, easy-to-use workflow layer that tightly integrates with all of your other software. The list of Microsoft applications that Teamplate integrates with is certainly impressive: Outlook and Exchange (for building and scheduling workflows), Great Plains, BizTalk, SharePoint and Office (for creating and manipulating documents), Visio (import business process diagrams to the Teamplate IDE), Active Directory, and InfoPath -- to cover only part of the list. Teamplate gives you a list of default actions you can hook together. These are things like sending e-mail, creating a document, updating a database, or working with BizTalk integration. There's also a full IDE to let you create more actions, and to put actions together into processes. The basic goal is to provide a development environment where handling multi-user workflow requirements is as easy as VB makes building user interfaces. By moving your workflow out of manual processes and into Teamplate, you make sure work is done more consistently, that the process is documented, and that there is less room for manual error -- all good things. Previously Teamplate was only available through system integrators, and sold to large accounts in conjunction with Microsoft. With this version they're adding direct sales as well. You can see more information and request some white papers or a demonstration at their Web site. I hope to have a copy of the Teamplate 4.0 code to test-drive myself in a future issue. --------------------------------------------------------------------- Briefing: RoboHelp for FrameMaker RoboHelp for FrameMaker, $799 eHelp San Diego, California (858) 847-7900 http://www.eHelp.com eHelp has expanded their line of help-authoring and content-management tools with a version that works with FrameMaker. I'm not a FrameMaker guy myself, but I got a demonstration of the new version and explored its possibilities with some of the eHelp folks. If you've read my past reviews of RoboHelp products, you know that they've had versions that integrate with Microsoft Word or with HTML in the past. The idea of this new version is similar: you can work in the familiar FrameMaker environment, but benefit from the ability of RoboHelp to create multiple outputs with different targets from a single set of inputs. For example, you could work with your FrameMaker source to create a richly-formatted PDF document for printing, and at the same time create an online help system with the same content, plus additional HTMl formatting and multimedia content that only appear in the online version. The integration between RoboHelp for FrameMaker and the base FrameMaker product is excellent. Throughout, things like shortcut keys and dialog boxes are consistent with the FrameMaker design. The RoboHelp project automatically inherits things like the table of contents, index, and paragraph formatting of the FrameMaker document. You can easily choose to format text conditionally for the help system version, or to omit it altogether if a section (for example, a title page) should appear in the print version only. You can also combine multiple FrameMaker books into a single help system, together with existing cross-references. FrameMaker, of course, is a popular choice of manual writers who must create large and complex manuals. What this product does is make it easy for those writers to extend their work to HTML help or eHelp's own FlashHelp format without extensive retraining on another product -- which ought to be a big win. Definitely check it out if you're a FrameMaker user. --------------------------------------------------------------------- Briefing: Merant Professional 8 Merant Professional 8, starting at $1399 per named user Merant, Inc. Hillsboro, Oregon (503) 645-1150 http://www.merant.com/ You may know Merant Professional under its former name of PVCS. With this significant release, they're engaging in a bit of rebranding to bring multiple tools together under the Merant brand name. Whatever the name, it looks like Merant has worked hard to retain their leadership position in the software configuration and process management space. I'll be kicking the tires soon, but in advance of the product's general availability (scheduled for November), I've got news from a presentation to pass along. There are actually a bunch of separate products involved in this release. Here's a quick rundown on what they do and where the significant changes are. First, there's Merant Version Manager, the software configuration management piece. There are significant changes here, including a new focus on a distributed architecture for serious scalability. Along with this comes a new licensing scheme that allows for concurrent users and boosts to security and performance. This requires a new repository format, but you can continue to work with old repositories if you like, or migrate the old ones to the new format without losing any history information. Then there's Merant Build, a completely new build management system that integrates with Professional. It gives you a cross-platform, remote or local build system that integrates with Visual Studio, Ant, JBuilder, or WebSphere Studio. Merant Tracker, the issue and defect management piece, now has support for relationships between different issues. You can relate a feature request to a bug to the tasks needed to implement the feature and fix the bug, for example. There are both built-in relationships like parent-child and the ability to define your own relationships. You can even manage relationships across projects. Tracker has also had substantial improvements to its Web client to bring it close to parity with the local client. Notification rules have also come in for an overhaul, with much more complex logic being possible to focus in on the exact issues you want to track. Finally, there's Merant Mover, designed to automate post-build deployment tasks. You can move files between multiple servers with pre- and post-move scripting and full auditing, plus e-mail notifications. Many build tools can do some of this, but Mover offers a lot more sophistication than the typical build tool. If you're in the market for tools to make your software development process easier, and you've got the budget for serious tools, then you'll want to keep an eye on Merant as these bits become available. --------------------------------------------------------------------- Review: Lumigent Entegra Entegra 2.0, starting at $10,000 Lumigent Technologies, Inc. Acton, Massachusetts (978) 206-3700 http://www.lumigent.com It was just about a year ago that I reviewed the initial release of Lumigent's Entegra, a solution for auditing activity in Microsoft SQL Server 7.0 or 2000 databases. I've spent the past couple of months looking at their new version, which is coming out of beta shortly. It's a definite improvement, smoothing out some of the rough edges of version 1 and adding impressive new capabilities. Unlike some other auditing solutions, Entegra doesn't instrument your database with triggers. Instead, it uses an agent technology to tie directly into the SQL Server log files and other internals, which means it can audit any database without changing the database. The end result is an audit trail that writes its results to its own repository database. The initial release of Entegra included DDL and DML auditing, and reporting through their web-based console. Here's an example of what you can do: choose a row in a table, see its original state, and its current state -- and every state in between, together with the exact changes and when they were made. Schema changes as well as data changes are all captured for later analysis. The key new feature in version 2.0 is an audit trail of SELECT activity. This means you can now tell not only who modified data, but who viewed it. If your organization has strict privacy policies, or is subject to regulations such as HIPAA, Sarbanes-Oxley, or the Patriot Act, this sort of auditing may be an absolute necessity. With Entegra, you can quickly meet such requirements without the expense of custom application programming or database modifications. Entegra 2.0 installed easily for me, and after a tiny bit of configuration, I was up and running. Choosing a database (or databases) to audit is simple, and after that you just let it do its thing. An MMC-based management console lets you manage the data-collection process. You can select what to audit on a finely-grained basis - for example, you can choose a particular table and choose to only audit INSERT and DELETE statements, but not UPDATE or SELECT statements. When you want to view the results, a Web-based viewed shows you what's been going on: data changes, SELECT statements, logins, changes to the audit system, and so on. You can drill into any activity to see, for example, what SELECT statement was issued (though not what data it returned) or what changes were made to the data. The Web server piece is based on Java technologies; the installation was perfectly smooth on my Windows 2003 test server. If you're a DBA or developer faced with auditing access to a SQL Server database, this is the best solution that I've seen. --------------------------------------------------------------------- Review: DevPartner Studio DevPartner Studio 7.1 Professional Edition, $1495 Compuware Detroit, Michigan (313) 227-7300 http://www.compuware.com/ It's been nearly a year since I last looked at DevPartner Studio, and there's a new version out now. This product remains an excellent tool for helping debug and tune your code, whether in VB6, Visual C++, or Visual Studio .NET. I'm doing most of my work in .NET these days, so I loaded up one of my products (around 10,000 lines of code) to give it a spin. I found a wealth of useful information. For starters, there's the Code Review facility. This is a rules-driven engine designed to help you locate dangerous parts of your code before they break down. It's something like Microsoft's free FxCop, only with greatly enhanced capabilities. In addition to finding dangerous code to warn about (and offering suggestions for fixes), it will also help you enforce naming conventions and calculate complexity for your methods. You can also edit and customize the rules used for the analysis, filter the results, suppress rules, and so on. Then there's the error detection piece, which lets you run your application while DevPartner Studio keeps an eye on the internals. Unless you're doing interop, you probably don't have to worry too much about COM API errors and memory leaks here, but there are a batch of other things it can detect. For example, it can help detect deadlocks and unsafe threading code, as well as problems with things like dispose and finalize patterns. The code coverage analysis capabilities help you make sure that you're testing all of the code that you write. Like most of DevPartner's features, this one is pretty unobstrusive. Turn it on, run your application as you normally would, and exit the application. You'll get a code analysis report that shows which methods were called, what percent of lines of code were executed, and so on. Double-click a method and you get a color-coded view of the code showing exactly what was (and wasn't) exercised by your tests. Even better, if you're dealing with a distributed application, you can perform a joint and simultaneous code coverage analysis of both client and server pieces. Runtime memory analysis and runtime performance analysis provide you with two other ways to track what's going on in a running application. The memory analysis will show you which methods used the most memory, where temporary objects are allocated, and so on. You can also force a garbage collection while the application is running -- useful in cases where you're not sure whether the GC process is part of the problem. Performance analysis will get you execution times, call graphs, and much more information. Both of these modes of analysis offer very flexible ways to view their information, which is useful because there's so much information. Even better, the manual has detailed information on how to use memory and performance analysis to locate potential issues in your applications. Finally, distributed analysis lets you extend the performance and error detection to cover applications stretching across multiple components and computers. It correlates events to help you pinpoint problems in distributed applications. Overall, this is a very impressive package. The integration with Visual Studio .NET is superb, and the information returned is useful in many scenarios. For those who've used the previous version, there are some significant advances in 7.1, including: - Side-by-side operation in VS .NET 2002 and 2003 - The memory analysis piece is all-new - Deadlock analysis - More rules for the code review, and more flexibility in using them - Highlighting of performance issues in the call graph - Comparison of performance runs (great to see if your code changes actually helped) - Support for additional data access providers in the distributed analysis With a $1500 price point, not every .NET developer is going to be able to afford this one. But if your organization's budget will extend that far, you can get a 2-week evaluation copy to judge for yourself the impact that it will have on your development. --------------------------------------------------------------------- Review: InstallShield DevStudio 9 InstallShield DevStudio 9, $1199 InstallShield Software Corp. Schaumburg, Illinois (847) 466-4000 http://www.installshield.com For a long while, InstallShield has maintained two parallel project tracks. InstallShield Professional used their own proprietary scripting engine for installing software, while InstallShield Developer used the Microsoft Installer (MSI) engine. Well, no longer. InstallShield DevStudio 9 is a major new release that is the successor to both of those products. You can create scripted or MSI installers in exactly the same interface, and build either one in the standalone InstallShield IDE or inside of a Visual Studio .NET solution. Since the upgrade pricing ($599) applies to either individual product, it's like getting the other half of the product line for free. Of course, either way DevStudio can build just about any installation you might like: regular installers, merge modules and patches, Web projects, Smart Device projects, and MSI transforms, for example. There are also wizards to create new setups from VB6, VB .NET, or C# projects. If you're familiar with either previous InstallShield product, you'll feel at home with the results, including the friendly, organized views and the detailed drilldown into the MSI database. There's more here than just a merger, though. The first and most obvious change is the new Project Assistant, which provides you with a fancy graphical path through the most important settings in a setup project. Better yet, it's fully reentrant, so you can switch back and forth between the hand-holding and the more detailed views that are present in profusion. I'm usually not a big fan of heavily graphical interfaces, but this one really worked well for me. You can now store your projects in XML format. This is great for source code control, and makes the information in InstallShield projects available to any tool that consumes XML. (Unfortunately, the MSI-flavored command line build tool can't handle the XML format, which makes doing a truly integrated build process a bit harder than I might like). The core facilities are mostly what you're used to from previous versions, though there is now easy support for COM+ applications. There are also some nice side effects from the merger, most notably that script-based installs can use merge modules that were developed for the Windows Installer. This instantly makes a lot of background functionality (for example, installing MDAC) much easier for the script-based setup author. The MSI Differencing tool provides a super-easy way to see the differences between two different MSI files (whether created with InstallShield tools or not). In conjunction with InstallShield's ability to directly edit such files, you can accept or reject the changes while you're reviewing them as well. There are also cab file and log file viewers, both specific to InstallShield setups (though you might be surprised at the number of InstallShield logs you'll find on your system). Finally, there are a couple of promotions you should know about. First, there's a $200 rebate on pricing through the end of November. Second, there's a migration guarantee for previous Professional and Developer projects; if they don't migrate cleanly, InstallShield will fix the problem for free. The setup authoring space remains fiercely competitive, of course. With this release, InstallShield has made their own product story much more coherent, added some nice new features, and continued their tradition of excellent authoring tools. --------------------------------------------------------------------- Review: DesaWare Licensing System Desaware Licensing System, $1495 Desaware, Inc. Campbell, California (408) 377-4770 http://www.desaware.com/ Some of the best software comes from the "eat our own dogfood" principle - the software that companies build for their own use. In this case, Desaware wanted to be able to license a new .NET product on a per-machine basis, and they ended up building their own licensing components to enable this. By using strong naming, cryptography, and a server-based authentication scheme, they've managed to build a product that makes it very difficult to steal software. Of course, if you've looked into this area at all, you know that "difficult" doesn't mean "impossible". For example, if a potential attacker is willing to run your software inside of a debugger and patch bytes in memory, there's pretty much nothing you can do to keep them from running the software. But what Desaware's system can do is raise the bar considerably, at the cost of little nuisance to the user and little effort to the developer. The user experience is fairly simple: there's a 26-character alphanumeric key. Enter it and the software authenticates to a server across the Internet (there's also provision for shipping authentication via diskette or other removeable media for disconnected machines). Keys can be full or demo (with timeouts), and can allow only a single installation or multiple installs. Installs are tied to a particular computer, so you can't just use the same key willy-nilly on multiple machines. From the developer standpoint, there are two pieces of software to set up. First is the license server, an ASP.NET application that validates keys over the Internet. An internal management interface lets you create new applications and keys. The other piece you need to set up is the License Manager, which lets you interact with the server as a developer. This will pull out the necessary crytographic information for your application and put it in a RESX file for easy inclusion. Samples in the manual show where to go from there; you can implement anything from extremely restrictive licensing (single install, must activate before you can do anything) to more relaxed schemes that include grace periods and background activation. Desaware provides controls that you can drop into your Windows forms applications to handle license entry and license validation. The system is also extensible in key areas. For example, you can implement your own algorithm for identifying systems (this lets you create per-user licenses, if you like), or extend the licensing server to perform notifications or other actions when a license is activated. After a tiny setup problem (caused by the fact that I was using a beta build; their support team responded quickly and effectively), using the Licensing System was easy. The manual walks you clearly through setup, and then shows you how to generate the RESX file for a new licensed application. The supplied sample code covers everything from flexible "trust the user" scenarios to super-high-security that demands activation. A few clicks generated license keys to try out, and I was off and running. The supplied components and code make it simple to add licensing to your own applications. Of course, not every piece of software is worth investing in a $1500 licensing system. But if you are selling your .NET software for a good chunk of money, and want to protect it from casual piracy, buying this system will do the trick. --------------------------------------------------------------------- New and Notable - ActiveInstall 2004 is out. The new version of this setup builder features performance gains, a new lower-price edition without VBA, transparent component management, editable build scripts, and more. Details at http://www.activeinstall.com/Products/ActiveInstall/Default.aspx . - Alchemy Eye 5.2 is the latest version of the application that I personally use to keep an eye on various network servers and services. http://www.alchemy-lab.com/products/eye/ - CheXpy is a monitoring tool for VSS users. 30-day trial, $13 to register. http://www.tripletee.com/ - CodeCharge Studio Personal Edition is a new lower-end version of this Web application code generation tool. It supports sites up to 100 pages using a single database connection and programing language, and is available starting at $139.95. http://www.codecharge.com - Codify is a code generator that integrates tightly with Visual Studio .NET. New in version 1.3: the ability to generate arbitrary files, not just source code. http://www.workstate.com/codify - CreateInstall is another option for building setup programs. 30-day trial available, $149 to register. http://www.gentee.com/index.htm - dbRadar is a new database administration tool from theKompany. Linux or Windows, Oracle, PostgreSql, MySql, and DB2 supported. $40, downloadable demo available. http://www.thekompany.com/products/dbradar/ - Coming in October is DbVisualizer 4.0, a database management tool that works across over a dozen different server types. Spiffy new features include BLOB support, custom organization for database objects, table creation, and test data generation. Details at http://www.dbvis.com/products/dbvis/dbvis40.html - InstallShield has bumped its online Upgrade Service to version 2.2, now allowing users to download updates in 14 languages. http://www.installshield.com - eSolutions has released IronWorks, a code-generation tool that comes up with 3-tier VB .NET or C# applications from your database schema. Details and screenshots at http://www.esolutionspr.com/IronWorks.html - nGen 2.0 Beta 1 is a test release of another code generator/ORM tool for .NET. http://www.nalliance.com/Products/nGen/ - .NET DNS MX Wizard is a commercial library to let you query a DNS server for MX records, as well as basic A and PTR queries. http://www.seekfordsolutions.com/Products/NETDNSMXWizard/ - Project Analyzer, the VB code review & documentation tool from Aivosto, has been upgraded with new rules and reports and support for VB .NET 2003. http://www.aivosto.com/project/project.html - Samba 3.0 is a pretty significant upgrade to this open source file server. New version includes implementation of Windows NT 4 PDC and BDC functions, Active Directory integration, and interoperability with Windows 2003 domain controllers. That makes it a much more likely migration path for those seeking to leave Windows. http://us1.samba.org/samba/samba/whatsnew/samba-3.0.0-pressrelease.html - sqlDESKTOP is a free Java app that lets you organize your files, Web sites, and apparently everything else with a visual metaphor of file folders, books, and other office stuff. One interesting note: it offers a way to migrate slowly from a Windows desktop to a Linux desktop, by sharing both against the same backend server. http://www.sqldesktop.com/ - WinZip 9.0 beta 2 is out. See http://www.winzip.com/whatsnew90.htm for screenshots and details of the changes. Strong encryption is probably the most significant upgrade here. --------------------------------------------------------------------- Web Resources for Developers - The Application Domain FAQ will give you lots of good information from the CLR team. http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx - AutoIt is a free keyboard-and-windows scripting utility that works quite well. I've been using it to automate some loose ends in a build process (for example, to build help files from an application that doesn't support command-line builds). http://www.hiddensoft.com/AutoIt/ - Bart's PE Builder lets you create a bootable Windows CD with rescue utilities from your Windows XP or 2003 files. http://www.nu2.nu/pebuilder/ - "Best Practices for Software Development Projects". Nothing really new in this list of 10 bullet points from an IBM architect, but it never hurts to see this stuff again. http://www.computerworld.com/developmenttopics/development/story/0,10801,85198,00.html?f=x10 - In "Bionic Office", Joel Spolsky describes his attempt at creating perfect working conditions for programmers. It sounds OK in the microcosm, but it's in New York City. To me, that's roughly the equivalent of having a nice office with a view of the pits of Hell. I hope never again to be within 50 miles of Times Square in my life. Some good ideas here, though, if you end up being in a position to influence office design at your next company. http://www.joelonsoftware.com/articles/BionicOffice.html - You can download a C# FTP client based on the WinInet API from http://www.codeproject.com/useritems/C__FTP_client.asp - Development System for .NET is a page from Microsoft Research. Aimed at academic institutions, this page has detailed instructions for building and administering a server that can host shared copies of VS .NET for up to 20 users. http://research.microsoft.com/collaboration/university/dotNetDevSystem.aspx - Faber Toys is a multipurpose (and free!) spelunking utility that will let you dig into windows and processes and dependencies and imports and autoruns and lots more. http://www.faberbox.com/fabertoys.asp?action=info - FMS has added an interesting feature to its Total .NET SourceBook code repository product. They've always included a subscription-based Web Service to deliver new code snippets to your repository. Now it works both ways: you can upload your own code snippets to share with other users. http://www.fmsinc.com/dotnet/SourceBook/cws.asp - "*Free* Utilities I Use!" is an extensive list from Brenton House. Plenty of goodies here. http://weblogs.asp.net/bhouse/posts/27986.aspx Also, take a look at Sam Gentile's list of "Some Tools I Use all the time" at http://samgentile.com/blog/posts/9979.aspx - In "Fun with Unit Tests - Testing Abstract Classes", Roy Osherove explains the basic idea behind testing with mock objects. http://weblogs.asp.net/rosherove/posts/29038.aspx - GDI+ FAQ - Haven't had a need for this myself, but it looks like a reasonable resource for those digging into .NET graphics. http://www.bobpowell.net/gdiplus_faq.htm - The InfoPath 2003 SDK has a bunch of information and samples for those who want to start poking under the hood of InfoPath. http://www.microsoft.com/downloads/details.aspx?familyid=351f0616-93aa-4fe8-9238-d702f1bfbab4&displaylang=en - Microsoft Solutions Framework Version 3 White Papers is the latest revision of Microsoft's recommended heavyweight software development process. http://www.microsoft.com/downloads/details.aspx?familyid=a71ac896-1d28-45a4-880c-8b0cc8265c63&displaylang=en - Microsoft Systems Architecture 2.0 is Microsoft's latest guidance on how to build serious corporate networks. I probably should make time to read through this the next time I rebuild my own testbed. http://www.microsoft.com/downloads/details.aspx?familyid=f2bf7811-f13f-4e70-8f69-5636f2105396&displaylang=en - RSS Explorer is an IE toolbar that scans pages for RSS feed information and makes it easy for you to subscribe to the feeds that it finds. http://rssexplorer.planet-hood.com/ - Mindreef and XMethods have teamed up to launch "Scope-It". Basically, this lets you use Mindreef SOAPscope functionality online directly from the XMethods site, which is a major directory of Web Services. More details at http://www.mindreef.com or http://www.xmethods.net - nsh is a tool to run .NET source files like script files. http://www.codeproject.com/useritems/nscript.asp - "Outrun the Avalanche" is a mammoth article on Exchange server anti-spam products and sundry related topics that I wrote for MCP Magazine. http://mcpmag.com/features/article.asp?editorialsid=362 - "Services in SOA" is an excellent roundup of thoughts about service-oriented architecture from Clemens Vasters. http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=b379fb50-70b2-48b1-9d56-7cc5377022e5 - SnippetManager Advanced features a simple tabbed interface tool for managing groups of text snippets. http://www.codeproject.com/useritems/snippetmanageradvanced.asp - Spybot Search & Destroy is software for getting rid of crudware from your computer. http://www.safer-networking.org/index.php?lang=en&page=download - SUS Reporting Utility is a tool for sysadmins using Microsoft Software Update Services to distribute patches. It parses the log files to generate reports of client activity. http://www.susserver.com/Software/SUSreporting/ - SUSserver.com offers third-party support for Software Update Services. http://www.susserver.com/ - XInclude.NET 1.0 is an implementation of the XML Inclusions specification for .NET. http://gotdotnet.com/Community/Workspaces/Workspace.aspx?id=cab253e8-cb4b-47c4-a9d9-6c42947b04a8 - XMLUnit is a tool for unit-testing XML files. Integrates with NUnit for use in .NET testing. http://xmlunit.sourceforge.net/ - XP Software Downloads is another long list of useful tools, with an emphasis on unit testing. http://www.xprogramming.com/software.htm --------------------------------------------------------------------- Reader Mail Arnt Witteveen writes: "I wonder about unit testing. The company I'm working in uses it, although not religously. I see many tests written after the code, not before. "The reason for this, I think, is that once you go 'up' and away from the low level document stuff, it gets quite hard to write a test. Say you're writing software to produce a complex document, which is heavy in 'structure' (take a word document, or even html as an example). About the only way to test functions is to compare the output with the expected output. However, the expected output isn't really easy to get before your code produces it. In the case of html for example, there are probably a million ways to write any webpage. And in html, you could actually code the output by hand (say from a file produced before whatever you want to change), but with most things (e.g. a word document) this is not possible. "So most tests become a self fullfilling thing: write the code, write the test code, take it's first output, look at it a little and then put up that output as the expected output. "It still catches most mistakes in large scale changes, but it does produces heaps of untested code since, as you say, after the code is doen, the urge to write a test goes away as you are urged to write or fix something else... "Not sure if there is a solution in such case, but I was wondering if any of the books you talk about have anything to say about that (or your readers perhaps)." There is of course an art to unit testing -- and we're still figuring out what it includes. Certainly writing the tests after the code is not in line with test-driven development practices. From your description, it sounds like tests are being written at the wrong level of granularity, or the functions are too large, or both. Rather than testing "produce an entire document" the TDD approach would be "test this minor function that ouputs a piece of text surrounded by a specified tag". The idea is that you get all of the micro pieces right this way -- which doesn't, of course, address the macro pieces. There are a lot of resources online for those seeking to write better tests. One good starting point is the list of articles on the JUnit Web site - http://www.junit.org/news/article/index.htm. You might also want to check out the series by Marc Clifton at http://www.codeproject.com/csharp/autp1.asp , http://www.codeproject.com/csharp/autp2.asp , and http://www.codeproject.com/csharp/autp3.asp - he has some things to say about testing high-level behavior. Randy Cornish writes: "I find myself uttering a big "Yes!" after reading your opinion in DC#35 about attending PDC. I have also been an indendent, for about 13 years, and have only attended two "events" in all that time. Between the registration fees, the travel costs, and the lost billable time, I cannot justify it. I can't count how many times I've given this "mini-speech" over the past decade. I suspect your comments are focused specifically on PDC, but as an independent, I take a more general approach to this topic (my apologies, as I'm sure you are a speaker at some of these same sort of events). I've even said similar things about classroom training - I could buy every book EVER written about a topic for the tuition and lost income cost of a three-day class. "I suspect conferences like PDC are primarily attended by employees, as a sort of job perk. I remember the "good ole days" of the 70's when corporations (like mine, Digital Equip) would send people to these sort of things without ever batting an eye. Nice hotels, steak dinners, free booze, ………….. (wake up!)" ********************************************************************* Sponsor: IT Certification on the Cheap Spend next to nothing on your next IT certification. How? The cert experts at CertCities.com have created a 40-page guide to IT Certification on the Cheap. It's loaded with tips for free and cheap training, books, testing and practice exams – plus hundreds of links to beta exams, cert vendors, web resources, user groups and more. Buy now and let the savings begin! http://info.101com.com/default.asp?id=2690 ================================================================= News in this newsletter is written and compiled by Mike Gunderloy, mailto:MikeG1@larkfarm.com. I'd love to hear from you. Or for between-issue rants and reviews, visit me at http://www.larkware.com . To find out how you can sponsor this newsletter, contact Abraham Langer at mailto:alanger@101com.com Application Development Trends Magazine 101communications LLC 600 Worcester Road Suite 301 Framingham, MA 01702 Phone (508) 875-6644 Fax (508) 875-6622