skip to main content

A Visual Studio 6.0 Nostalgia Trip

published icon  |  category icon software

Something I’ve been pondering on lately: do you preserve your very old creations? I’m talking ancient here, but do put this in context, since it’s software development ancient. How old is “old” software? In case of JavaScript, probably yesterday.

I happen to be someone who neatly archives—which used to be the term when one creates simple zipfiles instead of going fancy and employing some kind of source control repository. I still have code of high school programming projects and even before that, the stuff I used to dabble in to discover the world of programming, really.

For me, that was just after the release of Windows 95 and the very first Visual Studio release ever: VS ‘97. That was nothing more than a bundling of separated IDEs: Visual C++, Visual FoxPro, and Visual Basic. Most of my “serious”—the connotation of that term unfortunately shifts as one gets older—programming happened on VB5 and later, when migrating to Win98 and VS 6.0, VB6. Time to dust off some 24 year old zipfiles and take a look whether or not that stuff still compiles—on time period correct hardware, of course!

Take more screenshots! they said. Sure, I said.

Next Gen, here I come.

Thankfully, WinWorldPC archives .ISOs of old and forgotten 32-bit software such as Visual Studio 6.0, so finding the SDK box wasn’t that hard. Surprisingly, installing it wasn’t either: use an old version of Deamon Tools to mount the virtual image, press next a bunch of times, and presto. Perhaps uncheck FoxPro and say no thank you to the MSDN documentation files as well.

A few minutes later, it’s time to try to load an old project:

Woah, that still works?!

Remember that time when splash screens where popular—so popular that every small piece of software ever released included them even though it wasn’t loading anything? I just used a timer and triggered a FrmMain.Show after a few seconds to fool people into thinking it was doing honest DLL loading work.

By the way, did you see what I did there? If you’re a fan of Windows Plus! Themes, I’m sure you have. I decided to revert to the boring default theme to better focus on the hand crafted software in the screenshots, so expect a lot of gray pixels when reading further on.

AutoUnpack was software to automatically unzip/unace/unrar multipart archive files. It existed at a time when early versions of WinAce didn’t yet support that. Remember WinAce? Having to extract each part separately? It probably also had something to do with downloading shady versions of software through newsgroups.

My software was installed through a custom-made “installer” a-la InstallShield (another awesome nostalgia piece) that came with a wizard and even supported template variables like $ProgrName$:

The AutoUpdate install compiler.

I called that the InstallCompiler, and I even developed an ActiveX component called AutoUpdate which could be plug into all existing software and download potential new versions that in turn were packed using the InstallCompiler. Looking back at the whole system now, I can’t believe I built something like that in 2000, when I was 15! Some of these projects make me more proud than the stuff I built the last four years. If that sounds painful, that’s because it probably is.

Of course, taking a peek under the hood is best to be avoided:

If mFTP.OpenConnection("users.skynet.be", "bk01234567", "somepassword") Then
	mFTP.SetFTPDirectory "/updates/" & Mid(strProgToUpdate, 1, 6)
	LblInfo(0).Caption = "Versie-informatiecontrole..."
End If

Hardcoding my dad’s username and password to our ISP? Whoops.

The OpenConnection module call internally rewired to a native DLL call using something like:

Public Declare Function InternetConnection Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal mServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long

Which comes from the wininet.h FTP/HTTP session call on MSDN, a Win32 API call that seemingly still exists! I reckon I must have copy-paste-coded a lot back then because it looks quite complicated for a 15 year old…

'DirPrinter', with a neat 'about' and 'options' screen.

Here’s another tool called DirPrinter. It… prints the contents of a dir in a .txt file. Recursively, mind you! Wow!

Another lovely touch: I made sure to include a carefully designed About dialog in each tool. I even envisioned to own a software design company called aWhile Software including the green logo you must have noticed by now. Yeah, indeed, what was I thinking? “Hi I’d like some software for this or that, when is it going to be finished?” to which I’d then respond “oh, uh, I don’t know, aWhile?”

Back then I even worked together with another guy, who had this site called vbwereld.nl, and together we formed the conglomerate “[deep] software”.

Is that... encoded? Wait, is that a caught stacktrace?

The next piece I tried is apparently called PWLEncoder—the splash screen kind of screamed it, which I all made in early versions of Photoshop. For some of those, I still have the source .psd files.

PWLEncoder unfortunately does not do what it says on the tin: when attempting to encode a .txt message, it scrambles the first character, says it’s done, and when decoding, crashes.

But! By looking at the error dialog and source code, I even developed general error catch-all modules that were supposed be informative and to help the customer get in touch with me.

Gotta watch out for that smart AI!

I think that Tickin’ is probably one of the oldest pieces of Visual Basic source code I still have: it’s a simple tic-tac-toe program with a high score dialog, but surprisingly, no splash screen. There’s the option to play an “advanced” game that undoes your 3rd last move and god knows what the AI does, I didn’t dare to dive into that portion of the code.

Most of my programming was done in VB6 because the UI-based form creation tool was dead-simple to use and you simply double click on a button to attach a click action to it (MessageBox.Show "Cool!"—done!) I did, however, program a bit in C(++), most notably small compiled scripts that my dad used in his work to install modem device drivers and auto-detect the operating system. Does that thing still compile? Well…

Uh-oh.

Another major rookie mistake: #include <C:\fullpath\whoops.h> doesn’t work that well. The header file itself was recovered after a bit of digging, but this tiny tool ultimately wasn’t worth the investigation.


Well, that was fun. It’s very satisfying to see your old stuff still working, especially on “real” hardware from back in the day. Although I didn’t feel the immediate urge to start a new VB6 project, I love this kind of stuff. It somehow feels like my younger self was more imaginative and hands-on than my current self. Perhaps that’s because of the joyful naivety that inevitably wanes. Nostalgia trips such as these help me ground myself and remind me that now and then I should just fool around and create stuff because I can and because I want to.

The silly kind of stuff that’s fun to create, not that someone else says I should create or get paid to do so.

tags icon screenshots

I'm Wouter Groeneveld, a Brain Baker, and I love the smell of freshly baked thoughts (and bread) in the morning. I sometimes convince others to bake their brain (and bread) too.

If you found this article amusing and/or helpful, you can support me via PayPal or Ko-Fi. I also like to hear your feedback via Mastodon or email. Thanks!