RU version is available. Content is displayed in original English for accuracy.
Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
62% Positive
Analyzed from 3509 words in the discussion.
Trending Topics
#code#file#things#more#program#never#used#software#microsoft#easy

Discussion (60 Comments)Read Original on HackerNews
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
About 20 years ago the Microsoft for Startups program included the full MSDN subscription which was ~5 keys for every product they ever made. 5 keys of Windows XP, 5 keys for windows server, 5 keys for 2000, 5 keys for every variant of Office. Very popular at LAN parties and they never did recall any of those keys. Today it seems they just give you developer tools and office, not the OS.
Back in the early 2000s the company I worked for was a small IT shop and MS software reseller and the MSDN subscription included everything. I remember setting up Windows 2000 advanced server as my home network's router.
The IM portion was simple logic but the real-time voice was a challenge back then because audio compression was in its infancy. The few real-time compression libraries that existed were expensive to license and some even required royalties. Way out of my league.
At the same time, writing a compression algorithm myself was beyond my abilities. There weren't any VHS courses on that topic yet haha.
My solution was to use the recording control that came with VB6. I couldn't set the audio bitrate with that control but, if I had the recorder append the recording to an existing file, it would use the bitrate defined in that existing file.
So I created a teeny tiny wave file with 0 seconds of audio, included it with the program binary, and used a copy of it to seed & set the bitrate of each conversation.
Since they weren't compressed, the file integrity was very forgiving. I was able to pull out a chunk of data from anywhere in the audio file, put it into its own file, and it would play the extracted chunk of audio just fine.
So, that's what I did. I used the VB6 recording control with my low bitrate seed file to record their voice, had my code grab 1 second chunks of audio from that file, "stream" it to the other end of the line, write the data to disk, and use another VB6 control to play it for the recipient.
Surprisingly, the sound wasn't choppy at all. The audio quality was low, since the bitrate was in the low dozens but the conveyer belt of 1 second wave files being played back to back to back was not noticeable at all.
Ended up selling a bunch of copies.
Fun times =D
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.
https://plugins.jetbrains.com/plugin/14877-jump-to-line
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 taught my daughter to program using VB6 -- long after it was already obsolete. It's very easy to get started and build a GUI application with very little ceremony. You can develop your entire UI without a single line of code and run it. Only then did you need to double-click on components and start adding functionality with code.
But actually using it for "real" development was not as enjoyable and I did it for years. If you only wanted to make a static fix-sized application then it's ideal. But if you wanted your application to adjust to the size of the window (and therefore the resolution of a monitor) you had to wire all that up yourself. Painting controls to specific pixel sizes is an obsolete concept.
> What do you find frustrating about modern .NET, C#, and Visual Studio that VB6 didn't make you fight?
C# is superior language to VB6 and WinForms is a superior way to do an equivalent style of UI development. While the VB6 designer was a smoother experience than the Visual Studio designer it was a much more limiting experience.
But if were to put my nostalgia glasses on, I think what is frustrating about .NET GUI development that never seemed frustrating in VB6 was just the ease of getting it do what you want. At the core, WPF/XAML/whatever is a better way to do a GUI layout -- Instead of pixels you place things in stacks, grids, and panels. You have margins and padding. But styling your GUI is so much more complicated and it descends into this overly complex impossible to understand system that makes HTML and CSS look good. This was not a problem in VB6. The GUI interaction with code is also more complicated with magic static property incantations that would never exist in VB6.
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.
It was really stretching the VB6 runtime by the time I left - plenty of direct win32 calls to do various things - foggy on the details now but VB6 was single threaded and some of that was around keeping the interface going while it did more intensive tasks, drawing some complex controls around scheduling etc. I recall it got a bit unstable in development.
Website for the software is still there too not sure if its still used, I left in 2007. https://www.redrabbit.uk.com/oli/oli_overview.htm I drew those little pinball people in inkscape.
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.
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.
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’m sure I would recoil in terror at the code I wrote but I owe a lot to VB6.
So even when the world forgets about it. My heart would always find it dear.
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.
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.
This has nothing to do with the language.
> any low/no code style environment
Did we use the same VB6? Are you referring to the optional GUI creation tool? QT has a similar designer. There are bunches of form designers out there on the MS side.
So many fond memories of that time.
I remember getting VB3 in 300 emails from an AOL chat room.
I can’t believe they ruined it.
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.
...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
Of course these days I would never trust a 1.0, but at the time I was young and naive.
From TFA: > Microsoft has launched seven UI frameworks since VB6. Why? Pick a horse and ride it.
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. it's massive, the tools are confusing, etc. 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