05 June 2014
- old tools: we edit and debug with VS 2005 and manage builds with VS 2008 and TFS 2008. We should be building with VS 2010, ideally with VS 2013, but change is bad, apparently.
- improper use of tools: warnings are not set to 4, static analysis is not enabled
- no unit tests: seriously
- no continuous integration: seriously
- not everything is under version control: "large" (300 MB) Notes databases, golden data sets
- versioning: we hand-code version numbers instead of letting the build set them
- Rally: oh. my. God. I hate Rally. I've never seen a defect tracking system which is quite as opaque, and I have some experience with ClearCase and ClearQuest.
- external dependencies: I should not have to set include and library options to build
No place is perfect, but some of this stuff is just... sad.
Oh, and I asked the TFS admin if any of the projects are set up to use a symbol server and he replied "NO"
I take it from the caps that these newfangled tools aren't welcome.
06 November 2013
28 March 2009
22 March 2009
11 January 2009
My new Studio 17 notebook was sent back to Dell because IT ordered it with a Blu-ray drive (raising the price $150) and integrated video (saving $150), yielding a lackluster 3.1 on the Windows Experience Index:
There are some things about this machine I do not like, primarily the touchpad and keyboard:
- the keyboard includes a numeric keypad, something I never use
and keys and the and keys are all side by side instead of stacked as they should be
- the touchpad is from Alps and it doesn't work as smoothly as a Synaptics touchpad.
- the Menu key is missing from the keyboard, and it's something I use occasionally
- the Windows key sticks when you do
E to bring up Explorer, for example: the moment you type an L, you lock the machine. This doesn't happen with an external keyboard, and I'm holding out hope Dell will fix it in an update: I can live with it for now (and complain on the Dell support boards).
However, the display is big and beautiful, the system is fast (even with a 5400 RPM drive, which I'll shortly replace with a 7200 RPM drive), and there's room for a second internal hard drive (that's where the original 5400 RPM drive will go, probably to hold extra or backup VMs, other backups, and maybe a test partition for Windows 7 builds).Since I got this thing to run Windows 7, do WPF development, and drive an external 1920x1200 monitor (and I'll be stuck with it for some time), I had IT exchange it for one with a regular DVD burner and dedicated graphics ($150). If they had bought me a refurbished MacBook Pro as I originally requested, it would have cost about the same and been faster (albeit with a smaller main screen). This all would have been simpler (and faster) if I had been given a budget and allowed to create the order myself.
In other news, my former employer in Tampa is doing gangbusters: two acquisitions in 30 days in a bad recession. I regret burning that bridge: whatever problems there were in product management pale in comparison to the insanity at my current job, but my scorpion nature wasn't quite kept in check when I was there. That, and I should never have taken the QA manager position. C'est la vie...
But hey, at least I have a job, for now. In 9 days, the country is officially under new management, and I am hopeful President Obama will make the right decisions and form the right alliances and help set this nation on a course to realizing our potential. If nothing else, he can't possibly do worse than the idiots we've had running things for the last 8 years (last 28 years, actually).
05 January 2009
WTL Makes UI Programming a Joy articles (Zip files with a Word doc and zipped source) by Chris Sells, Dharma Shukla, and Nenad Stefanovic
A page of WTL links in the Philippines which includes Eamon Tuathail's humbling WTL Developer's Guide in PDF: highly recommended.
Finally, a WTL tip: if you're like me, you build with Warning Level set to Level 4 (/W4) and with Treat Warnings As Errors set to Yes (/WX). To get rid of those C4996 warnings, define _SECURE_ATL.
04 January 2009
I'm using Visual Studio 2008 Professional on Vista SP1, so if you're using something else, the details may be slightly different. The essentials will be the same, though.
The first step is to make sure you have WTL on your machine with the App Wizard registered.
The current version of WTL is 8.0, and it can be found on SourceForge, oddly enough. Just download the Zip version and extract the contents into a folder on your system (I used C:\WTL80).
WTL comes with a number of scripts to add WTL support to the App Wizard in Visual Studio, but 8.0 was released before Visual Studio 2008 came out, so you'll have to add the WTL support yourself. Fortunately, it's incredibly simple:
- copy AppWiz\setup80.js to AppWiz\setup90.js
- open setup90.js in a text editor and make the following changes:
Compare: (<)C:\WTL80\AppWiz\setup90.js (6399 bytes) with: (>)C:\WTL80\AppWiz\setup80.js (6401 bytes)You only need to change all 8.0 instances to 9.0; all the other changes are ones I made to productize the script, because that's how I roll.
< // Setup program for the WTL App Wizard for VC++ 9.0 (Orcas) --- > // Setup program for the WTL App Wizard for VC++ 8.0 (Whidbey)
< strvc9key = "HKLM\\Software\\Microsoft\\VisualStudio\\9.0\\Setup\\VC\\ProductDir" strvalue =" WSShell.RegRead(strVC9Key);"> var strVC8Key = "HKLM\\Software\\Microsoft\\VisualStudio\\8.0\\Setup\\VC\\ProductDir";
> strValue = WSShell.RegRead(strVC8Key);
< strvc9key_x64 = "HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\9.0\\Setup\\VC\\ProductDir" strvalue =" WSShell.RegRead(strVC9Key_x64);"> var strVC8Key_x64 = "HKLM\\Software\\Wow6432Node\\Microsoft\\VisualStudio\\8.0\\Setup\\VC\\ProductDir";
> strValue = WSShell.RegRead(strVC8Key_x64);
<> WScript.Echo("ERROR: Cannot find where Visual Studio 8.0 is installed.");
< strline = "Param=\" wizard_version =" 9.0\"> strLine += ".8.0";
> else if(strLine.indexOf("WIZARD_VERSION") != -1)
> strLine = "Param=\"WIZARD_VERSION = 8.0\"";
Anyway, shut down Visual Studio 2008 if you have it running, run setup90.js, start Visual Studio 2008, and create a new project.
You will now see a WTL node under Other Languages\Visual C++, right below Win32:
Go ahead and create a scratch project using the wizard and take a look at the code. WTL comes with a dozen samples, including some for Vista, so be sure to take a look at them as well.
When you're ready to continue, head over to the excellent series of WTL articles on CodeProject, starting with Michael Dunn's WTL for MFC Programmers series.
30 October 2008
When I ran the service on a clean XP SP3 system, I got
The system cannot execute the specified program.
Googling this phrase, it implied we had a missing dependency (DLL), so I ran Dependency Walker but found no missing dependencies.
However, Dependency Walker did find an error, giving me another set of phrases to Google:
Error: The Side-by-Side configuration information for "foo.exe" contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001)."Side-by-Side configuration information" is the clue that this is actually a problem with the application manifest. Now we're getting somewhere...
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
As it turns out, the Visual Studio 2005 project was configured to have the linker generate the application manifest, but for some reason (I haven't root caused it yet), the manifest being generated is wrong: it specifies a dependency on the VC8 runtime, but the service is actually statically linked to the runtime to minimize dependencies.
So, the reason we're seeing this vague error when we run the service is because the application manifest is horked. When I rebuilt the service without the application manifest, the problem "went away."
The next step is to take a look at the manifest and see what it ways.
You'd think looking at an application manifest would be simple: it isn't.
Fortunately, the indispensable Kenny Kerr has written a tool which will display the application manifest: Manifest View.