I was trying to install Visual Studio .NET 2005 Beta 1 on my laptop over the holiday, and I immediately received an error that said I needed to remove "Visual Studio .NET Prerequisites - English". At various times, this laptop has had the PDC release of VS.NET 2005 and one of the Community Technology Previews installed on it, but both of them have been completely uninstalled, and I couldn't find any remnants of either in Add/Remove Programs. I crawled the registry and removed a few suspicious keys relating to Visual Studio .NET version "8.0" and the .NET Framework version "1.2", but that still didn't help resolve the issue. Fortunately, I was able to find someone else with a similar problem in a post at Channel 9. DanTheMan came through with the following tip that ended up solving my problem:
Now why didn't I think of that!? Thanks, Dan!
James Newkirk (of NUnit fame) gave a presentation at Tech·Ed Europe about the integration of unit testing into the software development lifecycle. Benjamin Mitchell took some good notes and posted them to his blog for those of us who couldn’t attend (thanks, Benjamin). Here are some of the highlights:
“He favors testing the public interface because it decouples the test from the implementation which will discourage refactoring.”Not only do I agree with him, but I would add that your private behavior is likely exposed through a public interface anyway, and that’s where you should test.
“James said that he believes that testing has to be seen as a primary part of development. We have to incorporate test inside development.”Amen! Using a tool like NUnit is most effective if it is used during development. Although I consider test-first the ideal, this is a radical idea for many people new to test-driven development, so writing any test is better than nothing.
“James mentioned that studies have show that Test First is 16% longer, but the quality was much higher.”
“James believed that if you are interacting with something complex, building the simulation of something that is complex is a worthless activity - you spend more time writing the simulator than the test and it doesn't tell you anything.”Remember, we aren’t writing tests for testing’s sake. We’re writing tests to help us with design, development, refactoring, and confidence.
“James thinks looking at the implementation to drive the tests is looking at it the wrong way.”
My wife, Elizabeth, was cleaning out one of our file cabinets the other day and ran across a bunch of my old computer stuff. I usually dispose of outdated hardware and software after a few years, so I was surprised to see these things lying around. Just last year, I threw out the Indus GT drive I had for my Atari 400 and 800 computers. That was a sweet drive, and I was sad to see it go.
In the photo below, you can see some old Commodore paddle controllers. I've often wondered why we don't see paddle controllers anymore. There were a lot of "twitch" games (like Kaboom on the Atari 2600) that just can't be played without this kind of controller. Perhaps its limited freedom of motion is too restrictive for today's gamers. Who knows?
The blue device is pretty interesting. Believe it or not, early modems weren't able to detect that the phone line was ringing, so if you wanted to have your modem answer the phone, you had to tell it to answer the line manually (no, I'm not kidding). In my many years, I've written and run a number of bulletin board systems on various computers, including the Commodore 64 and Atari 800. A BBS was a pre-Internet way of communicating and sharing files that could typically accommodate only one caller at a time (more sophisticated systems in later years could handle multiple simultaneous incoming phone lines). Since the modem never knew when an incoming caller was attempting to connect, this device would plug into the phone line, detect the ring signal on the wire, and "fire" the joystick button on the computer. The BBS software would sit around and wait for the joystick button to "fire." When this happened, it knew that the phone line was ringing, and it would issue the command to pick up the phone and communicate with the caller's modem. Although this might sound silly and convoluted, it worked great, and my BBS used it successfully for over a year. But I'm surprised I've kept it this long.
The slender red rod is a light pen, a device that has a phototransistor in its tip that responds to light emitted by a monitor or television screen. It works by detecting the beam from the electron gun and sending a signal to the joystick port. When signaled, it is a relatively simple matter for the computer to determine where it is currently painting the image on the screen. I mostly used it with simple paint programs. I remember that it didn't work as well on low-contrast images...probably because there wasn't enough change in light intensity when the electron beam passed.
The last device should be more familiar. It's a trackball controller made by Wico. If memory serves, the Wico Command Control was considered the cream of the crop for trackball controllers, and I was fortunate to have it. I'm impressed at its build quality...it's a bit heavier than I remembered.
The photos below are from an old file containing artifacts from two products made by Anyware Software, a software company that I started when I was in high school. My first commercial product was called Entree, a menuing system for DOS computers (yes, I'm depressed that Entree didn't make the list). It would automatically start when the computer booted (via AUTOEXEC.BAT) and present the user with a list of applications installed on the system. Administrators could optionally create users, assign permissions to run certain programs, and audit their use. It would generate a number of useful reports, and it contained a very handy file management tool...very similar to XTree. I was most impressed with its software detection capabilities. During installation, it would optionally scan all hard drives for programs it recognized and automatically add them to the default menu. I frequently had people call and send me mail (not e-mail, mind you) to help me detect new software applications. By version 2.0, I think it would detect in the neighborhood of 1,200 unique applications. I sold the first version in 1988 for $29.95 USD.
The other photo is Uninstall, an application I wrote to help me remove software from computer systems. As a consultant, I would often install software on customer machines for evaluation. This is before the days of 120-day evaluation copies...these were full, live copies that were sanctioned by the manufacturer. Well, it became a pain to remember which files, registry keys, CONFIG.SYS entries, etc. I needed to remove for each installation, so I wrote a utility to help. I planned to commercialize the tool, but about a month before completion, Bill Machrone wrote a column in PC Magazine lamenting software that would help him remove applications from computers. I was both excited that the need was recognized and afraid that Bill had given the idea to everyone else! So, I worked non-stop the following weekend to finish the program, and I FedEx'd it to him next-day air.
I received a call from him after a few days, and about three months later, his column (titled Shareware to the Rescue) appeared in PC Magazine and talked about Uninstall by Anyware Software. Fortunately, he included my phone number, and this small mention unleashed an onslaught of orders. Who would have guessed that such a small mention would have resulted in so many interested customers? It was a good time.
Has anyone out there used Entree or Uninstall? Or any of my other products from the same era (WinClock, PowerSchedule, Fire!)? Leave a comment or send me e-mail. I'd love to hear from you.
Visual Studio .NET 2005 Beta 1 and related tools have been posted for download at MSDN Subscriber Downloads. The downloads are available for the following subscriber levels: MSDN Universal, MSDN Enterprise, MSDN Professional, MSDN Academic Alliance, Microsoft Certified Partner.
This past weekend, I performed the biannual ritual of backing up my home computer, reformatting it, and reinstalling just those applications that I actually need. Of course, I'll try my best not to install too many add-ons or trialware applications for the next couple of weeks to keep my system clean, but inevitably, I'll give in and find myself repeating this cycle again in another six months. Thankfully, the average user doesn't have to go through this process nearly as often, but it did make me think...
How can I install Windows XP and download all of the critical patches from Windows Update before my machine is hit by something like the Sasser worm? Fortunately for me, my MSDN Subscription (and employment at Microsoft, I suppose) means that I have a copy of Windows XP with Service Pack 1 which contains a large number of fixes. This probably isn't the case for an average home user. Although we make a Windows Security Update CD available at no charge, the site clearly states that it may take 2-4 weeks for delivery, and most people who are forced to reinstall their system probably can't afford to wait that long. So I started looking...
Lo and behold, there is already a healthy amount of information available on the Internet that explains a couple of techniques that can be used to alleviate this problem. The first is an article by the SANS™ Institute titled Windows XP: Surviving the First Day. This paper describes a strategy that disables many of the most vulnerable attack surfaces, enables the Internet Connection Firewall, and explains how to download the appropriate fixes from Windows Update. This is a reasonable process if you don't reload your system very often, but there is a better way...
Slipstreaming: the process of including patches and fixes into a software installation. Using this method, you can create your own updated Windows XP CD that includes all of the patches (similar to what a MSDN Subscription provides, but in some ways better). Here are a few articles that I came across that explain how to do this:
· How to Slipstream Windows XP SP1a
· Making a Windows XP Slipstreamed Install CD
· Slipstreaming Windows XP Service Pack 1a and Create Bootable CD
· Create A Bootable Windows XP Installation CD Slipstreamed with SP1
And for the truly curious, we have an article that explains how all of this works titled How to integrate software updates into your Windows installation source files.