Blunder Dome Sighting  
privacy 
 
 
 

Hangout for experimental confirmation and demonstration of software, computing, and networking. The exercises don't always work out. The professor is a bumbler and the laboratory assistant is a skanky dufus.



Click for Blog Feed
Blog Feed

Recent Items
 
Republishing before Silence
 
Command Line Utilities: What Would Purr Do?
 
Retiring InfoNuovo.com
 
Confirmable Experience: What a Wideness Gains
 
Confirmable Experience: Consider the Real World
 
Cybersmith: IE 8.0 Mitigation #1: Site-wide Compat...
 
DMware: OK, What's CMIS Exactly?
 
Document Interoperability: The Web Lesson
 
Cybersmith: The IE 8.0 Disruption
 
Cybersmith: The Confirmability of Confirmable Expe...

This page is powered by Blogger. Isn't yours?
  

Locations of visitors to this site
visits to Orcmid's Lair pages

The nfoCentrale Blog Conclave
 
Millennia Antica: The Kiln Sitter's Diary
 
nfoWorks: Pursuing Harmony
 
Numbering Peano
 
Orcmid's Lair
 
Orcmid's Live Hideout
 
Prof. von Clueless in the Blunder Dome
 
Spanner Wingnut's Muddleware Lab (experimental)

nfoCentrale Associated Sites
 
DMA: The Document Management Alliance
 
DMware: Document Management Interoperability Exchange
 
Millennia Antica Pottery
 
The Miser Project
 
nfoCentrale: the Anchor Site
 
nfoWare: Information Processing Technology
 
nfoWorks: Tools for Document Interoperability
 
NuovoDoc: Design for Document System Interoperability
 
ODMA Interoperability Exchange
 
Orcmid's Lair
 
TROST: Open-System Trustworthiness

2006-01-12

 

To Express or Not To Express: Choosing a C/C++ Compiler

I have a small dilemma.  I thought Visual C++ Toolkit 2003 was a great choice for a development effort that I want to allow the greatest number of interested parties (whoever the four of them are) to partake of.

But time has passed and I am now torn between sticking with the Visual C++ Toolkit compiler that people can obtain for free and the Visual C++ 2005 Express Edition that people can obtain for free at least until November 2006.  I want to go to the Express Edition, but it requires more capacity and has more baggage, as useful as that might be for other projects, and I am concerned about that.

If you think I’m making a mistake going to avoiding the heavier-weight but latest and more-functional Express Edition, let me know.  Quickly.  Comment here or drop a note on the ActiveODMA-discuss list and I'll consider it in how I introduce VC++ Express Edition as an optional IDE and build environment.

{tags:     }

[update 2006-04–25T16:29Z: Now that the Visual Studio 2005 Express Editions are to be permanently available for free download, Microsoft is no longer offering downloads of the Visual C++ Toolkit 2003 edition.  I now have no choice but to work with the Express Edition.  That makes documentation and demonstrations easier, although there is a larger footprint and requirement for greater PC capability with the Express Editions.  So be it.]

[update 2006-03-18T17:18Z: After hand-wringing way too long over this, I have taken the side-by-side option.  I will be using Toolkit 2003 for all reproducible builds and the making of distributions for my educational and other simple projects.  I didn’t receive any feedback on my quandary and I am going for traveling light and simple.  Also, my observations of the struggles people have with the Visual C++ 2005 Express Edition leads me to want simpler approaches that don’t have so many pitfalls for beginners, as mentioned here.  I can’t use C# for ActiveODMA (yet), but I do recommend it for beginners who want a gentle, well-paved introduction into development for Microsoft Windows.  There will be more posts about this, but I wanted to place a marker on this one right away.]

[update 2006-01-13T18:45Z: Added e-mail link and mentioned the prospect of having Toolkit 2003 and 2005 Express Edition side-by-side under 4.4 below]


1. The Problem I wanted to Solve

1.1 Why is this a concern?  I want to use a build process that anyone can duplicate at little or no cost apart from having a reasonable developer-grade computer.  This means that (with a little help getting around a problem with time stamps) anyone could confirm that a built deliverable was indeed constructed from specific source code using the specific tools.

1.2 You can choose your own tools.  Where this confirmation exercise is not of concern, you could use any tools you prefer that are compatible with the level of C/C++ used in the project and able to create programs for the Microsoft Windows platform.  You can use just the minimal set I am standardizing on, or use it just for build confirmations.  In terms of distributed code, I will stick to a light-weight source code and build packaging that requires only freely-available tools.

1.3 We’re talking about relatively-small projects.   Building the programs that are involved in my project won’t require much sophistication, probably not even a make utility, for command-line compiling and testing.  I will definitely not be distributing Visual Studio project files and related baggage.  It will be easy enough to create your own if VS is your preferred development environment.

2. About Visual C++ Toolkit 2003

2.1 I downloaded and adopted the Toolkit compiler in March 2003. I find that it works just fine.  I had to do a little work to operate under least-privilege with it, but that is now a repeatable install that I can make any time.

2.2 At the Standard C/C++ and simple Windows DLL construction level, the command-line Toolkit 2003 works just fine for what I'll be doing in the near future.

2.3 There's no IDE with Toolkit 2003, but that's not needed anyhow for simple command-line builds and recompiles. To work with source code, you'll want a good text editor, some sort of source-code control, and more utilities. There are free resources for that. There's no nmake and other well-known tools in the Toolkit 2003 package. It looks like there is enough more in the Platform SDK April 2005 edition.

2.4 In short, the Toolkit is close enough to lean and mean, but there’s not much future in it beyond the simple projects I’ll be doing for now.

3. About Visual C++ 2005 Express Edition

3.1 Big Download.  I downloaded the full CD-ROM image of the toolkit and made an install disk. Having done that, this is more work, but now I can always re-install it as needed (as with the Toolkit 2003 that I downloaded and backed-up to CD-ROM). This is a lot bigger package than with Toolkit 2003, even without installing SQL Server 2005 Express.

3.2 Command-Line is Fine. The compiler can be used at the command line the same way as for the Toolkit 2003 compiler. However, there are more tools included in the package (nmake and lib come to mind) along with the ones that are part of the Platform SDK April 2005 edition.

3.3 One-Stop Shopping for IDE.  The Express Edition provides a reduced-capability Visual Studio IDE and an extensive MSDN Help for use and for reference.

3.4 Overkill Only for Now.  The Visual C++ 2005 Express Edition is a bit of overkill for what I think of as a minimalist approach, but it will probably be available longer.  It provides a segue into .NET managed-application development, and has the full ECMA C++/CLI extensions for seamless working with .NET Framework 2.0 and managed code.  That’s a big deal for those who want to blend into the .NET world.

3.5 Windows Apps Still Not That Easy.  To develop non-.NET standard Windows Applications (rather than console applications and non-interactive DLLs) it takes a fair amount more work to install and use the Platform SDK with either compiler, though there is an edge for Express Edition once you get the hang of how to get Windows Application projects to compile.

3.6 Oh, one other thing. The include files, even for command-line work, are more complicated and tricky in the Express Edition than with Toolkit 2003.  That’s usually not a concern except I have a serious interest in reducing the dependency surface of software, and it will take more work to figure out what is going on as the big library ball-of-mud expands unchecked.  Unfortunately, the later libraries are also  more standards-compliant and have additional support for creating safer code (avoiding buffer over-run exposures and the like).

3.7 More hard drive please.  Finally, to use VC++ 2005 Express Edition you'll need lots of hard drive capacity and a fairly fast processor. There is also a lot of disk overhead in the VS Project structure and housekeeping files for what are pretty small projects.

4. Now What?

4.1 I I want to choose VC++ 2005 Express Edition. My greatest concern is that it presents a substantial requirement for storage (700MB+) and speed to install and use it its IDE functionality. For just building the code, VC++ Toolkit 2003 (30MB+) is good enough, although the additional Platform SDK (300MB+) is required for either choice.

4.2 There seems to be a more lively development community and on-line resources around the Express Edition, and I expect that will increase.  That’s a big factor in my thinking.

4.3 Unless I learn I’m excluding any players from use of my source-code projects by using the heavier package from the get-go, I’m going to adopt the Express Edition as the reference for reproducible construction of the software.

4.4 The Best of Both?  Another prospect is having Visual C++ Toolkit 2003 and Visual C++ 2005 Express Edition side-by-side.  They install on the same computer without collision or conflict and a single Platform SDK installation can be used with development for both.  There are also ways to use the Express Edition IDE as an editor for projects that use either compiler.  This is a bit ball-of-muddish itself, except the experience of working it out is valuable for learning what other things that can be done using the Express Edition as a harness.  The key, for me, is getting source-control integration.  Meanwhile, the polls are still open.  Should I simply dump the Toolkit 2003 or should I stick with it?  Well, I am going to stick with the Toolkit and delay introduction of VC++ editions until I can set a proper foundation.  Comment are always welcome in helping me choose what urgency to give to that.  My side-by-side decision has been pre-empted by withdrawal of the Toolkit and continuing free availability of the Express Edition.  I will now concentrate all of my efforts on VC++ 2005 Express Edition, this time getting it done well before there is yet-another Visual Studio Release.

 

2006-01-09

 

Agile Builds: Making a Bad Idea Efficient?

ACM News Service: Will the Build Bottleneck Put the Brakes on Agile.  This old clipping (I’m doing a little catching up) reminds me of a problem I am noticing with software tool sets, SDKs and libraries, and understanding the dependencies in software.

The Geoff Koch 2005 August 15 SD Times article (commercially-sponsored .PDF download here) is looking at the problems that may happen if agile development methods runs into a daily build bottleneck.   There is an innate desire for faster builds so that new builds of complex, multi-component systems can happen at least overnight, not over weekends.   This is clearly a good thing for coordinated testing and refinement on a common daily base.  

The article has a great visual that illustrates James Van Riper’s solar system of builds:

  • dozens of developer builds per day taking no more than coffee-break time,
  • continuous integration builds for getting changes into a build and confirming that there’s no breakage by performing a quick smoke test,
  • then nightly builds for rebuilding from the entire code base,
  • and finally milestone builds for QA turnovers. 

In all of this, the faster and more automated the build the better.  Bottlenecks introduce programmer wait times and that burns useless development dollars.

There are some useful tips from Mike Clark, including the use of RSS feeds that provide continuous build output: the developer’s stock ticker.

My one reservation about this rush to have faster and faster builds is the degree to which we are allowing builds to become terribly complex and then relying on faster tools to save us.  My classic example of this is the investment in Visual C++ compiler performance simply so the windows.h preprocessor nightmare (and each Visual Studio’s new preprocessor burdens) are mitigated by Moore’s law and compiler-system cleverness.  I am dismayed to see how this infectious tendency has managed to make a mess out of even the Standard C++ Library header files between the VC++ library of Visual C++ Toolkit 2003 and those of the Visual C++ 2005 Express edition.  I quake at what we are teaching programmers to tolerate and perpetuate. 

My concern is that we are operating atop a quagmire of unmanageable dependencies and misplaced optimizations.  Instead of sweeping it all under the rug, getting atop code dependencies and modularizing the components might be a superior way to have faster compiles and builds while gaining understandable integration dependencies too.  Sometimes, instead of more-bigger-faster, the thing to do is step back and find a smarter, simpler way to organize the work and the technical tools that support it.  I wonder if we are missing out on that score.  With so much attention on getting the greatest code-test-rinse-repeat time out of developers, I fear that we are rushing into a very ugly “you can pay me now or you can pay me later” experience.

 

 
Construction Structure (Hard Hat Area) You are navigating Orcmid's Lair.

template created 2004-06-17-20:01 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 10-04-30 22:33 $
$$Revision: 21 $