CodeGuru Update eNewsletter - October 12th, 2004


Desktop-as-a-Service Designed for Any Cloud ? Nutanix Frame


CodeGuru Newsletter
October 12, 2004


This newsletter is part of the Developer.com, EarthWeb, and internet.com networks.
Jupitermedia Corporation

___________________________ Sponsors ________________________________
Merant www.merant.com

All newsletters are sent from the domain "internet.com."
If configuring e-mail or Spam filter rules, please use this
domain name (not the entire "from" address, which varies).


--> Editorial -
        ==> Standing Your Ground...
        ==> Recently Published Books

--> New Articles on CodeGuru:
        ==> Assemblies (.NET)
            - Securing Managed Assemblies with Native EXE Interoperability
        ==> Controls
            - Retrieve the Caret Position by Using an Extended TextBox Class
        ==> Controls (C#)
            - Edit Almost Anything -- Part 1
        ==> Dialogs
            - WYSIWYG Runtime Properties Editor (unedited)
        ==> Errors/Debugging (C++)
            - Visual C++: Protecting Against Buffer Overruns with the /GS Switch
        ==> Errors/Debugging (.NET)
            - Playing .NET Doctor: Diagnose Application Hiccups with .NET Classes
        ==> Office Programming (VB 6)
            - Generate Excel Pivot Reports Using VB 6.0
        ==> Serialization (C++)
            - Managed Extensions -- Implementing Custom Serialization
        ==> System
            - System Call Optimization with the SYSENTER Instruction
        ==> XML (C++)
            - A Simple DOM-Based XML Manager Class

--> Discussion Groups

--> Highlighted new articles on Developer.com
        1. Query Analyzer Tips and Tricks 
        2. Programming Language Popularity: The TCP Index for October, 2004
        3. Using JDBC with MySQL, Getting Started
        4. Certifying Your Desktop Support Skills

Download a free trial of Merant Professional 8, the most
significantly enhanced release ever of the world's most popular
version control, issue tracking and build software. See for yourself
how Merant Professional supports

* Dynamic, fast-paced software development projects
* Rapid start-up of a team-centric SCM solution
* Distributed teams via the web


Comments from the Editor

This week, Rob Bogue posted an article to Developer.com that got me thinking. His article called "Stand Your Ground" is at http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,ghrr,g49r,jorm,i5r0 

When I read this article, I ended up with a slightly different slant on the point that Rob presents. My thoughts centered in a different, yet related area -- project scope.

Consider this scenario. You are a developer working on a project that involves windows forms. One of the users asks you to add a simple button that clears the form. This was not a part of the specification and seems easy enough.

Do you do it?

After all, clearing the form is relatively easy and adding a button is a simple drag and drop.

What is one the most important deciding factor on adding or not adding this button? It is the comment that this request is not a part of the specification. It wasn't what you agreed to do. While it seem simple, a quick 'yes' to the user could snowball an entire project out of control.

Sound extreme?

If you had said yes as a developer and added this button, then consider the scenario a little farther. The button and a couple dozen lines of code are added to clear out the fields on the form. Fifteen minutes of a developer'stime is spent making this change, so the impact is minimal.

The project manager shouldn't even notice.

If you use methodologies and do formal testing - which is likely if you are doing a project for another person - then test cases and test scenarios now need to be added for the new button and its functionality. Writing the test cases will take another fifteen to thirty minutes, plus will add just a few negligible minutes to the actual testing if everything is coded correctly.

But wait....

A couple of the fields should not be cleared. In testing, the user indicates that it isn't the entire field that should be cleared. A few fields such as user name and the sequence number should be left in place. Now you have to update the button to avoid clearing two fields.

You also have to update the test cases and any documentation.

Your hour just doubled.

When the supervisor for the user looks at the form and notices the button and its functionality, they comment that in fact, when clearing the form, the approval field's value should be left if the person using the system is a manager. Now all of the sudden you have to code in checks for the role of the person using the system and use that information to validate whether a field gets cleared. You just added additional database access as well as integration into a different part of the system. Your two hours now becomes two days for the coding and unit testing.

Because the button is already on the form you are now in a predicament.

If you a developer billing at $50, then you just added $800 worth of development for a simple button. Not only that, if you are on a deadline, you just lost two days off of the project on items you had not agreed to do. In many projects, there isn't two extra days for a developer. You have a project manager that is not going to be happy with you. If you try to drop the button at this point, you have a users that are not going to be happy with you because you had given all indication that it could be done and because they were asking for was that one field remain uncleared in certain circumstances. You've just entered a lose-lose situation.

This might seem like an extreme example, but experience says it is not. Additionally, experience says that if you agree to add one button, then chances are other requests will be made to add other "minor" items. The moral of the story is don't do anything for your users.

Actually, that is not the moral, but I wanted to see if you were still reading! The moral is that even simple requests can turn out to be loaded with things you don't expect. It is best to stand your ground with what was originally agreed upon. If something is important enough to be added to the system, then it should be important enough to allow for the project to be reevaluated and it should be important enough to allow for timelines and costs to be adjusted. If it isn't important enough for this, the follow Rob Bogue's advice and Stand Your Ground.

Until next week!

Brad Jones

... Recently Published Books

For those of you keeping up by reading books. The following are just a few of the new books that have been recently released. If you've read any of these, feel free to write a review to be posted on CodeGuru. See the submission guidelines at:


--> C++ Without Fear
      By Biran Overland for Prentice-Hall
      500 pages wiht CD $24.99
      This is a beginning level book. Leaves out topics such as templates because they are too advanced.

--> XSLT 2.0 Programmer's Reference, 3rd Edition
      By Michael Kay for WROX
      920 pages for $44.99

New & Updated Articles on CodeGuru

Following are short descriptions of new articles on CodeGuru. If you are interested in submitting your own article for inclusion on the site, then you will find guidelines located at http://nl.internet.com/ct.html?rtr=on&s=1,165x,1,fka1,909i,jorm,i5r0

This week's posted CodeGuru articles:

==> Assemblies (.NET)

- Securing Managed Assemblies with Native EXE Interoperability
    By Palem GopalaKrishna
Learn about a simple yet elegant way of securing managed assemblies from easy disassembly by using the powerful interoperability features of .NET.

==> Controls
- Retrieve the Caret Position by Using an Extended TextBox Class
    By Csaba Hatvany
Extend the TextBox class with properties for retrieving the (line, column) coordinate of the caret current position.

==> Controls (C#)

- Edit Almost Anything -- Part 1
    By dbrennan
Learn about controls to edit a wide range of data types and/or complex DataSets.

==> Dialogs

- WYSIWYG Runtime Properties Editor (unedited)
    By jainnys
When working with controls such as grids and so forth, it is much easier to design the GUI if we can see the data-filled grid, and then adjust the various look and feel properties.

==> Errors/Debugging (C++)

- Visual C++: Protecting Against Buffer Overruns with the /GS Switch
    By Nick Wienholt
Visual C++.NET supports the automatic detection of stack-based buffer overruns through the use of the /GS compiler switch. Learn why stack-based buffer overruns are so serious, and how /GS and other Visual C++ settings can combat them.

==> Errors/Debugging (.NET)

- Playing .NET Doctor: Diagnose Application Hiccups with .NET Classes
    By Mark Strawmyer
Discover how to add functionality for debugging and tracking an application's execution path.

==> Office Programming (VB 6)

- Generate Excel Pivot Reports Using VB 6.0
    By Ramdeep Bhattacharya
Learn how a common procedure can be written in VB to generate Excel pivot reports using COM.

==> Serialization (C++)

- Managed Extensions -- Implementing Custom Serialization
    By Tom Archer -
Tom Archer introduces a step-by-step technique for versioning your serialized files so that your application can handle current and older file formats, as well as properly deal with situations where the application is older than the file format being read.

==> System

- System Call Optimization with the SYSENTER Instruction
    By John Gulbrandsen
Windows NT calls system services by using an "int 2e" software interrupt. The "int 2e" instruction uses both an interrupt gate and a code segment descriptor to find the interrupt service routine (KiSystemService) which services the "int 2e" software interrupt. Since the CPU will have to load one interrupt gate and one segment descriptor from memory in order to know what interrupt service routine to call, significant overhead is involved in making an "int 2e" system call. The SYSENTER instruction drastically reduces this overhead.

==> XML (C++)

- A Simple DOM-Based XML Manager Class
    By Ejaz Anwer
CXMLMgr is a very simple MSXML 4.0 DOM wrapper class that can be used to manipulate XML files. It can be used in MFC as well as Win32.

Discussion Groups

Check out the CodeGuru discussion forums at:


Forums include Visual C++, General C++, Visual Basic, Java, General Technology, C#, ASP.NET, XML, Help Wanted, and much, much, more!

New Articles on Developer.com

Below are some of the new articles that have been posted to Developer.com (http://www.developer.com).

1. Query Analyzer Tips and Tricks
    By Mike Gunderloy -
   You've probably used SQL Query Analyzer as a tool to execute ad hoc queries against Microsoft SQL Server. But there's much more than that in the Query Analyzer package.


2. Programming Language Popularity: The TCP Index for October, 2004
    By Bradley L. Jones -
   Find out how languages rate in the TIOBE Programming Community (TPC) Index.


3. Using JDBC with MySQL, Getting Started
    By Richard G. Baldwin - 
   Baldwin shows you how to download, install, and prepare a MySQL database as a localhost server on a Windows platform for use with JDBC. He then shows you how to write JDBC programs to administer the database server and to manipulate data stored on the MySQL


4. Certifying Your Desktop Support Skills
    By Steve Rowe -
   As long as corporations have PCs and Macintoshes as workstations, there will be a need for someone to support these machines and their users.


Advertising: If you are interested in advertising in our newsletters, call
Claudia at 1-203-662-2863
For information about advertising opportunities, visit http://www.jupiterweb.com
For details on becoming a Commerce Partner, contact David Arganbright
on 1-203-662-2858 or go to www.jupitermedia.com/corporate/licensingform.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To learn about other free newsletters offered by internet.com or
to change your subscription visit http://e-newsletters.internet.com

internet.com's network of more than 160 Web sites is organized into 12 channels:

Developer http://internet.com/webdev/
Download http://internet.com/downloads/
International http://internet.com/international/
Internet Lists http://internet.com/lists/
Internet News http://internet.com/news/
Internet Resources http://internet.com/resources/
IT http://internet.com/it/
Small Business http://internet.com/sb/
Linux/Open Source http://internet.com/linux/
Windows Technology http://internet.com/win/
Wireless Internet http://internet.com/wireless/
xSP Resources http://internet.com/xsp/

To find an answer - http://search.internet.com
Looking for a job? Filling an opening? - http://jobs.internet.com
This newsletter is published by Jupitermedia Corporation
Copyright (c) 2004 Jupitermedia Corporation. All rights reserved.
For information on reprinting or linking to Jupitermedia content:

About the Author

Bradley L. Jones



  • There are no comments yet. Be the first to comment!

  • You must have javascript enabled in order to post comments.

Leave a Comment
  • Your email address will not be published. All fields are required.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date