The debugger. Still the best debugger I have ever used.
You could grab the program counter/execution pointer and drag it literally anywhere, rewrite the code and keep on stepping.
I would get into a loop, realize I made a mistake, drag the PC back up above it, make a change and step back into the loop without breaking flow to compile or some other such nonsense.
Alien technology compared to most development environments even today.
Wow! That sounds amazing. I know people often compliment the debuggers for Smalltalk (Squeak/Pharo today), Common Lisp (SLIME/Sly) and Clojure (FlowStorm). Could you tell me more about the VB debugger? Are there other amazing debuggers I do not know about?
I was 17 when VB6 came out, working at a local computer store, and getting into programming but couldn't afford $500 to by the pro edition.
One day, I happened to read an article that said they were given a free copy of VB6 to review for the magazine.
My 17yo mind was blown! Hundreds of dollars worth of software given away for free? Just for writing an article?! I could do that!
Having nothing to lose, I called Microsoft's PR department and requested a copy. Told them I published a newsletter about computers and was based in Queens, NY. Their only question? Where should they send the software lol
It was literally that easy. A single phone call with zero verification about me, my newsletter, and my so-called publishing company.
And it was Enterprise edition which retailed for over $1,000. For little 17yo me!
Naturally, I kept calling for more software. Office, Windows 98/NT, Encarta... you name it.
I even started calling other companies and published a single edition of the newsletter, in case anyone asked for a copy but no one ever did. All they wanted to know was where they should send the software.
One of my favorite free items was course on VB which came on 6 VHS cassettes. The lessons I learned from those tapes built the foundation of my programming carrier.
Of course, older me understands the economics of sending people a few bits of plastic & paper in exchange for press coverage but the joy I felt getting that software in the mail still hasn't left my mind.
You open up the GUI editor, drag a button onto the screen from the toolbox, give it a name/id, and double click on it which takes you to the source code file where a “buttonId_click” handler is auto created for you. Super easy to create simple GUIs without much work while still wiring together the bits that need code.
There was certainly some rough edges and I don’t know how well the workflow would have adapted to responsive design but line of business apps in controlled environments it was so powerful. VB6 and Delphi were like nothing else we have today (at least that I’ve seen).
Honestly the biggest problem is the entire environment is very VCS hostile in a hard to crack way.
I've had some success getting a bunch of scripts to export MS Access database structures, but it takes over an hour to run and requires some post processing clean up so it's not really a great <feature> -> <commit> cycle.
Honestly I'd desperately like a similar experience for GTK development - a few things seem to exist, but they've never really got me building something as quickly as VB6 did.
EDIT: I mean thinking about it, the way people are using AI programming tools feels very much like a desire to actually get the VB6 - no data flow model or weird pipeline or whatever rendering BS, just "I want a control here and here's what it should do". I remain pretty sure that AI is a very expensive solution to the problem of we've been building the wrong tools and libraries for years.
Building the UI was superfast. Wiring the logic was somewhat painful but manageable. But you did not really need more than that to build CRUD apps. For everything else, you had C/C++ and the Win32 API.
I am a huge fan of keyboard-only navigation and you could achieve a large part of the extremely rapid data entry methodology of DOS UIs of the 80s and early 90s with considered key-handing. You never even had to look at the screen for the most part; only at the document in front of you.
Microsoft killed it with the move to DOTNET. VB.NET was a different beast, and C# was a superior language. But it was never the same. I moved to web-uis in the late 2000s. Painfully slow way of writing business apps, but the complexity can be managed if you can reuse templates/components.
The quality was generally crap. The code near unmaintainable. It usually wasn't written by experienced programmers. But it got the job done. I actually felt the push away from VB6 was not a customer based decision but one that came about to personal taste of various people working at MS. VB6 was left behind much to the dismay of everyone who built some bespoke business flow using it.
Fwiw though i wouldn't want anyone to try to recreate VB6 or any low/no code style environment at this point. That ships sailed and i'm seeing non-programmers do much more impressive automations with agents at this point.
Making real, complex components, and drag dropping them into other components. Designing a UI with all your components and zero layout code, just positioning them visually. To anyone who grew up with VB6, web development feels like a serious regression.
When you want a thing to move to the right, you just move it to the right. Why we'd need some sophisticated abstraction for such simple task these days ?
I could type ~four lines and an alert box response from a visual form.
For years I have lamented the amount of paperwork necessary in most of modern programming to get things done. I don't know how important that is now that I have a machine fill out the paperwork. It would still be better if there was less fuss.
The amount of paperwork is controllable. It’s just that most programmers have a tendency to prefer more paperwork because they believe it is a better software architecture.
That said I also lament the death of WYSIWYG-style HTML authoring tools. This is I think the same affliction that caused programmers to prefer writing code to build UIs rather than drawing it interactively.
Interactive UI design tools are cool when you're not a programmer, an inexperienced programmer, or lack the imagination necessary to create new abstractions.
UI preview tools are incredibly useful, hot reloading when doing UI work is, again, incredibly useful.
What nobody needs in their life is to meticulously hand place elements and align them only for the auto-resizing logic to fuck things up.
You want good abstractions which let you easily and quickly define UI elements and to define new composable widgets. So that you can declare in your code details of how things should be aligned with respect to each other, and leave final layout to more code which, if you are lucky, you might not even need to write.
For an example, check out jetpack compose. It's not completely flawless, but it truly isn't bad.
Indirectly introduced me to programming as my dad was obsessed with it growing up. He was a hobbyist with zero formal training, working a completely unrelated job, and still made a ton of money selling tailor made admin software to all kinds of small businesses. Really a testament to how good VB6 was.
VB6 was what sparked my interest in programming. My final project in my programming class was a menu based dungeon crawling game with turn based combat. I was obsessed with Diablo on PC at the time and I just wanted to make anything that remotely resembled it. So you had a town where you could buy equipment and magic spells and then you would go into the “dungeon” and you would fight a selection of random monsters until you got to the boss.
I’m sure I would recoil in terror at the code I wrote but I owe a lot to VB6.
In the windows of ecosystem for basic business apps, it was so way to build things. I know Microsoft made it, so it has an unfair advantage vs languages like Delphi, but compared to C++ it was so easy and fast to build basic working apps.
My favorite thing was to watch a guy who was in tech support and frustrated with our overly complicated process build something on his own that solved a major problem we had. This was by himself. It was amazing. Low barrier to entry, and he taught himself enough to fix his issue. The vp called me in to look at it and make sure it was ok, and I was like “a couple things here or there but it was more than good enough to function day to day.” Never would have happened with lower level languages.
I never used it. VB1.0 was buggy and incomplete, which soured me on Visual Basic and Microsoft. Switched to Linux and open source languages and haven't looked back.
Of course these days I would never trust a 1.0, but at the time I was young and naive.
It was amazingly easy to interact with other apps via OLE Automation (aka, COM Automation).
About 25 years ago I wrote a program that would look for requests (in the form of XML files) from the custom software on our Solaris system, then based on the contents of the request it would fire up Word, load up the appropriate letterhead and body template, fill in the required information (e.g., client name/address, caseworker name, etc), print two copies (one for the file, one with an envelope to send out), and store the completed document in the client's folder on the fileserver.
This program saved an incredible amount of time and let the office typing pool concentrate on typing dictated letters instead of filling out templates.
Without the magic of OLE Automation letting me use Word programmatically from my application, creating this would have been basically impossible.
Man, I wrote a lot of things that used OLE. Microsoft was heavy on building things like that. I wrote a program that would load up patient data and build referral letters for physicians and send them via electronic fax. It freed up like three admin staff that were dealing with that before and hating it.
The funny part was some of them must have been so seldom used that I'd run into problems and uncover bugs that were very quickly apparent, and I'd call MS support and they had never had them reported. I sometimes wondered if I was the only person that used them. WebDAV for Exchange was another on of those things.
I remember calling MS support, vaguely related to this project.
For example, if the Edmonton office needed to send a welcome letter to a new client, the flow might look like this:
1. Create a new file based on X:\Templates\EdmontonLetterhead.dot
2. Insert the contents of X:\Templates\A01-ClientOnboarding.doc
3. Fill in fields. Usually stuff like client name, caseworker name, etc.
4. Click the links in the file (e.g., there'd be a link to X:\Templates\EdmontonContactNumbers.doc), printing each document and deleting the link from the final document.
5. Save the file to the client's folder (e.g., S:\Clients\000123-Jane Smith).
6. Print a copy for the paper file, a copy to mail out, and an envelope.
We called Microsoft Support because when changes were made to the template documents it would update the links to relative paths. These don't work with our flow because the document either isn't saved, or is saved on a different network drive.
Microsoft Support wasn't able to help us. They understood exactly what we were doing, exactly what the problem is, but they weren't able to fix it. That's just how Word works, it didn't have a setting to force absolute links.
I ended up writing another VB6 program, using OLE Automation to get Word to do the work, which opened each document, saved it to a local drive (which turned the relative links into absolute links), then copied it back to the shared drive.
the original visual basic (probably VB1.0) demonstrated and organized event-driven programming in my mind. I just "got" it. The first version wasn't that deep, but it had a noticeable impact on me.
In comparison, I remember using one of the not-so-early apple xcode versions, and it sucked. it was a disorganized mess and I don't think it has ever gotten much better.
Note - I might be comparing a "sort-of-pure" first version of something to a watered-down-corporate 5th version.
It might also be like memorable 80's movies, where if I go back and actually watch it decades later, my glowing memories might be ruined by the reality check of slow pacing, overacting and bad hair. lol.
It was my first IDE and provided simplified abstractions that made me (somewhat) understand what software developers actually do. And then curiosity took over and I caught the bug... So it will forever hold a special place.
The thriving ecosystem of dynamic libraries that you could just link and create a Windows Vista-esque UI (AKA Aero) in an IDE built in 1998, thanks to Win32 API.
Nostalgia, not an answer: my proudest moment from high school was coding a very primitive raycasting "engine" in VB6 (that's what we had in our programming class). I had no idea what I was doing and I used some sort of layout object to draw vertical columns.
That it made it so easy to whip up UIs and access Windows APIs, having never done it before as a 10-11 year old playing with VB6...
...which I think promptly used as a younger teen to write a custom keylogger for a friend to try and steal RuneScape accounts. Good news is I didn't know how to send emails from it, so even though it worked, it couldn't hurt anyone in the end!
It taught me what "double buffering" was, because I was (ab)using it to try and build games, but didn't understand why I was getting this horrible white flash when I cleared everything!
I could barely use VB, but as a ~14 year old, I made a dialogue box that announced the computer had been hacked, stuck it in the start-up, and pranked my Mum on April 1st.
ya, i made rage and nightmare, just shared them w/ some friends. the guys that made fate x went to a nearby high school funny enough but never knew them personally.
That it was easy to use, and that I was able to get it for cheap when I was in school, as compared to today. Same with VB5 & VB4. I may have a VB4 CD still lying around, somewhere. Unfortunately, things changed drastically, complexity became the norm. Honestly, I've only found Rebol to be easier to use and learn, but that is dead too.
GAMBAS is a free development environment and a full powerful object-oriented
language and development platform based on a Basic interpreter with optional
just-in-time compilation, as easy as Visual Basic™ was.
Thanks for sharing this. If it has a RAD I actually might try this. I don't care what HN says, sometimes I just need to display some data with like 4 buttons without the nightmare that is modern front end. Ya I can write front end sometimes I really don't want to.
I loved how you can 'paint' controls, and it generates functions for you to fill in based on events. I also liked the Wizard for creating apps.
They did a Java BASIC language Jabaco to work like VB6 and compile to Java files. https://www.jabaco.org/ I think someone should take it over and remove the technical debt.
Vb6 had a RAD/wysiwyg application designer. It was trivial to use, and extend. Basic applications were kilobytes. People didn't feel compelled to spend 100$ a month to vibe code a small application that is either stuck in the browser or consumes 2gb of RAM and has 10,000 supply chain vulnerabilities and an open port.
What don't I like about modern .NET. well I just don't like .NET. F# is the only language I actually enjoy there and it's just not great performance wise. I can write C# fine, but I don't like it.
Give me a rust RAD that runs cross platform. Make sure it has an easy way to draw to canvases or good chart/drawing libraries. I'd pay real money for that. I hate fiddling with front end but I hate not having a decent one more when visuals matter. Fine it could be Go or modern c++, I don't care that much but please no .NET
You could grab the program counter/execution pointer and drag it literally anywhere, rewrite the code and keep on stepping.
I would get into a loop, realize I made a mistake, drag the PC back up above it, make a change and step back into the loop without breaking flow to compile or some other such nonsense.
Alien technology compared to most development environments even today.
One day, I happened to read an article that said they were given a free copy of VB6 to review for the magazine.
My 17yo mind was blown! Hundreds of dollars worth of software given away for free? Just for writing an article?! I could do that!
Having nothing to lose, I called Microsoft's PR department and requested a copy. Told them I published a newsletter about computers and was based in Queens, NY. Their only question? Where should they send the software lol
It was literally that easy. A single phone call with zero verification about me, my newsletter, and my so-called publishing company.
And it was Enterprise edition which retailed for over $1,000. For little 17yo me!
Naturally, I kept calling for more software. Office, Windows 98/NT, Encarta... you name it.
I even started calling other companies and published a single edition of the newsletter, in case anyone asked for a copy but no one ever did. All they wanted to know was where they should send the software.
One of my favorite free items was course on VB which came on 6 VHS cassettes. The lessons I learned from those tapes built the foundation of my programming carrier.
Of course, older me understands the economics of sending people a few bits of plastic & paper in exchange for press coverage but the joy I felt getting that software in the mail still hasn't left my mind.
Good times =D
You open up the GUI editor, drag a button onto the screen from the toolbox, give it a name/id, and double click on it which takes you to the source code file where a “buttonId_click” handler is auto created for you. Super easy to create simple GUIs without much work while still wiring together the bits that need code.
There was certainly some rough edges and I don’t know how well the workflow would have adapted to responsive design but line of business apps in controlled environments it was so powerful. VB6 and Delphi were like nothing else we have today (at least that I’ve seen).
I've had some success getting a bunch of scripts to export MS Access database structures, but it takes over an hour to run and requires some post processing clean up so it's not really a great <feature> -> <commit> cycle.
Honestly I'd desperately like a similar experience for GTK development - a few things seem to exist, but they've never really got me building something as quickly as VB6 did.
EDIT: I mean thinking about it, the way people are using AI programming tools feels very much like a desire to actually get the VB6 - no data flow model or weird pipeline or whatever rendering BS, just "I want a control here and here's what it should do". I remain pretty sure that AI is a very expensive solution to the problem of we've been building the wrong tools and libraries for years.
I am a huge fan of keyboard-only navigation and you could achieve a large part of the extremely rapid data entry methodology of DOS UIs of the 80s and early 90s with considered key-handing. You never even had to look at the screen for the most part; only at the document in front of you.
Microsoft killed it with the move to DOTNET. VB.NET was a different beast, and C# was a superior language. But it was never the same. I moved to web-uis in the late 2000s. Painfully slow way of writing business apps, but the complexity can be managed if you can reuse templates/components.
Fwiw though i wouldn't want anyone to try to recreate VB6 or any low/no code style environment at this point. That ships sailed and i'm seeing non-programmers do much more impressive automations with agents at this point.
For years I have lamented the amount of paperwork necessary in most of modern programming to get things done. I don't know how important that is now that I have a machine fill out the paperwork. It would still be better if there was less fuss.
That said I also lament the death of WYSIWYG-style HTML authoring tools. This is I think the same affliction that caused programmers to prefer writing code to build UIs rather than drawing it interactively.
UI preview tools are incredibly useful, hot reloading when doing UI work is, again, incredibly useful.
What nobody needs in their life is to meticulously hand place elements and align them only for the auto-resizing logic to fuck things up.
You want good abstractions which let you easily and quickly define UI elements and to define new composable widgets. So that you can declare in your code details of how things should be aligned with respect to each other, and leave final layout to more code which, if you are lucky, you might not even need to write.
For an example, check out jetpack compose. It's not completely flawless, but it truly isn't bad.
I’m sure I would recoil in terror at the code I wrote but I owe a lot to VB6.
My favorite thing was to watch a guy who was in tech support and frustrated with our overly complicated process build something on his own that solved a major problem we had. This was by himself. It was amazing. Low barrier to entry, and he taught himself enough to fix his issue. The vp called me in to look at it and make sure it was ok, and I was like “a couple things here or there but it was more than good enough to function day to day.” Never would have happened with lower level languages.
Of course these days I would never trust a 1.0, but at the time I was young and naive.
About 25 years ago I wrote a program that would look for requests (in the form of XML files) from the custom software on our Solaris system, then based on the contents of the request it would fire up Word, load up the appropriate letterhead and body template, fill in the required information (e.g., client name/address, caseworker name, etc), print two copies (one for the file, one with an envelope to send out), and store the completed document in the client's folder on the fileserver.
This program saved an incredible amount of time and let the office typing pool concentrate on typing dictated letters instead of filling out templates.
Without the magic of OLE Automation letting me use Word programmatically from my application, creating this would have been basically impossible.
The funny part was some of them must have been so seldom used that I'd run into problems and uncover bugs that were very quickly apparent, and I'd call MS support and they had never had them reported. I sometimes wondered if I was the only person that used them. WebDAV for Exchange was another on of those things.
For example, if the Edmonton office needed to send a welcome letter to a new client, the flow might look like this:
1. Create a new file based on X:\Templates\EdmontonLetterhead.dot
2. Insert the contents of X:\Templates\A01-ClientOnboarding.doc
3. Fill in fields. Usually stuff like client name, caseworker name, etc.
4. Click the links in the file (e.g., there'd be a link to X:\Templates\EdmontonContactNumbers.doc), printing each document and deleting the link from the final document.
5. Save the file to the client's folder (e.g., S:\Clients\000123-Jane Smith).
6. Print a copy for the paper file, a copy to mail out, and an envelope.
We called Microsoft Support because when changes were made to the template documents it would update the links to relative paths. These don't work with our flow because the document either isn't saved, or is saved on a different network drive.
Microsoft Support wasn't able to help us. They understood exactly what we were doing, exactly what the problem is, but they weren't able to fix it. That's just how Word works, it didn't have a setting to force absolute links.
I ended up writing another VB6 program, using OLE Automation to get Word to do the work, which opened each document, saved it to a local drive (which turned the relative links into absolute links), then copied it back to the shared drive.
In comparison, I remember using one of the not-so-early apple xcode versions, and it sucked. it was a disorganized mess and I don't think it has ever gotten much better.
Note - I might be comparing a "sort-of-pure" first version of something to a watered-down-corporate 5th version.
It might also be like memorable 80's movies, where if I go back and actually watch it decades later, my glowing memories might be ruined by the reality check of slow pacing, overacting and bad hair. lol.
...which I think promptly used as a younger teen to write a custom keylogger for a friend to try and steal RuneScape accounts. Good news is I didn't know how to send emails from it, so even though it worked, it couldn't hurt anyone in the end!
It taught me what "double buffering" was, because I was (ab)using it to try and build games, but didn't understand why I was getting this horrible white flash when I cleared everything!
I learned so much with VB6 haha
https://gambaswiki.org/website/
GAMBAS is a free development environment and a full powerful object-oriented language and development platform based on a Basic interpreter with optional just-in-time compilation, as easy as Visual Basic™ was.
They did a Java BASIC language Jabaco to work like VB6 and compile to Java files. https://www.jabaco.org/ I think someone should take it over and remove the technical debt.
What don't I like about modern .NET. well I just don't like .NET. F# is the only language I actually enjoy there and it's just not great performance wise. I can write C# fine, but I don't like it.
Give me a rust RAD that runs cross platform. Make sure it has an easy way to draw to canvases or good chart/drawing libraries. I'd pay real money for that. I hate fiddling with front end but I hate not having a decent one more when visuals matter. Fine it could be Go or modern c++, I don't care that much but please no .NET