« April 2006 | Main | June 2006 »

May 24, 2006

California Election Analysis - June 6, 2006

For every election, I do an analysis of the propositions (not the candidates) on the California ballot in the hopes of getting to the bottom of each: what's it about? what's the hidden agenda? who's behind it? I've been doing it for years, and as the election draws near, I get asked "Where's your analysis?".

It's ready.

It was easier that most because there were only two Statewide propositions, and the agendas are a lot more transparent. This made for much more straightforward analysis.

California Ballot Analysis - June 6 2006

This is meant to elaborate on the issues, not tell you how to vote, and as always, I welcome thoughtful feedback or bug reports.

Posted by steve at 09:06 PM | Comments (0)

May 21, 2006

DrvStartDoc without a JobId

If you don't write Windows print drivers, this won't be interesting; this is here mostly for Google.

I write Windows print drivers, mostly built on the Microsoft OEM PostScript driver using customization DLLs, and I spent days tracking down a problem where DrvStartDoc() was called with no job ID. This is part of the interface, and the driver depended on getting it, but even though it worked for months, upgrading to Word 2003 broke it. No Job ID.

After days of research I figured it out: DrvStartDoc() can be called more than once per document. The first time it's called with the Job ID as expected, but if the application does a ResetDC(), we'll get called again with the new DEVMODE. Those subsequent calls don't get the Job ID.

The solution is to save the Job ID into the OEM PDEV (pdevobj->pdevOEM) the first time we see it, and to be sure to implement the ResetPDEV() call to copy the private OEM PDEV as it gets reset. I had omitted the ResetPDEV() call, thinking it was not necessary, so the saved Job ID was discarded when the application changed the DEVMODE.

Even without the ResetPDEV / ResetDC, this is necessary if the application is printing via a metafile, which is set via the Enable advanced printing features checkbox in the Advanced tab in printer properties. Without proper PDEV management, it will break badly.

Posted by steve at 11:15 PM | Comments (0)

May 06, 2006

"Required Reading"

I put a lot of work into my Tech Tips and hope that others find them useful, but today while wandering through my weblogs I tripped across several references to some of my Tips being required reading for college computer-security classes!

Syracuse University, CIS785 requires Best Practices for UNIX chroot() Operations

Rensselaer Polytechnic Institute, CSCI.4220 requires An Illustrated Guide to IPSec

I'm sure that these are requirements by the individual professors rather than being a formal part of the curriculum, but it's welcome nonetheless.

How cool is that? :-)

Posted by steve at 11:58 AM | Comments (1)